Chao Lam

Working on the next small things …

Tip: Refund $15 comcast xfinity starter kit

leave a comment »

I recently installed comcast cable internet service. Of course, I chose not to rent their modem for $10/month. Opening the account online was pretty painless, but it insisted on a $15 starter kit. Turns out the starter kit is just cable wire, a splitter and completely useless instructions.

The real instructions can be found at

I had to call comcast (via the ever helpful to get a refund for the starter kit, but it was surprisingly pain-free, hopefully comcast is improving…so it is worth calling Comcast for the $15 refund.

Written by Chao

January 27, 2017 at 12:54 am

Posted in Uncategorized

leave a comment »

If you’re using the rails jquery autocomplete gem and mongoid, you need to specify the gem *after* the mongoid gem!

i.e. in your Gemfile

gem ‘mongoid’
gem ‘rails-jquery-autocomplete’

Apparently, it checks whether mongoid is present before injecting some special mongoid methods!

Written by Chao

May 27, 2016 at 7:39 pm

Posted in Uncategorized

Neo4j questions

leave a comment »

Last week, I attended a free seminar on Neo4j and came back wondering why I’ve not looked into the delightful world of graph databases earlier! I’ve never really grokked relational databases in the sense that it’s never second nature for me to think of most everyday problems in terms of rows and columns. The biggest stumbling block I have is that it is still unnatural for me to think of a relationship between two things as being a column in a relational database. I understand it abstractedly but just not natively. Conversely, Graph databases address this issue directly and seem to have a much better mapping to what is intuitive in my head.

Of course, I’m very much a neophyte in the world of graph databases, and learning something new is always a delicate balance between sheer delight in discovery new ways of doing things and head-exploding frustrations. The best way for me to learn is to start on a concrete “next small thing”, and I’ve already hit some stumbling blocks I’ll like to get answers to:

I want a website like that let’s you track flights, but instead of showing what tickets and fares are available, they show you what airline awards are possibly available.

To do that I need to model each airline’s award chart.
1) Most loyalty program’s awards are based on regions such as North America, South Asia or Europe. But of course, each airline’s definition of regions are slightly different. Do we create separate regions as nodes for each loyalty program?
2) Another example of a tricky region: Almost all regions encompass an entire country (e.g. North Asia includes all airports in Japan). The glaring exception is that most airlines separate Hawaii as a separate region from the rest of the US. How do we model Hawaiian airpots as a region?

Once of things that attract me to neo4j is the schema-less nosql nature. You are much less locked into your initial design or schema and as you discover what your real needs are, your database structure can change much more easily.

However, change management is never free. What are best practices when dealing with changes? From simple node label orrelationship name changes to more complicated design changes? Are there pointers to good practices?

This current project requires loading from myriad of disparate data sources (airport codes, regions, award charts, rule changes, etc.). What are best practices to initially load in such data, and then to ensure that such data is up to date?


Written by Chao

April 22, 2016 at 7:27 pm

Posted in Uncategorized

The Instagram Paradox

with one comment

A16Z has a delightful interview of John Markoff‘s long view of Silicon Valley and technology in general. It discussed the oft-mentioned story of how a 13-person Instagram toppled Kodak (which Markoff disputed given how Fuji managed to thrive). But that go me thinking that the story of Instagram is even more endlessly fascinating.

Waaaay back in 2012, when Instagram was acquired by Facebook for over $1 Billion, it sent shock waves through the valley and general buzz was that Facebook way overpaid for a $0 revenue 13 person company. Today, the pendulum is on the other end where Zuckerberg is hailed as visionary and analysts are now predicting that Instagram could bring in revenues in excess of $2 Billion just next year.

The podcast dives into the popular topic of secular stagnation and “how technology is everywhere except in productivity number”. Besides the Clothelines Paradox (which posits that GDP is not measuring all that we produce), we are also facing an Instagram Paradox: in 2012, the “GDP” of Instagram was $0, but the total present value of GDP was a lot more than that, even $1 Billion screams cheap in retrospect.

So, instead of a secular stagnation, are we just in the nascent stage of another a huge technological renaissance where work done today isn’t creating much “GDP” today but is really laying the foundation for value created in say 2025?

Update: Michael Spence speaks more eloquently on this topic

Written by Chao

August 30, 2015 at 6:38 pm

Posted in Uncategorized

How to Find Fulfilling Work

leave a comment »

I want to do my own thing.

I want to live (relatively) simply.

I want to deal with people, not masks.

People matter. Nature matters. Beauty matters. Wholeness matters.

I want to be able to care

So begins on Freedom from a delightful pocket book titled How to Findfulling Work by Roman Krznaric. Other attributes of fulfilling work are flow and meaning. In meaning, Krznaric talks about not seeking extrinsic rewards such as money, status and fame but rather look for work that is autotelic or intrinsically rewarding, which involve doing things we are passionate about, or that we have an inherent talent for or that we can make a difference.

We are not called upon a vocation, but if we continuously do work that gives meaning, flow and freedom, with some luck, we could perhaps grow into a vocation

Written by Chao

July 20, 2015 at 9:44 pm

Posted in Uncategorized

Life Hack: Call your airline in the wrong time zone!

leave a comment »

If you need to talk to a global service provider (e.g. an airline) that has a long call waiting time, find a phone number for that provider in a time zone where people in that time zone are likely to be asleep!

e.g. If it’s 3pm in Palo Alto, I could call United Airlines in Sweden where it would midnight!

(learnt this from my excellent tracking hacking class/group)

Written by Chao

July 20, 2015 at 9:32 pm

Posted in Uncategorized

Tagged with

Tasks I’m still figuring out about the Apple Watch

leave a comment »

  • How do you play a podcast?
  • How do you shuffle songs? (answer: force touch is your friend!)
  • Why is activating Siri so unreliable? or is it just slow?
  • Can I turn off stand up tracking? Doesn’t seem very accurate

Written by Chao

May 1, 2015 at 11:52 pm

Posted in Uncategorized