Minggu, 06 Februari 2011

The Monster 5 for Friday--Careers Edition--February 4


People are talking about the weather--and its effect on the current employment situation. In recent weeks, winter storms have hit large portions of the country, stalling many workers and job seekers. Predictably, hiring in construction and transportation is especially bleak right now. This is part of the reason that, although the unemployment rate has dropped to an encouraging 9.0 percent, many experts and analysts are calling today's BLS jobs report 'disappointing.'


Nonetheless, warmer weather and brighter days are ahead, say most employment-market watchers. So if you're snowed in this weekend (or even if you're not), take a moment to review some of our favorite career-advice articles from this week:


5. It's, unfortunately, an increasingly common problem--a resume with noticeable gaps in employment. Career expert Liz Ryan has some tips on dealing with gaps, in '5 Workarounds for a Spotty Work History.'


4. You're likely familiar with this catch-22: You need experience to get a job, but you need the job to gain experience. What to do? Get tips, in 'Gaining Needed Work Experience.'


3. Hate networking? Read this: 'How to Never Have to Network Again.'


2. Whether you're crafting your resume or working on an interoffice memo, writing skills can truly make or break a career. Get tips, in 'Improve Your Writing Skills.'


1. Eight experts offer advice on what actions to take when you're pink-slipped, in 'Laid Off or Fired? You're Not Alone.'


Have ideas for articles you'd like to see? Have a question about your job search? Let us know in the Comments section--and don't forget to nominate Monster.com as your favorite job site in the About.com Readers' Choice Awards.

Lab Coat Please…


Shaan Joining Autodesk Labs

As of February 1st I have moved to the Autodesk Labs group within Autodesk as a Technology Evangelist. It is a full circle for me as I developed the first Autodesk Labs site and posted several projects back in 2006, now I finally get to work in the group. I will be working with the teams supporting and evangelizing the Labs hosted technologies to current and future customers.

This blog will remain as it has for seven years, an active all things Autodesk blog with varied topic posts from A to Z, or AutoCAD to Zombies. I have always covered design, science, technology, and visualization on this blog in addition to covering Labs technologies since its founding, so there are no big changes expected to this blog’s secret sauce. I will still be covering AutoCAD topics as it has been an important part of my experience both as a customer and as an Autodesk employee. AutoCAD is an important part of Autodesk technology and a product that is used in combination with many of the Labs technologies.

Autodesk Labs Technology Previews

Autodesk Labs has excelled at providing emerging technology to people for feedback. Technology Previews are not really a beta for a product, but an early Technology Preview. The goal is that you and your feedback shape the direction, and if it might become a product or a new feature in a product.

Autodesk Labs longtime employee and blogger Scott Sheppard “It’s Alive in the Labhttp://labs.blogs.com/ and I will be covering Labs content from different angles, so now Labs has two voices and blogs instead of one, like stereo but better.

Autodesk Labs Scott & Shaan

While I have your attention give some new technology a look and perhaps take it for a test drive at the Autodesk Labs. There are many exciting projects posted as well as more coming.

Some examples of the most popular:

And much much more.

In addition to the larger Technology Previews, there is the Plugin of the Month from the Autodesk Developer Network where our developer consultants aka programming ninjas and our ADN partners post plugins for Autodesk products.

Cheers,
Shaan
@mrcadman on Twitter

Thinking about the importance of communications “revolutions.”





















The Daily Show With Jon StewartMon – Thurs 11p / 10c
The Rule of the Nile
www.thedailyshow.com








Daily Show Full EpisodesPolitical Humor & Satire Blog</a>The Daily Show on Facebook


There has been a lot of talk about the importance of social media in recent world events. See for instance, here, here, and here. Some of the more astute commentators have referred to earlier technological revolutions and their impact on television: usenet, fax machines, television, cameras, telegraph, and even the printing press. One technology, however, always seem to get left out, maybe because it seems too “obvious,” and that is literacy.


This is too bad because there is a great literature on the subject. A user named “dinalopez” has put together a wonderful bibliography on WorldCat – a list which contains many of my favorite articles on the subject, as well as many I haven’t read. I wanted to draw upon this critical literacy studies literature to make three points about technology and social change.


