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 had the good humour to find 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 President and Editor-in-Chief of Techvibes to be a Time Auction.

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.

Homeless valet


"And then he attacked me with a chain, so I grabbed a mop and went all Bruce Lee on him you know?"  Said the homeless man, whom I shall call Y.  He chatted heartily with us while signing his name on the blank housing papers that will likely all be rejected.  This is due to his unwillingness to be transparent with his source of income - gambling.

Last week I went to check out a volunteering opportunity my girlfriend looked up for us.  It is an outreach program that provides information and resources to help homeless people survive.  During the day they have office hours, and on certain nights of the week, they hit the streets to distribute food, blankets, and other helpful resources.  I’ve been out of the volunteering loop for a bit now, and since I’m in control of my own schedule these days I figured I’d get back into it.  Plus, I’m going to make Time Auction my major project so this is a good way for me to better understand the scene.

It took us awhile to even get a hold of the program manager.  We later learn that he gets about 50 voicemails a day and is constantly out helping clients.  According to Y, “He’s the real deal.  Many people out there - they just pretend to care.  God will judge them - if a judgement day does come.  But him.  He can actually help.”  We sat down with the program manager and started seeing how we could help Y.  Y suffers from severe cellulitis, to the point where his right leg is literally twice the size of his left leg.  He’s overweight (likely diabetic) and smells of damp, unwashed clothing.

Y tells us that he recently got kicked out of a specific social housing unit and has been staying at another one that he absolutely hates, due to the fact that they force-feed him religion along with their aid.  The program manager patiently tells Y of a few new places that have come up and asks if Y would like them.  He refuses to live in North Van (“some gangs are still after me there”), the East Van locations (“I know that landlord, they’re sneaky”), or anywhere that’s too far away.  Initially surprised, I eventually realized that sometimes beggars deserve to be choosers - if they have no respect for themselves, how can they ever turn their life around?

After the paperwork, we give Y a few things to take away.  He’s ecstatic about an old piece of two-wheeled luggage that the program manager gives him.  ”Now my doctor’s notes won’t get dirty from the food I put in my bag”.  He also takes some canned food and juice.

We decide to drive him back to wherever he wants to go.  As we’re driving through downtown, Y says just up there is fine.  He points to the Fairmont Vancouver City Center, the iconic four-star hotel that sits right in the middle of downtown Vancouver.  He asks us to turn into the valet parking area, where Mercedes SUVs are unloading tourists and luggages carrying people’s getaway gear.  As I help unload Y and his life belongings, I become painfully aware of the stark juxtaposition of wealth and poverty - in my own neighbourhood no less.  Y with his blackened foot, no shoes, and dirty belongings walking away from the glittering four-star hotel.

I start my first shift next Tuesday.