Who do you bring to the fight when facing a tough market, timelines and competition?

While excellent engineering talent is a must, there are many overlooked or under-appreciated roles that I believe are essential to the success of any software company – at any stage.   I often hear the excuse:  “We are too small of a company to hire a ________”.  Well guess what?  Your competitors have one, or maybe more, so SOMEONE at your company has to be taking on these responsibilities.  You might be lucky enough to have these roles filled, perhaps these responsibilities are shared within your company, but ignoring them will soon land you in a lot of trouble.  Lets get started with the 3 P’s that I believe are so important for any software project to succeed.

Read the rest of this entry »


Screenshot from movie trailer: And yes, I realize there is now a fake FB account this *character* in the movie...

Spoiler alert, I don’t really talk too much about the actual film’s “plot”, but if you haven’t seen it, watch the trailer here – watch the movie in mid September, and then come back.  I am not going to reveal the *twist* ending, go pay and watch the film. I was very fortunate today to be invited to a screening of the new movie Catfish.  It is a new documentary/reality-thriller about an online relationship that goes sour.  I knew very little about the film other than a very intriguing trailer that was floating around YouTube.  The film was quite enjoyable, and it did prove to be the emotional roller-coaster as promised, however there were a lot of mysteries behind the nature of the film itself.  In this post, I wanted to outline what I found fascinating about the  film, what I found unsettling about the film, and address the biggest question surrounding the movie:  Were the events in this film was REAL or FAKE?

Read the rest of this entry »

As a summary, this post outlines some good-to-know things for any Canadian software developer thinking about moving to the US to work.

Pretty bizarre tutorial no?  But after going through this experience (just shy of 2 months ago) I realized that there are a lot of things I wish I had done / known before.  A recent visit from a friend from Toronto had me thinking that others may benefit from a post like this.  This info is specific to San Francisco, however I am sure it applies to many other cities.  I have to thank @bentlegen and @shazow for the advice I got while moving in, I intend to pass the baton.  For a great post on how to decide where to work (if you are fortunate enough to have options), checkout @shazow’s post on: A check list while considering offers.  This post outlines all sorts of issues I ran into, feel free to skip ahead to the parts you might find useful.  I will cover things like: getting a visa, finding a place to live, and how to efficiently spend your first week in the city.  As a disclaimer for all the immigration advice, this is just through my experience.  I am not an immigration lawyer and if you have specific questions, I suggest you consult one.

Read the rest of this entry »

Is your software development a linear conveyor belt of bottlenecks?

This post describes my experience mixing Agile + User Experience design while building out the mobile site for thoora.com.  While this process worked for us, it won’t work for everyone/every project, however it allowed us to minimize blocked tickets and maximize the time of our small development team.  Breaking the work into manageable stories, and parallelizing the work early and often is a great technique to maximize output and manage the traditionally serial and inherently blocking jobs and responsibilities when mixing UX and Agile methodologies.

Read the rest of this entry »

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 »

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.