Archives for category: software

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

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!

Last night was Democamp26, held at the Ted Rogers School of Management.  There were some great demos that I thought I’d summarize for anyone who missed the event.  I am going to omit the summary of the fantastic presentation by April Dunford, and stick to the demos.  You can find her slides here. To any of the companies that may be reading this, my summary is the impression that I got from your 5 minute pitch, not gathered from your website.  Please feel free to correct any inaccuracies and I’m always happy to see comments.  I’ll also be giving me 2-cents on each project which I intend to be purely for constructive criticism, there are enough trolls on the internets.  Excuse the verbose nature of my posts, this is my blog, I like to ramble.  Without further delay: OpenApps, TeamSave, KoboBooks, SWIX and Status.net

Company: OpenApps
Website: http://openapps.com

Summary: OpenApps is a simple point and click solution for websites to enable user developed apps.  Think Facebook apps on your personal blog or company website.  The value prop is that not everyone can afford to build new site functionality, and their technology can easily allow developers to create apps for others to consume.

Presentation: This presentation was great.  Fast paced and straight to the action. Krispy (the presenter) clearly has talent for presenting and genuine enthusiasm for the product.  His excitement kind of felt like what it would be like if the ShamWow guy made software (I mean that as a compliment Krispy).  Big Kudos to their team (who were all present and proudly wearing their company gear) for launching on stage last night.  As someone who has been part of a live on-stage website launch (I was lucky to be at TechCrunch50… name drop… *cough cough*) so I can totally relate to the pressure the team must have been feeling.  During the 15 second Wireless Internet drop, I glanced over at the dev team in the audience who were all equally relieved when the Wireless kicked in again, I shared their relief.

Killer Feature: 2 killer moments during the presentation.  Their apps magically* sit on a sub-domain of your company URL (search.democamp.com) and the “Look and Feel” easy button which essentially auto-styles a vanilla app install to your caompany’s layout.  Thats a neat trick.

Comments: I got the idea, the demo made it pretty easy for people to get.  The business model is pretty clear to me, they take a 30/70 split in favor of the developer on the apps.  The apps have a monthly fee and its a win-win for small companies and independent software developers.  My only concerns is that their review process will likely run into similar problems as the Apple App store, and the responsibility of service and uptime of each app is really up to the developers.  Now this makes sense for OpenApps, because they could not feasibly support all these user generated apps, so companies must understand that most of the apps will have an “as is” tag stamped on it.  I caught up with Krispy after the presentation who reminded me that they aren’t in the business of hosting applications (though I believe they can, with a cost), they are in the business getting cool apps on peoples websites.  At the same time they are giving developers a distribution platform for their apps, and helping them make money.  +1 for helping developers out.

*Don’t worry, I’ve done the old “host file” hack many many times in demos.

Company: TeamSave.com
Website: http://teamsave.com

Summary: Companies give better deals when you buy stuff in groups.  It ‘s hard to get people to commit to group buys.  Squeeze people to a 24 window and people trying to get the deals will become your sales force.  Cool.

Presentation: I like these guys a lot.  We got a 2/3 life lessons and 1/3 demo which I liked (although I’m sure some didn’t).  I am young, in a start up and trying to make great software that sells.  These guys are all of the above, so the presentation was great for me.  This duo was featured on the hit TV show “The Dragon’s Den” where they successfully pitched JobLoft.com  and eventually sold it to onTargetJobs.com.  Hearing these success stories is always nice.

Read the rest of this entry »

I don’t know why, but I never really used Delicious.com (actually I had an account a long long time ago).  I recently made a new account and came across an interesting UX scenario.  It took me like 30 seconds to figure out how to actually make a bookmark (and yes, I was trying, and no, I am not an idiot). Once I figured it out, it was simple, but it got me thinking of an important web principle: “Make your core feature offerings DEAD SIMPLE to find.” While companies probably don’t like getting simplified down to a single feature, that is often what makes them popular. Using a technique from Steve Krug’s “Don’t Make Me Think,” lets see if we can figure out what some popular websites are trying to offer to us. Instead of showing a normal screenshot, each shot has a light gaussian blur applied to it.  For me, this is how I often “see” my own work through the eyes of a new visitor.  I also came up with some unofficial one liners for each:

Step 1: Create a Call to Action

It’s interesting, because you can find a lot of great design resources and AB tests on “sign up” or “buy now” buttons. However, I rarely see discussion on action items in terms of core functionality of a web application or service.  This first caught my eye while reading “Designing Web Interfaces” (pg. 82-83) on “Clear Call to Actions and Relative Importance.”

Youtube: Upload and Share videos

Notice the bright yellow blob in the corner -- the "Upload Video" button

Digg: “Digg”/Rank stuff from the web

Notice the 3 yellow/tan blobs running along the left - "DIGG" buttons

WordPress: Write and post blogs

Notice the blue blob on the right - the "Publish" button

Read the rest of this entry »

I love the color pink/purple - I change my syntax highlighting colors so that I comment more...

One day, a software developer was walking down the street and came across a large pill of dog shit.  He bent down to get a closer look and said to himself “yep, that looks like shit”.  He then gave it a sniff, and said “Yep, that smells like shit”.  He then put his finger in it, and said “Yep, this feels like shit”.  Finally he did the unthinkable and tasted his finger and happily said: “Oh yeah, that tastes like shit…”.  He then walked away satisfied, and said out loud:

“That was definitely dog shit.  Good thing I didn’t step in it!”

An old joke which I managed to re-arrange and fit into my experiences with software.  Sometimes you have to taste the shit to avoid stepping in it. Don’t look too deeply into the metaphor.  Testing is hard, not everyone wants to do it, but it is your duty to prepare for and handle the worst, so your customers don’t need to.  I guess there is a hidden message about thoroughness too.

Follow

Get every new post delivered to your Inbox.