Posted in design, random

The Facebook World Map with Countries Overlaid

By now, I’m sure you’re all familiar with the awesome map that Facebook intern Paul Butler made. Here’s a snapshot & link to the original post (definitely worth the read):

Friendships visualization

What was amazing to me was how connections (“friendships”) are location-dependant, or more specifically country-dependant.

What I really wanted to see were the actual outlines of countries on the map.

After an hour or so, here is what i had. (Click the map for the larger version, so you can actually see the countries in 1920 × 1200)
Facebook World Map with Countries Overlayed

Things I noticed:

    us canada border
  • The line between US & Canada is very visible east of Vancouver and West of the Great Lakes. It seems like there are not many connections there
  • The mexico/US border is not as distinct as the CAD/US border.. that could be pure population though
  • russia & china
  • Russia & China are almost non-existent. Mark has talked about this a lot, how they are the final two countries Facebook has failed to assimilate. Russia has their own Facebook clone that has taken off.
  • CUBA!! actually seems to have a small resistance using FB in the north west, but the rest is virtually non-exsistent
  • The immediate drop off of facebook users (& connections) after Eastern Europe is crazy…
  • The distinction between North & South Korea is amazing
  • I was surprised to find it looks that more people are “connected” in Edmonton (north) rather than Calgary (South) in Alberta. Since I am from Calgary, and it’s a bigger city, that was interesting to me. My friends that went to Edmonton for University did say they loved the friendships they had there better. Where as University of Calgary is much more of a commuting university.
  • Most non-saturated countries begin like Vitenam – with major cities really getting on board, and slowly making connections to their local friends.
  • Conversely, the christmas Islands are unlike most other islands where only major cities have connections. These islands seem to have already started to get saturated!
  • Europe really does have a lot of people really close to each other… its crazy
  • You can really see the cities/countries in Africa that are using facebook: Kenya, South Africa, Nigeria, a bit in Ghana…
  • Thoughts? I’d love to hear them in the comments below. I’m working on a follow-up post (or I may just update this one) explaining how I did it.

    There’s also a great conversation going on Hacker News

    – I did not make this map so please don’t sue me. Paul Butler, a facebook intern did, and the links are noted in the first paragraph. I also did not make the Google Maps – google did. You can get the google maps here and the Facebook Map is here:

Posted in design, entrepreneurial, personal, tech

BeatMyRide: My First IPhone App

Friday, Oct 22, 2010 – This was an old post from last April. I now drive mobile strategy (read: I’m the only iPhone Developer ) @ Invoke Media, creators of Hootsuite, where I’ve launched apps for the Onion that got mashable & lifehacker love, as well as video contesting apps for large, US insurance agencies (I think we’re on NDA).


This is the first end-to-end iPhone app I authored. It allowed me to learn the Objective C & the iPhone SDK including frameworks such as the Location Services & Core Data. It also helped me to understand the basic Model View Controller concept, as well as how view controllers work in general.

The Big Picture

which path

Often times, I take different routes to and from home, work, Vicki’s work, the gym, church, & other common locations. I wanted to create an application that would allow me to:

  • Map common locations & routes
  • Calculate the average & fastest times between common locations.

This was important because many times I would want to know:

  • Which specific roads provide the fastest times between locations
  • The average times between locations so I might better schedule my transportation times.
  • It was also amusing because it would allow me to “race” against my own fastest times, of course ensuring that all traffic regulations & speed limits were adhered to.

On top of all that, I needed a good excuse to learn the iPhone SDK platform.

Future Features

I also made sure to architect the program so that in future iterations, it would be easy to add some really exciting features such as:

  • Auto-Detecting the location and mapping the exact route taken.
  • Audio or Visual cues as to how you are currently matching up with average & fastest times for that route.
  • Social racing (being able to race against not only your own individual times, but to be able to compete against other players in your area).

Background & Software Design

Object Oriented design teaches us to treat everything as objects. In this case, it was important that I decided on the following terms.

Location: A location consist of the name of that location, the address (both the longitude and latitude, as well as street address), and a collection of all the Routes the location belongs to.

Route: Routes consist of two or more locations (initially, I allowed only 2 locations) and the fastest & average times for that route.

