The infamous TN1-VISA: Its like Willy Wonka’s golden ticket, except this one lets me legally work in the US.  I took this photo 5 minutes after walking out of the US customs office in YYZ

(for tips on what to do/expect when making the move yourself, checkout my other post here)

I recently moved from my home town of Toronto, Canada to downtown San Francisco.  A lot of people have asked me why I moved (other than the job) so I thought I’d write a quick post about my move.  Over the next few months I will also be publishing weekly (hopefully) updates about my journey into the heart of the tech world.
Read the rest of this entry »

Advertisements

Over the last couple of weeks I have been trying to formulate a law based on my experiences over the last 8 or so years writing software for companies.  I think I have almost nailed it.

The Keyboard Law
(or The New Keyboard Law):

The total amount of unnecessary time elapsed between a developer requesting a new keyboard, to the time when it arrives in their hands, is directly proportional to the amount of bureaucracy within the department or organization he/she works for. As a corollary, this time is inversely proportional to the amount of influence software engineering experience has within the upper management of said company.

[Warning, below I go on a long rant explaining this law, feel free to skip it and just use this law in practice and give me credit,fame and fortune in the future. Also skip to the end and add your comments too ;P]

 

Read the rest of this entry »

In this post I’ll outline how to setup and connect a thrift client in PHP. If you’d like to learn how to setup and run a thrift server please see my friend Mike Cvet’s post here on setting up a C++ thrift server.

You’re in a meeting and some Sr. Dev from the systems or backend team says: “Great! just connect to my service via thrift, we already handle all the db connections and most of the caching. You guys use Ruby right? oh..  PHP? that’s cool too, sweet! *looks over to the PM* We should be done in a week…”. Oh snap! A week? What is this thrift thing? And what is this Ruby thing all those young whipper snappers keep talking about!?”. (Yes this is the use case I wish to satisfy with my post)

Apache Thrift is a great RPC framework originally developed and released by Facebook (added to the Apache incubator back in 2008).  I’ve used thrift for the last few years as a simple / efficient way to exchange data across machines, applications, and languages.  A coworker and I thought it’d be cool to do another Thrift tutorial, because at the time of this post, the official tutorials are being developed.  Following the nature of thrift, we also thought it’d be cool (we are nerds) to split the tutorial across 2 different blogs, I will explain the client, he will explain the server.   As a quick warning, this tutorial is rather verbose, I like hearing myself talk… Feel free to skim through the code if you want to skip my life story.  Warning #2, I wrote this tutorial after drinking an entire bottle of wine, you have been warned.

Download Source from GitHub – Client and Server

Read the rest of this entry »

I find myself using delicious.com more and more (yes, I was a very late joiner).  I read so many random blogs and articles and always feel bad when I forget where I got an idea from.  I have been using delicious as a reference to my brain, the tagging system makes things really easy to recall.  But the thing that always gets in my way is their tagging system, space delimited.  Since delicious only accepts “spaces” rather than commas, I was frustrated one day to find duplicates of some of my tags:

And no, there is no such thing as "ui,"

I couldn’t imagine myself being the only one with this issue, 5 seconds of Googling uncovered this 3 year old thread about the problem.  My usual greasemonkey disclaimer applies (I love delicious, and I allowed 3 years for this to be fixed, so I will make a patch if people choose to use it).  So, better late than never, this one is for you @stowboyd!

Install the GreaseMonkey Script Here

I must assume that all airplanes run Windows2000

Inspiration behind this comic, I recently flew from Detroit to Toronto and the plane refused to take off because the kid beside me was writing an SMS.  2 different stewards began arguing with him to turn off his iPhone until he finally did.  Meanwhile I was *sleeping* beside him with my iPhone on listening to music.  Fortunately for me, I had my hood on and they didn’t care notice.

“Phones and Mp3 players can cause electrical interference that can disrupt our plane’s equipment.”  I don’t like being treated like a child, the reality is they need your full attention during takeoff/landing so that you are alert, since these are the times most likely an accident could occur.  Just say that.  You can’t seriously expect me to fly on a plane if some idiot’s Walkman (that idiot was me in my previous story) was accidentally left on, and can take down a 747.  Why do you rigorously measure the amount of hair gel in my carry on, and force me to put it into a baggie, yet seemingly ignore the 3 electronic devices in my front pocket.