The first point comes from a paper F. Niyi Akinnaso (my Ph.D. advisor) wrote for the journal Comparative Studies in Society and History. “Schooling, Language, and Knowledge in Literate and Nonliterate Societies” draws on Akinnaso’s knowledge of Yoruba divination practices to challenge the “over-simplified view of education in nonliterate societies.” This is important because he shows that the social organization of schooling associated with literate societies is not dependent on literacy, and that similar practices can be found in some nonliterate societies. He does not deny that these institutional patterns are more typical of literate societies, but it would be a mistake to attribute too much explanatory force to literacy. The Yoruba case shows that literacy is not a necessary factor in the creation of such social institutions.


The second point comes from Brian Street’s important book Literacy in theory and Practice. In this book Street argues that there is not one universal form of literacy, but multiple “literacies.” In Iran in the 1970s (where he did fieldwork) many people learn to “read” the Koran by wrote memorization. They are literate in the sense that they can look at a page of the Koran and recite the appropriate passages, but not in the sense of being able to use their literacy to read other texts besides the Koran.


Finally, the third point I wanted to make about literacy comes from an article by Terence Turner about how the Kayapo in Brazil have appropriated the use of video cameras. I put this in the context of literacy precisely because one of the important aspects of video use by the Kayapo is to record the promises of politicians. Before video cameras they similarly made audio recordings – both useful methods for a society which (at the time) lacked literacy. It is also worth mentioning a second aspect of their use of video technology, which is their appearance, in native-dress, at political protests carrying video cameras. Here their use of video cameras became the story, one with broad international appeal, allowing them to reach a much larger audience.


So what do these three points teach us about “Twitter Revolutions”? First, the technology itself is not as important as the social conditions in which it is used. In many cases social media is more a means of communicating what is happening on the ground with the outside world, as diasporic populations keep in touch with their friends and family at home via Facebook and Twitter, than it is a means of organizing activity on the ground. If these social networks exist, families will communicate with them however they can, whether by usenet, fax machine, telegraph, or letter. The second point is that the mere existence of these technologies does not imply that people will necessarily make use of them in a particular way. Certainly there is a huge difference in how Twitter is used at the annual anthropology conferences and at an event like SXSW. And the third point is that it isn’t necessarily a bad thing for people to be fascinated by how this technology is being used in Egypt. Certainly it has allows us to voyeuristically participate in world events from afar. Whether this helps or not is hard to say, but I’ll leave you with this quote by Aaron Bady:


I am under no illusions that it will do the people of Egypt any particular good for me to retweet links to articles and images and expressions of the righteous human spirit so gloriously on display in Egypt right now — much as I would like it to — but that’s not really why I’ve been doing it. It’s selfish. It is for me, because it’s what I need to do as a person whose spiritual body has gotten very hungry. I want to be a part of something hopeful because I find that too much hopelessness has crept too deeply into the person I have no choice but to be.

Around the Webs of Significance

Around the Web is back and, with a nod to one of the most writerly of anthropological writers, this week’s column is dedicated to putting pen to paper. To the links!


The writing process




Teaching writing




Words of affirmation



  • A little coaching from the Chronicle’s Brainstorm blog lifted my spirits. It’s a quickly little ditty on what you really need to write. All the time I tell myself I need childcare to write or at least peace and quiet, but look I’m writing this while my third child lies next to me on the couch smashing her foot into my face, demanding “Can I ha’ more?”

  • Got writer’s block? You’re closer to creativty than you think! Read: How to have ideas.



Publishing




Writing for a broad audience




In memoriam



Got some tips on why a raven is like a writing desk? Send ‘em to me at mdthomps AT odu.edu.

Scrum Startup Founders Cash Out in One Year

Founders of TableNinja went to Scrum Inc. ScrumMaster Course in Los Angeles (see next course in LA) and one year later cashed out and retired. You can play 75 simultaneous online poker hands with this software.


Table Ninja Review

Table Ninja is a standalone program for Windows XP, Vista, and Windows 7 that allows a user to implement a set of fully customizable hotkeys and tools to make playing on PokerStars a much more efficient process. Features such as automated betting amounts, highlighting tables requiring action, and hotkeys make multi-tabling easier.
We recommend TableNinja for all players who play multiple tables at a time and would like more gameplay options.

Documenting functions and named parameters