Screenshots & Walkthrough

I architected this app more with utility in mind rather than design. Frankly, I wanted to be able to use this app with as little input from the user as possible.

The first screen gets right to the point and asks your for your present location. In this case, I have chosen Home.


You can see there are two floating numbers. I have used the iPhone’s “Location Services” to store the longitue and latitude for each location. This is the first step in auto-detecting the start and stop locations as well as being able to trace & record your entire route.

If you want to create a new location, you can add it by pressing the “+” sign, and entering the name of the new location. As mentioned


Once you have selected your location, the next obvious step is to select the destination. Today, I’m driving Vicki to work so I choose “Vicki’s Work.”


If no route has been created between those two locations, one will be created. Otherwise, the route will be selected and displays the fastest & average times, as well as all the past times.


Once you are ready to start, you can press the “Go” button on the top right & the timer begins on the Navigation Bar.


Once you have arrived at your location, you simply press the “Stop” button, and your trip time will be recorded into that route. In this case, my trip magically took 8 seconds.


As you can see, the trip is automatically added to “Past Trip Times” and the fastest and average times have automatically been calculated.


Being my first iPhone application, this was definitely a great learning process. Not only did I get used to XCode and the iPhone SDK, I also got to use the new Core Data library, got to test out Location Services to find the longitude and latitude, and got to prototype the class structures visually using XCode’s build in editor.

The best part is that I now have a way of timing my average and fastest times between my common routes and can race against myself, which was my original goal.

The next features I plan on adding are definitely going to be

  • auto-detecting of start and stop locations
  • using Location Services to map the entire route, which allows for
  • audio cues of my current pace compared to my fastest or average times

If these features work out well, I am definitely excited to add in the social gaming aspect.

Posted in design, personal, tech, user experience

An Epic Fail: How to make a $150+ 500 Gb portable external hard drive suck

I bought a WD “my passport” that had some great features.

  • It was smaller than my wallet
  • Needed no external power, but ran off one USB connection to my computer
  • It was 500 GB for crying out loud
  • It had a great design

However, WD missed one small thing: the USB cable is not a regular mini USB.

Continue reading “An Epic Fail: How to make a $150+ 500 Gb portable external hard drive suck”

Posted in design, personal, user experience

Who’s fault is it when website pictures don’t show?

Who do you blame when a website has broken links, non-existent pictures, and slow speeds?

I never really thought about this before, but I naturally blame website owners. Come to think of it, I blame them for almost all their poor user experiences. See here and here.

But “blame” is really too strong a word… What I really mean is that I hold them accountable for it.

But, in a strange but ironic twist of fate, I just realized I’m one of those websites.

Here’s an example of a post I recently loaded up on this tech blog:

Screen shot 2009-10-14 at 1.06.53 PM

The weird thing is that after a few minutes and still no pictures a quick refresh brings them all back up.

Screen shot 2009-10-15 at 12.56.52 AM

This has happened on more than one occasion.

Moral of the Story

Now, what can I learn from this? Whose fault is it? WordPress’ or mine?

I guess I found out that, well, It doesn’t matter.

In the end, the users of my site will still connect the poor performance and broken links to MY SITE.

So, in the end, it has to be my job to maintain and “test” out my site constantly.

But let’s be honest – it would be impossible to fully check my site using all the different computers, running all the different operating systems, in different resolutions, and with different browsers.

Now, that “support” tab who’s value I put into question seems like a pretty bright idea.

Possible Solutions:

Of course, there’s the basic link scanners that tell you which links are broken on your site. Here’s an example of one called Xenu.

But it seems rather static, manual, and not general enough. All it takes care of is finding broken links and not, for example, the load time of your website. And you’d think that WordPress would have something integrated into their system already!!! (ie. something that sends you a quick e-mail, telling you when a link is broken)

This would be a great problem to solve. What I would see is a third-party company or service, that basically does the link scanning, load-time benchmarking, and general basic things that really affect user experiences. Hmmm… sounds like a good idea. 😉

Any one have any other suggestions to deal with this problem?

Posted in Canadian, design, tech, user experience, Vancouver

Examples of poorly designed websites (part 2)

