Starry starry life


Last weekend I hiked up and camped at Garibaldi Lake. At night, we went out by the lake and were greeted by a sky full of stars. The view was striking and the silence was powerful. And the totality of what I was experiencing got me thinking.

Like a person, each star has a story to tell. It probably had unique parents (every nebula looks different after all), a different time to maturity (our sun took 50 million years - what a baby), and a different luminosity, size, orbit, satellites (siblings?) and gravitational pull. It may also be scarred left right and centre by meteor strikes unique to itself. Just like a person.

Taken as a whole, the universe is beautiful. Sure, it has its black holes and scary warped time-space stuff, but when we look up at the night sky, we see beauty. Pure immense beauty.

We should see the same when we look at humanity.

No one person represents all of humanity, and no one star shines that much brighter than the others. It’s the totality of all the stars that make us who we are.

When I think about all that I strive to be in my life, how can I be so myopic to leave out the billions of others who make up the rest of the picture? Without the others, I’m no work of art - I’m just a dot in the sky.

Last weekend, the night sky reminded me that I’m living in a masterpiece - intricate, imperfect, and inspiring.

Subway as a software


I had Subway twice today - lunch and dinner. Same sandwich too. Kind of sad, but whatever. At least I got an idea for a blog post.

People always rave about how great Subway is and I agree. Healthy, affordable, filling - my main criteria when evaluating what to eat. I’ve never thought much about the operations of it all though. I was staring at the boxes of veggies and thought to myself, “this looks like a piece of software”.

One great advantage Subway has is that it can easily swap out an empty veggie box with a full one and carry on. The boxes can be re-ordered, new boxes can be added if new veggies are introduced, and I imagine they’re easy to clean and store. Very modular - just like good software.

A modular business can be powerful in its adaptability. Something like Project Ara, which allows you to build your own phone based on the components you want. Not every business can do this, but I believe the more modular a business is, the faster it can adapt to its environment.


Coal Harbour


Since I’m heading off to Toronto soon to participate in The Next Founders program, I want to take some time and reflect on how beautiful my home for the last year is.

I live in Coal Harbour, which is right by Stanley Park, and is considered one of the nicer areas of downtown Vancouver. I can’t afford it, but luckily I’m renting from a family friend who can, and can afford to give me a steep discount.

From my window, I can see the Second Narrow’s Bridge in the distance, spanning an often glittering calm of water. In the summer, I often worked on the balcony with a cup of tea at hand. I had to reposition myself at various hours of the day to avoid the intense glare coming off of nearby condos - some of which were constructed at artsy, impractical angles, seemingly designed to blind balcony loungers such as myself.

A few steps from my condo is the actual harbour, where multi-storey yachts are covered up by tarps for most of the year. You can walk up and down the promenade and catch at least five different languages within 15 minutes. Though the area has many tourists, it doesn’t feel touristy. Locals jog and cycle along the waterfront and most of the benches are occupied by whispering couples, gossiping friends, or pensive souls staring at the mountains on the north shore.

There’s a community centre as well, where the studios have floor-to-ceiling windows. One can often see rows of adults doing yoga, girls doing ballet, or out-of-control kids running around in Taekwondo uniforms, kicking to their hearts content.

In the other direction, you have Stanley Park, where many people walk, bike, or rollerblade. The tall trees and greenery are a welcome respite from the glass and steel towers of the city. From the park, you can see the Vancouver skyline, the neat gas station in the middle of the water, and Canada Place, with its iconic white sails pointing towards the sky.

And that is but the surface of it all. I can recall fond memories at each of these places - memories which, if reflected upon years later, will still make me smile. What a lovely place. I feel so lucky.

Do one more


What’s the last thing you want to do after 30 push-ups?  One more push-up. Yet, that’s exactly how the RCMP trains its officers, and that’s how they trained me when I was at the RCMP Youth Academy back in 2005.

The picture above is of me and the Corporal (I forget his last name).  In addition to the work he’s done for the RCMP, he helped train the British troops before they were sent to Iraq.  I remember when our bus pulled up to the academy, he came on the bus with his cane and yelled, “Everyone off!  Give me two straight lines!”