Sometime ago someone asked me how I’d pass custom paramaters to event listeners. I don’t remember the exact use case neither who asked me but basically he was asking for something like:

mc.addEventListener(MouseEvent.CLICK, myListener, "myCustomParam", 2);

functoin myListener(event: MouseEvent, custom :String, custom2 : int) : void;


While the exact syntax above would not be possible, closures are in any case the way to go. I explained him how I’d do it and I forgot about the topic until today.


Today while waiting for a long compilation process to complete I’ve came up with an idea on how to improve code readability on cases similar to this. Here’s the cleaneast syntax I’ve came up with (ideas are more than welcome to improve it):



mc.addEventListener( MouseEvent.CLICK, createListenerAdapterBasedOn(myListener, withParameters("myCustomParam", 2)));


Does it look too verbose? I guess it will highly depend on the exact use case where this is used. But under some circumstances I think the readability can be substantially improved.


createListenerAdapterBasedOn is a package level method. I could have used a utility static method like FunctionUtils.createListenerAdapter. But instead I’ve used a package function because I can reduce the length of the Class + method name (or use the same number of characters to add verbosity and clarity). On the other hand it’s unlikely that this utility class would have more methods.


Documenting functions


This is a concept I’ve never read about or used before, but I think I’ll start using in different places. withParameters method is a completely dummy method that simply returns the parameters it gets but giving them a semantic and contextual meaning. The solely purpose of this method is to improve the readability by converting the method invocation in a Fluent API that can be read as natural language. The method is simply documenting the usage of the call. Putting this together with the Builder pattern and named parameters I discussed a while ago it gives us an incredible weapon to create self-documented code that doesn’t need most-of-the-times useless, needless and confusing ASDoc or inline comments.


If necessary when you have a method accepting several parameters of the same type and that can be confusing to read you could used Documenting functions to create kind of named-parameters:



myMethod(name("John"), surname("Green"), age(33), weight(70))


Here are the details of the implementation in case you are interested in seeing the internal details and some of the tests.


createListenerAdapterBasedOn.as



package com.rialvalue.utils

{

public function createListenerAdapterBasedOn(callback:Function, args):Function

{

return function( rest):*

{

if (args.length == 1)

return callback.apply(null, rest.concat(args[0]));

else

return callback.apply(null, rest.concat(args));

}

}

}


withParameters.as



package com.rialvalue.utils

{

public function withParameters( args):Array

{

return args;

}

}


createListenerAdapterBasedOnTest.as



package com.rialvalue.utils

{

import flash.display.MovieClip;

import flash.events.Event;

import flash.events.IEventDispatcher;

import flash.events.MouseEvent;



import flashx.textLayout.debug.assert;



import org.flexunit.assertThat;

import org.hamcrest.object.equalTo;

public class ListenerUtilsTest

{


private static const ORIGINAL_PARAMETER:String = "originalParameter";


private static const FIRST_PARAM:String = "firstParam";


private static const SECOND_PARAM:String = "secondParam";



[Test]

public function createCallbackAdapterWithNoParameters():void

{

var callbackAdapter:Function = createListenerAdapterBasedOn(function(data:String):void

{

assertThat(ORIGINAL_PARAMETER, equalTo(data));

});


callbackAdapter(ORIGINAL_PARAMETER);

}


[Test]

public function createCallbackAdapterWithIndividualParameter():void

{

var callbackAdapter:Function = createListenerAdapterBasedOn(function(data:String, p1:String):void

{

assertThat(ORIGINAL_PARAMETER, equalTo(data));

assertThat(FIRST_PARAM, equalTo(p1));

}, withParameters(FIRST_PARAM));


callbackAdapter(ORIGINAL_PARAMETER);

}


[Test]

public function createCallbackAdapterWithIndividualParameterNoFluent():void

{

var callbackAdapter:Function = createListenerAdapterBasedOn(function(data:String, p1:String):void

{

assertThat(ORIGINAL_PARAMETER, equalTo(data));

assertThat(FIRST_PARAM, equalTo(p1));

}, FIRST_PARAM);


callbackAdapter(ORIGINAL_PARAMETER);

}


[Test]

public function createCallbackAdapterWithIndividualParameters():void

{

var callbackAdapter:Function = createListenerAdapterBasedOn(function(data:String, p1:String, p2:String):void

{

assertThat(ORIGINAL_PARAMETER, equalTo(data));

assertThat(FIRST_PARAM, equalTo(p1));

assertThat(SECOND_PARAM, equalTo(p2));

}, withParameters(FIRST_PARAM, SECOND_PARAM));


callbackAdapter(ORIGINAL_PARAMETER);

}


[Test]

public function createCallbackAdapterWithIndividualParametersNoFluent():void

{

var callbackAdapter:Function = createListenerAdapterBasedOn(function(data:String, p1:String, p2:String):void

{

assertThat(ORIGINAL_PARAMETER, equalTo(data));

assertThat(FIRST_PARAM, equalTo(p1));

assertThat(SECOND_PARAM, equalTo(p2));

}, FIRST_PARAM, SECOND_PARAM);


callbackAdapter(ORIGINAL_PARAMETER);

}

}

}

