job vs. career

One of my colleagues—I’ll call him G.—recently told me how he had gotten his current job. He said it was because he had been unemployed for six months. In that time, he got up early every day, studied, and coded. What did he study? Everything listed in the job description.

Having a job can lull one into a false sense of security. Before his layoff, G. had been working for one of a handful of U.S. defense contractors where security, quality, and policy protocols dictated that every piece of technology was vetted and approved. This meant that G. was working with older tried–and–true languages and frameworks. So although he was well–versed in Java, he was walled off from newer developments such as Struts and Spring.

Employment might be the worst thing for one’s career. Not every company is willing to nurture your growth outside the office walls. Insider familiarity with an employer’s proprietary business algorithms might well come at the expense of a broader skill set.

There are a few ways to counteract this career atrophy:

  1. Read. Not just fiction. Not just about tools, but also about process, about craft.
  2. Code outside of work. For fun. For profit.
  3. Respect and value your family time, but attend some tech meetings.
  4. Present at some tech meetings. The Q&A might teach you more than you expect.
  5. Blog or tweet. This will collect and reinforce your learning. More about this later.

Mango, mmm

Among our decidedly non–Korean friends, Korean telenovellas are apparently in the list of top ten reasons for owning Android devices capable of playing Flash videos. So when the missez started watching “Lie to Me” on Netflix this week, our Apple fanboi household had finally caught up with the world.

This show is funny—and not just because of the clever and insightful dialogue.

1. The supposedly Chinese businessman and his wife speak Mandarin really, really slowly.

2. The subtitles look as if supplied by Google Translate. Example: “That doesn’t match him.” Who says that? The Brits or Aussies?

3. Everyone carries a Samsung device. The reason is obvious after a while: Samsung is an advertising sponsor. Some of the episodes are basically Samsung commercials. Look, you can drop a Windows Phone 7 onto the pavement—no problem!

I’m not sure I know anyone who’s seen an actual Windows Phone 7 in the wild. The question then is, who In Real Life would buy a Windows Phone 7?

1. Windows developers. Most of our tech friends make their living with Microsoft tech, and they’ve invested heftily in this skill set that pays well and will continue to pay well into the next decade. If I were them, I would learn everything I could about WP7 development.

2. Windows fanbois. A decade ago, this would’ve seemed strange, but Apple is now the biggest company by market cap. Windows is now the underdog with a cultish following. I dare say that Microsoft is wrong to stick with the Windows brand that incites so much hatred, but they have a big cash hoard to last the winter and a tasty proposition with the Mango interface.

back it up

If you read my last post, you’re probably thinking, instead of running three commands, why not just copy the file and go home?

$ cp -p moneyhoney.js moneyhoney.js~
$ svn revert moneyhoney.js

Three reasons:

  1. git gives you versioning.
  2. I have a bash function for you.
  3. git gives you versioning.

You can put this in your .profile:

backup () {
  if [[ $# -ne 0 && -e "$@" ]]; then
    if [ ! -d .git ]; then
      if [ -e .git ]; then
        echo ".git EXISTS AND IS NOT A DIRECTORY."
        return 1
      git init .
      if [ $return -ne 0 ]; then
        return $return
    git add "$@"
    if [ $return -ne 0 ]; then
      return $return
    git commit -m "$FUNCNAME()" "$@"

So now you can do this instead:

$ backup moneyhoney.js
$ svn revert moneyhoney.js

A/B code testing with git&svn

Using Subversion? Great, isn’t it? The plethora of tools—such as CruiseControl, Subclipse, Subversive, and trac—makes working with other people wonderfully productive, even with the usual trappings of group work.

But what if I’m not sure I want to commit? git to the rescue! It’s cheap and easy:

$ git init .
$ git add moneyhoney.js
$ git commit -m "backing up potential fix." moneyhoney.js
$ svn revert moneyhoney.js

This is our control subject. After running some confirmation tests…

Let’s grab our local backup copy of our experimental subject:

$ git checkout -- moneyhoney.js

If additional testing confirms that our fix is good, we commit for realz:

$ svn commit -m "soopa doopa fix, yo" moneyhoney.js

Ant typo of the day

[foreach] The nested fileset element is deprectated, use a nested path instead

sleep rut

I’ve been struggling with some kind of narcolepsy my whole life. The problem is so severe that I’ve developed the habit of sleeping with my eyes open (during meetings, driving lessons, Broadway musicals, etc.). If you find yourself in a similar situation, I’d advise pulling over as soon as politely possible and taking a nap.

Last night I felt the need to stay awake to do some work, so I tried drinking tea. All this did was make me cranky and even sleepier. I find that the best approach to handling normal night–time sleepiness is… to sleep and, if necessary, wake up early in the morning to tackle whatever the day requires.

blog rot

The missez observed recently that I should blog more often—and so I shall. That’s an interesting word, “shall.” Here I use it to express determination, and I shall do my best to meet my sole reader’s expectations.

Besides the perceived lack of time, there is that constant doubt of not being capable of writing material of a high enough quality to warrant a reader’s attention. But knowing that there is exactly one person who reads my blog helps.