Incidentally, while drawing this comic, this news article about an NFL player going through this exact debacle appeared in my news reader.  I might be over reacting, but perhaps you (the FAA) should worry more about your pilots making $17,000 a year and being on food stamps [warning, link to Michael Moore] than me listening to Miley Cyrus on my flight home.

"Shadow of the Colossus" by Team ICO, image by fellcoda from deviantart

Summary for all those headline skimmers: Ebert says that video games will never be art, I highly disagree and analyze and break down his argument.  Ebert seems to have confused the act of playing games with the creation and the game itself.  The original article spawned a huge reaction, and > 3,000 comments.  Many ideas from those comments are shared by me.

A week ago, acclaimed film critic Roger Ebert posted an article boldly re-stating his belief that “Video Games can never be art”.  His article was in response to a TEDx presentation by Kellee  Santiago defending Video Games as an art form.  Ebert’s argument hit a personal note, because although his focus was video games, to me it almost generalized that no part or product of the software process could be art.

Ebert’s main argument focused on a traditional definition of art, and used the 3 examples provided by Kellee as counter-examples for his proof.  This made me cringe.  Presenting an argument in this form (specifically relying on these 3 examples) to me was a logical fallacy, denying the antecedent.  Video games will never be art, because these 3 games are not art.  Sorry Ebert, you get an D- in propositional logic 101.

To his defense, I don’t feel like these were the best examples to use.  The Waco Resurrection, was a very interesting but bizarre choice to prove a point.  Any academic trying to solidify the credibility of modern video games knows of the stigma that must be overcome to make any progress.  The Jack Thompson‘s of the world  have made it impossible to mention video games seriously without getting the “senseless violence” card thrown on the table.  I acknowledge the original ‘artistic’ intent behind the Waco project, but again, very very bizarre choice to make a point.  The other two examples weren’t as bad, but Kellee quoting their market success just gave Ebert more ammunition.  There are so many other facets of the game industry that could have been brought up.

Ebert seemed fixated on the gamers’ desire to have playing games qualified as art.  This is the biggest problem in the whole debate for me. He unfortunately failed to see that many disagree with his position because the process of making a game, and the game itself is what people want to be considered art, not the act of playing. And instead of starting a fight with an audience, he started a fight with an entire industry. This comment (lost in the mass) by Ebert himself, sums it up.

By jim emerson on April 17, 2010 12:36 AM
Would you concede that a chess set itself can be a work of art, whether or not it is actually played?
Ebert: Yes. But why is that a concession?
The screenshot above is from a PS2 game, “The Shadow of the Colossus”.  I own this game, never played it to the end, but before I even bought it, I considered it a piece of art.

I always feel uncomfortable taking photos in airports

I often (wrongfully) ignore great examples of UI design outside the computer world.  While making a connecting flight in Vancouver, I stopped to take a picture of this (in my opinion) great “User Interface”.  It reminded me of Tufte’s Envisioning Information, although I’m sure there are many other books which better exemplify this point, maybe this one.

I am always reminded of an interview question a friend had a few years ago while interviewing for a PM position at Microsoft: “Design a information kiosk assuming that your target demographic is illiterate.” That’s a cool problem that I think a lot of people freeze on.  It opens up so many ways of exploring perceptual psychology and visual affordances, and generally brings up some great design questions.

The above sign is printed in English and French (Canada’s official languages), Chinese (likely due to the large amount of Chinese visitors and immigrants going through Vancouver) and some visual queues for everyone else.  But realistically, the visual queues are the main focus, and the labels are just supplementary information.  An arrow showing which direction to walk, the picture of a man traveling, the Canadian flag, signifying domestic, and a green light… which to be honest Im not sure what means, but lets me know that going this way is good.

Does your application’s or website’s UI communicate well to your users?  Do you rely too heavily on English labels?  Do you rely too heavily on icons?  Does your website pass the blur test (now that green circle makes sense)?  I won’t open the debate of icons vs. labels, or even the discussion about Realism in UI design, I am just thinking aloud.

An interesting thought, which stuck me while passing by this lonely sign in the Vancouver airport .

Update: For a very interesting and thorough breakdown of this idea in field, check out this great article on SmashingMagazine: http://www.smashingmagazine.com/2010/05/20/web-design-trends-2010-real-life-metaphors-and-css3-adaptation/.