(check out my latest part3 review of a poorly designed website here:)

2. Staples Ad promises much but fails to deliver.. twice!

So I’m browsing a tech site, and see this Ad from Staples:

Screen shot 2009-10-12 at 11.18.58 AM

I’m feeling a little intrigued by the “limited-time tech deals” and “roll over to see more” promise. I’m impressed with the fact that they have tech-deals on a tech blog. They directed the advertising to me, in an extremely relevant yet subtle manner. And, I don’t know if they meant to or not, but with the “roll over to see more” they hooked me.

That’s two points.

So, I “roll-over” the ad and I get this image:

Screen shot 2009-10-12 at 11.19.22 AM


That’s what I got: Nothing.

Not only did Staples lose the two points they just got but they went negative in my books.

But I’m still wondering about those promised “tech-deals”, so I give them the benefit of the doubt – maybe it was the advertising company they contracted out to.

So I click on the “See Weekly Ad” and get the following website:

Screen shot 2009-10-12 at 11.20.35 AM

At this point, I am a little more than slightly frustrated.

Those who read my earlier post on location-based website can attest to this, but I feel that such a basic task as asking for your location from IP address is such a simple, yet valuable addition.

Granted, I was on a US tech blog, so I can understand why the Staples ad brings me to the US Staples site. But seriously, even got it right, why can’t you?

So I figure, I really don’t want to:

  1. open a new tab/window
  2. type on
  3. enter in my city, postal code, etc again
  4. find the “new tech deals

Instead, I want to

  1. Type in my city, country and have it direct me to the Canadian version of the staples site for my city!

So, as a last chance, I give them the benefit of the doubt again and type in “Vancouver, Canada.”

I receive this error: “Please enter a Valid Zip Code or City, State”

Screen shot 2009-10-12 at 11.20.59 AM

I’m done.

At this point. I’m done. Staples has become irrelevant to me. They are more than minus 1.

Will I stop going to Staples from now on? Probably not forever, but as a user I will constantly think about this every time I’m tempted to use their website.

Possible Improvements

Some suggestions for improvement – though Staples seems so large, and I so small, I hardly know if they will head these:

  1. Create a much smoother transition from your Canadian and US sites. (e.g. When I entered Vancouver, Canada that should show to you that I’m looking for Vancouver, in Canada, and send me to that site)
  2. Building on 1), detect where users are (including city, and postal code/zip codes) so users don’t have to keep typing it EVERY TIME.
  3. Test your ads on the majority of browsers, and the majority of Hardware! (I’m using Firefox 3.5.3 running on Snow Leopard (10.6.1) with a Macbook Pro 15″. Hardly a minority from what I’ve see nowadays)
  4. Golden Rule: Don’t suck. (I got this as an inspiration from the head of Google Canada). If your data sucks, your content is terrible, no matter how nice the ad or site or marketing is people won’t keep coming back. In this case, there was no data. That would translate to “suck” for me.

Again, not entirely staples’ fault, as they most likely went through a third-party for the ads, but that’s not what users think.

In short, Staples promised-high (with the design, the roll-over secretive anticipation) and succeeded on not only failing to deliver, but also annoying me.

From this humble user’s perspective, companies big and small need to stop doing that.

Posted in design, tech, user experience

Examples of poorly designed websites (part 1)

Update: of course since I pasted the screenshot the site has now changed and indeed implemented a suggestion of mine: to move the text over to the right and make space for the floatable support tab. I still feel that more valuable links should be used for that space as well but hey, who am I to say anything?

Disclaimer: I just want to say that I’m not at all against the content of the following websites. In fact, some of them I actually quite admire (like Timothy Sykes who managed to turn a $12 000 Bar Mitzvah present into over $1 million). I’m in no position to judge their overall site’s user experience. This is just a humble man’s opinion.

1. support tab that covers the site as you scroll.

Screen shot 2009-10-12 at 11.24.45 AM

my rant: I understand the new “floating” bars, which I honestly feel are a great addition to much needed tasks. But really, a support tab, that covers text as I scroll? It definitely left a sour taste in my mouth. I would have much rather enjoyed a small bar at the bottom of the window, or moving all the text to the right.