"WHAT ARE YOU WAITING FOR?!"  At which point we understood and everyone clamoured for the door.  I found the situation amusing, so I started laughing.  And that’s how I received the honour of being the first cadet to receive push-up punishments from the Corporal.

It wasn’t the last time I’d be doing push-ups there.  Aside from the 5:30a.m. personal training push-ups, people did push-ups for all sorts of mistakes: dozing off in workshops, having your pillow at the wrong end of the bed during inspection, or even calling an officer “sir” instead of their rank (“sirs don’t work for their money” being the common retort).

At the end of each set of push-ups, which we counted out loud, we were instructed to yell, “And one more for the Queen!”, at which point we would do one more push-up.

I’m not espousing a return to the monarchy; rather, I’m espousing the spirit of doing one more when you feel like you can’t anymore.  Because you can, and it often pays off.

Since then, whenever I’ve had to slog through something, I’ve always tried to do one more at the very end.  It could be when I was knocking on doors drumming up sales for my College Pro franchise, doing practice questions for an exam, or when I feel like calling it after 29 straight days of coding.  And each time I do it, I find myself picking up one more lead, getting one more question right, or discovering one more bug.  It’s like magic.

The other day I spent the entire afternoon reaching out to people who might be good Time Auction rewards.  I wanted to stop, but I figured I should do one more.  And that’s how I was able to get the Editor in Chief of the Toronto Star to be a Time Auction reward.

So whatever it is you do, do one more.

Fail fast


There’s a neat little command you can add when you want to run the tests to your code.  I use rspec, and you can type:

rspec --fail-fast

And what will happen is that the system will start running your tests and then freak out as soon as something fails.  This is in contrast to running it without “fail fast”, which runs all your tests and then tells you a summary of what failed.

One of the benefits of fail fast is speedy iteration.  If I catch something wrong early and I fix it, that fix might apply to later problems as well, hence saving time.  Also, in a situation where you are striving for perfection - as we do with automated testing in programming - one fail is as bad as 50 fails, so you might as well know earlier than later that something is wrong.

During one of my idle moments of thinking and pondering, I extended this philosophy beyond testing code and into the realm of the real world.  What if I added “fail fast” to my career?

Let’s say I was rejected by someone I reached out to professionally.  Should I automatically regroup and change how I approached the person?  Not really.  Unlike coding, life operates more on statistics.  You may have the best pitch in the world but you just happened to pitch the one person that will never like your idea.  Better to gather more data points before calling in a fail.  Sort of like:

career --fail-enough-times-to-know-it-is-a-fail


career --fail-smart

Though we may never reach perfection - even 100% passing tests doesn’t mean you wrote all the right tests or tested correctly - fast iteration can be smart if done correctly.

So next time you hit a fail, rejoice!  You’re about to save some time.

30 days


Apparently I like to code.  For the past 30 days I have committed and pushed code to GitHub.  Some days more (51 commits) some days less (3 commits).

To be honest, there have probably been longer streaks - the blank periods in the graph can all be explained.  Before March, I didn’t know how to code (pushed a few things as part of a tutorial).  In June, I did contract work for LegalReach, which is under a private repo.  From August to November, I was working full time at AxiomZen, on the Twenty20 product, which is also under a private repo.

The commits that you can see are on all sorts of different projects - a piece of contract work for some ex colleagues, re-architecting FlyShortcut, a 3-day hackathon, updates to JustSayWen, TO Tablets stuff, a yet-to-be-reveiled project with my friend Kevin, and my favourite - remaking Time Auction, the demo of which is now live at

I’d love to keep going.  Really.  Coding has become part of my daily routine.  It’s common that I dream of code.  It’s the weirdest thing.  I’ll dream of getting stuck on a problem that doesn’t exist, dream of solving it, and waking not having a clue what happened, only that I solved something and it felt good.

Actually, come to think of it, that’s probably how I think about the problems I work on while awake.  In the thick of it, I think, “Why can’t I solve this?!  This is SO important!”  And when I solve it, I think, “…was that really worth an hour and a couple handfuls of hair?  What did I solve again?  Oh ya, I was able to use callbacks to create nested has-many objects while reloading the factory sequence so that I can cleanly test my model methods - something that nobody will ever see”.

