Archives for category: software

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 »

Advertisement

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

"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/.

I’m on the fence about the new look and feel of YouTube, but I felt this would be a great opportunity to see how Twitter and its users would react. Version 1 of an idea I had early for using Twitter as a litmus test. I ran some numbers using the search API and generated some pretty graphs, enjoy!