problem 1 (main): covers text, user needs to scroll around it to view text (the core, data)

problem 2 (minor): I’m not even sure what support is. Support for the website? Support Timothy Sykes?!?

solution 1: I’m a fan of simplicity. Does the support tab need to be there? Does it increase sales? Does it make users want to read, or does it get them irritated because as they read they have to scroll around it (which happened for me on more than one occasion). If the answer is no to all of the above, it doesn’t need to be there.

if there’s still value in it (perhaps there have been many complaints on the site’s usability) then make it available, but not so in your face. perhaps a bar on the bottom or visible but not overcrowding text. This is such common sense , I feel bad saying it.

solution 2: if it for website support? perhaps name it something other than just “support”, such as “website support”.

This post has gotten longer than I wanted. Stay tuned for part 2.

Posted in Canadian, design, user experience

MSN.COM asks me if I want to go to MSN.CA!!!

Screen shot 2009-10-14 at 1.47.34 PM

After years of defaulting Canadian-based Windows computers to the (US Version) website, now detects you are Canadian and asks you if want to go to the Canadian site ( or stay with the United States Version.

Not only that, it asks you to remember this choice for next time!

This is definitely an improvement to location-based user-experiences like MagicJack, but I say why not go a step further?

When the computer connects and allow the user to “register” in Canada, shouldn’t things like the default website be turned to the equivalent Canadian versions? e.g. ? In my head, that would make for a much smoother user experience.

What do you think?

Posted in design, entrepreneurial, personal, tech

Where are the entrepeneurs who can boldy go where no man has gone before?

big idea #1: rollable computers

For those who haven’t watched orkin design’s video for a rollable computer, I have two words for you:

Watch it.

Unhindered, non-judgmental group brainstorming

Over the last year and a half, I have been meeting with well over 20 different individuals in one form or another to brainstorm ideas for innovative products and startup ideas. However, I found that the majority of people were not able to dream big.

What do I mean?

A well-known trait for entrepreneurs is that they are continuously pushing the envelope of technology, innovation, and what is “possible” in today’s world. In an attempt to finally sound like a trekie, they are able to “boldly go where no man has gone before.”

However, most of the people I met with would do one of two things:

  1. dismiss any “crazy ideas” right off the bat.
  2. not be able to come up with anything out-of-the-box or remarkable (as seth godin likes to say)

It was quite frustrating.

Out of 20 people I interacted with only one or two who were able to throw aside their inhibitions, and really think outside the box.

I’m not advocating not to be a realist, but I find that too many people nowadays don’t know how to dream big anymore! My generation is especially to blame!!!

We are the fast-food, instant generation and are so used to being spoon-fed everything that rarely are we challenged to use our brains to think of new ways of solving old problems.

Tesla & wireless power. Edison and the lightbulb. Wright brothers and their plane.

AC, also known as alternating current, is what the majority of the World uses to transmit power because of it’s high efficiency and little power loss. AC was a mere theory back when Nikola Tesla learned about it – eventually, he would be the first to successfully apply AC to transmit power. Where would we be if he would have listened to the myriads of people telling him to give up, that AC was a mere theory?!?

However, he didn’t stop there – his imagination was to transmit power wirelessly in the long run! Though he got close he was forced to shut down by the government and died a poor man in a lonely hotel room. Where would our world be if someone had encouraged Nicola to continue his “crazy idea?!?!”

Not only that, where would we be if Thomas Edison had not followed his dream of creating light from electricity? Even after the 500th material didn’t work, he just kept on going with his “crazy idea”. Where would we be if the Wright brothers had given up on the “impossible notion” of humans flying in the sky?

Changing the World – One Idea at a Time

Something about these men both excite and scare me to death. Their story proves that one idea in the hands of the right man can really change the World.

I daresay, I want to be an entrepreneur like that.

Posted in design, entrepreneurial, personal

I invented an automatic hair-cutting catcher

My History as an Inventor

I’ve always loved inventing things.  The main reason is because I like solving problems. I think this is a valuable trait in any entrepreneur.

I remember as a kid in grade 7, I single-handedly built a wooden rollerblading ramp 6 feet long, 2 feet wide, and 1 foot high. What was the problem I was trying to solve? Well, apparently that I didn’t have enough bruises and broken bones. The ramp soon took care of that. ;P

Though I didn’t say all my inventions solved real-world problems, the ones I’m most passionate about do.

I’m an Engineer – I solve problems

Take this problem for example:

Vicki, among the other plethora of tasks she’s able to do including sewing her own clothes, hemming my pants, cooking authentic Chinese cuisine, singing like a rock star, sleeping like a baby, making a fart sound cute, actually enjoying baby food, and blinking like a red light, can cut hair. Who would’ve known!

When I found out, I felt like I won the lottery – well, maybe the $10 lottery. Who would’ve guessed that marriage would have so many benefits?!?

However, it soon turned into the MINUS $10 lottery when I found out that cleaning hair out of the washroom sink, wall, bathtub, toilet, behind-the-toilet and in the floor cracks wasn’t really that fun. This was a problem.

I got to thinking, and when I start thinking there’s no telling what might come out.There had to be some way, some solution that was already done, that could catch the hair before it hit the ground, but still allow the barber easy access to the head. I had some large pieces of paper and quickly sketched out a similar idea using the cone technique

1st Prototype – Cone shape

I quickly took some nearby poster paper and tested out my idea of a prototype – the contraption resembled that of a dog cone.

Nevertheless, let’s just say I’m glad I don’t have the actual picture to show you.

There were also major problems like:

  • Difficulty removing and wearing the contraption
  • Cutting the neck
  • The barber could not access many spots of hair

2nd Prototype

For my second prototype, I really wanted to build something that fixed the problem of the barber having no space (3 above).

I realized that to let the barber get his hands in there, the contraption  would have to be portable, and the shoulder-area would have to mold along the patient’s chests and shoulders to give the barber more room.

I quickly sketched some ideas on a nearby cardboard paper and began designing.  I solved the problem by making the contraption run along the shoulder, then go deep enough so the Barber can reach from underneath.

I also knew that I would have to make this something easily taken on and off. I solved this by making it so that you can turn the “hat” sideways, and put your head through it. Then rotate it back to the normal position.

And finally, we solved the neck cutting issues simply by putting duck tape along the neck, and a garbage bag.

Here’s the final version in action:

Mack Showing my invention offVicki cutting mack's hair using my invention

What do you think? Would you use it?

Here’s a video of Mackenzie, Vicki’s little sister, taking it for a spin!

Moral to the Story

I think I learned some valuable lessons for my startup.

1) Just because you have a good idea or solution for a problem doesn’t make you a success.