I’m off to Asia for three weeks.  When I get back I’ll be hitting the ground running on the business side of Time Auction, so I may start dreaming about things other than coding.  Which is why I got into coding in the first place - to build a business.  Perhaps I’ll start living my dreams.

A little treat

When a puppy does something wrong, everyone is familiar with the training methods of saying no, spraying water, or raising your voice.  And when they do something right, we reward them with a treat.

At least for myself, I think I don’t do that latter part as much.  I’m hard on myself when I make a mistake, but I’m not as rewarding to myself when I do something good.  Even if it’s something as simple as taking a small break when I finish a task - we are all animals after all.

One caveat.  The puppy in the picture is a clever little puppy called Boshin (Korean for a type of dog soup…).  When she goes to pee in the right spot, everyone says “good girl!” and we give her a treat.  Then we start noticing that she sometimes pretends to pee and then comes to ask for a treat.  Or maybe she pees only a little.  I will need to keep in mind that the only person I’ll be tricking is myself if I decide to pull such tricky antics.

I just completed the MVP for yesterday so I took a bit of time for myself.  I liked it.  I guess this puppy still has a lot to learn.



A few years ago my friends and I started a tradition where we would go count down to the new year at my friend Andrew’s cemetery plot.  He passed away on Sept. 20, 2007 from Olfactory Neuroblastoma.

There’s too much to say about Andrew for me to write down in a blog post, and I’m probably not ready for that yet anyways.

One thought that came into my mind at the cemetery this year was the topic of tradition.  Often times I think traditions are silly.  As Mark Twain says in the Adventures of Tom Sawyer, “The less there is to justify a traditional custom, the harder it is to get rid of it”.  Why do people have to tell kids that Santa is real?  Why do people have to buy a wedding ring or get married?   Why do people have to give red bags to each other knowing that they will give you one too, and it might be awkward if one is greater than the other?

I’ve come to realize more and more that one good reason to keep up a tradition is the beauty of it.  Like art.  There’s a depth to each work of art that cannot be seen on the surface - layers of stories buried beneath the one we see.

This art is beautiful to me, for reasons too great to tell.  Happy 2014 Andrew.

Easy as pie

You may know me to cook as follows: chop everything up, throw everything into a frying pan, serve.  When it comes to food, I value speed, volume, and frugality.  It’s no wonder baking a pie for a potluck wasn’t exactly up my alley.

Right before I had to bake the pie, I was writing up some code for my latest hack project.  I kept delaying the inevitable because it seemed so daunting to me - how does one bake a pie?!  I’d rather stick with code - at least it tells me when I’m doing something wrong.

A couple hours before we had to leave, my girlfriend finally said to me, “You know all those codes and commands you type onto the black screen and out comes a website?  If you can do that, you can bake a pie.”  Well said.  A year ago, I did not know how to program and after going to Dev Bootcamp apparently now I’m one of the top 8% most active Ruby users on GitHub.  Someone even made a jingle about me.  With a little persistence and patient guidance, the mysterious can be made easy.

The picture is actually the pie I made!  I think it’s too sour and some parts are a little burnt, but those things can be refactored.  The important lesson is that running away from the unknown only makes it more scary.  Once you face it, it can be as easy as pie.

Bus ride back in time

There’s something special about the bus I take to and from Vancouver.  It’s not magic or double decker; instead, it can go back in time.

The reason I say this is because quite often I see someone I haven’t seen for a while on the bus.  Having always lived elsewhere since high school, the rare occasions I come home usually allow me to bump into someone and have a good chat catching up while the bus rumbles along the highway.  Yesterday I bumped into my friend Devin, and we had a nice chat down memory lane.

I’m also fascinated by how well our mind works to recognize people after so long.  Devin looks quite different now than when I last saw him, and yet somehow I was able to recognize him quite easily.  It’s great to hear about what everyone is up to.  Kind of like taking a bus ride into their lives, stopping at the major events and moving on to the next.

For you keeners, I realize that the Totoro Catbus does not go back in time, but it does provide a bit of magic, and I was never into the Magic School Bus (though I have taken this bus in Toronto a few times and the below decked out bus when I was in Nicaragua).  It makes me look forward to taking that bus, never knowing whose path I’ll cross, and where this bus will take me today.