如果你的心裏裝得下另外一個女人,那我的床上就可以睡得下另外一個男人









 


1.有人把你放心上,有人把你放床上。
2.
如果你的心裏裝得下另外一個女人,那我的床上就可以睡得下另外一個男人。
3.
我愛你時,你說什麽就是什麽,我不愛你時,你說,你算什麽?
4.
他跟我演戲,我回報以演技。
5.
我要讓全世界都知道我很低調。
6.
你來我信你不會走,你走我當你沒來過。
7.
我是你轉身就忘的路人甲,憑什麽陪你蹉跎年華到天涯?
8.
對男人好,不如勾引男人來對自己好。
9.
好男人就是反覆睡一個女人,一睡就是一輩子。
10.
等待你的關心,等到我關上了心。
11.
馬不停蹄的錯過,輕而易舉的辜負,不知不覺的陌路。
12.
總有一天你的名字會出現在我家戶口簿上。
13.
不是故事的結局不夠好,而是我們對故事要求太多。
14.
我必須學會新的賣弄,這樣你們才會繼續的喜歡我。
15.
脫了衣服是禽獸,穿上衣服是衣冠禽獸。
16.
其實你我都一樣,人人都在裝,關鍵是裝像了,裝圓了,有一個門檻,裝成了就邁進去,成為傳說中的性情中人。沒裝好,就卡在那裏,那就是卡門。
17.
欺騙一個人的最好辦法,就是利用自己的真感情,也許不是我遺忘了,只是我不願意想起而已。
18.
敏感的人,都是很自尊與很自傲的,同時也有著自卑的情結。
19.
又到了這個學長勾引學妹,學妹勾搭學長,學姐垂涎學弟,學弟攀附學姐,學姐嫉妒學妹,學妹憎恨學姐,學長拋棄學姐,學姐報復學長,學長欺瞞學弟,學弟巴結學長,學弟追求學妹,學妹拒絕學弟的季節。
20.
悶騷就是自己對自己放蕩。
21.
愛,從我們開始那天,已經偷偷倒數計時,安安靜靜地走向結束。
22.
選擇最淡的心事,詮釋坎坷的人生。
23.
一個人要令另一個人討厭不是難事,能讓所有的人都討厭也是一種本事。
24.
請不要把我對你的容忍,當成你不要臉的資本。
25.
時間對了,地點對了,感情對了,卻發現人不對了。


26.我允許你走進我的世界,但不許你在我的世界裏走來走去。
27.
人哪有好的?只是壞的程度不一樣而已。
28.
一個錢幣最美麗的狀態,不是靜止,而是當它像陀螺一樣轉動的時候,沒人知道,即將轉出來的那一面,是快樂或痛苦,是愛還是恨。
29.
全部都很好,只是我不喜歡。
30.
過去的一頁,能不翻就不要翻,翻落了灰塵會迷了雙眼。
31.
有的人對你好,是因為你對他好,有的人對你好,是因為懂得你的好。
32.
談錢傷感情,談感情傷錢。
33.
那是你唯一一次放我鴿子,一放就是一輩子。
34.
一見鐘情,再而衰,三而竭。
35.
理想很豐滿,現實很骨感。
36.
一生至少該有一次,為了某個人而忘了自己,不求有結果,不求同行,不求曾經擁有,甚至不求你愛我。只求在我最美的年華裏,遇到你。




(圖文/網路 夢筠蒐輯整理分享)