Of course, I was really just doing it cause I had the time to spend with the material around me. But if this were a company, I should have first checked out the competition and seen there are some of these things out there:

I did buy the product shown above, and it works nothing as advertised. So I could try and enter this market, but this would lead to my second lesson:

2) If there’s not much competition in the market it is either a) the unlikely event that you’re the first one in or b) the likely event that others saw it was not profitable enough

How much margin can I really make from selling these? Who cuts their hair at home? Would they want a product like this? Would they want a solution that keep hairs cut from dropping to the ground? That’s where user research and market research would come into play.

Needless to say, I’m most likely not pursuing down the “haircut catcher” road so if anyone wants this idea, its all yours!

Posted in design, random, user experience, Vancouver

When automatic washrooms backfire: a lesson in cost-externalization

The washroom was so small that the auto towel dispenser thought I wanted paper as I walked in. This paper caused the auto dryer to turn on for 5 seconds. This repeated itself as I watched in amusement.

A closer picture of the perpetual automatic dryer
A closer picture of the perpetual automatic dryer

One has to wonder why this was not thought of earlier in the design of the washroom. What makes it worse, was that the door opens half way only as it is blocked by the sink.

A picture of this "automatic" dryer and paper towel dispenser combination
A picture of this "automatic" dryer and paper towel dispenser combination

This happens in software projects all the time. It’s called cost externalizing and happens when companies don’t take into account the fact that their users have a hard time getting certain tasks done, or have a bad experience while doing it. To them, they think:

Who cares that it takes the user five clicks to get this action done, they can do it so we can check off that feature request.

This is a very dangerous way to design software, or anything that involves users, really.