Khantemplations: A Khanpilation of thoughts on life and work

14 Jan 2015

Dear colleague,

Hi, I’m David. I just graduated from college earlier this year, and I just started full-time a month ago.

As a student, life has always been structured with a clear next step and short-term goals. Get good grades. Get into university. Get a job.

But what now? I have no one to answer to now. No one to enforce rules or set expectations. No clear directions or structure.

Should I work hard at work? Make new friends or maintain existing ones? How do I find a soulmate? Should I climb our corporate breadmaster hierarchy ladder,  and strive for the coveted Assistant Breadmaster title?

In the process of...

Continue reading...

Open-Sourcing UW Flow

28 Feb 2014

We’re really excited to be open-sourcing — a project that three friends and I have been working on for the past year and a half.

Here’s some highlights:

  • Flow lets University of Waterloo students plan courses with friends.

  • Some numbers:

    • Last month, we served 40K pageviews to 9K unique visitors.
    • Last year, users made 480K searches.
    • In total, users have contributed 47K ratings and reviews.
  • Who made this:

  • We’re open-sourcing with the permissive MIT license because we want anyone to be able to fork and host this for their school.

  • Check out the code on GitHub, and come talk to us in our public chat room!

Read on for how we started and why we’re open-sourcing.

Continue reading...

Start with Mockups

25 Sep 2013

My friends and I are working on a side project — a course planning website for our university. We decide to add a new feature that involves some UI work. My friend goes off to hack on it. 300 lines of code later, he’s done part of the UI and shows it to us. Here’s what it looks like:

UW Flow manually select course prototype

It lets you add a course (done) for a specific term (not yet done).

We discuss this for a few minutes, and realize that the extra information in the dropdown isn’t necessary in this context. At this point, the user has a course in mind and just needs to find it, so all that’s needed is the course code and name. Something like this (with Select2):

UW Flow manually select course prototype 2: small version

Being smaller, we can place this dropdown next...

Continue reading...

Why Interns should Blog

14 Sep 2012

At the University of Waterloo in Canada, all engineering students enroll in a co-op program (“co-op” is Canadian for internship). We alternate between four months of work and four months of study, graduating after five years with eight study terms and up to six co-op terms (two years of work experience)! Consequently, there’s usually Waterloo interns at many tech companies in Canada and the USA.

Now, for software engineering students in my class, we’re required to write technical work reports that usually ends up being 20 to 30 pages or longer, for four co-op terms. The goal is to assess judgement and writing ability, but the format is very rigid and unsuitable for many development internships.

One day, it occurred to me what a great win it’d be for everyone if even a portion of this effort could be turned into public blog posts. To illustrate the potential, of the 80ish students in my class, just...

Continue reading...

Announcing Numbers API

05 Mar 2012

tl;dr: Check out Numbers API for interesting facts about numbers.

Back when I was interning at Khan Academy a few months ago, my intro project was to create a dashboard for exercise statistics. Among the variety of graphs and widgets was one that reported a factoid about the number of shipped exercises, such as “We now have more exercises than the number of years Harriet the Galápagos tortoise lived (1830–2006).”

People seemed fascinated by their tidbits of random trivia. Sal Khan even suggested hosting a web service for these facts at, but nothing came of that. That is, until now.

My friend Mack and I were deciding on a side project to distract our minds from Bode plots and Jacobians (if only Sal had some videos on Control Theory…), and narrowed down a crapload of ideas to just one. The winner was an API for interesting number facts, based on the...

Continue reading...

My Experiment in Daily Idea Generation

05 Jan 2012

I’ve long had the fear that, should I ever want to do a startup, I wouldn’t have an idea that I wanted to passionately pursue. So, for about a year, I’ve been passively maintaining a list of any idea that pops into my head as a Google Doc. With about 40 items on that list, there wasn’t anything that hadn’t been done that I thought was particularly compelling. Then, one day, a meta-idea popped into my head: what if I spent 10 minutes every morning actively generating ideas, writing down any thought I get in a stream-of-consciousness, unfiltered fashion? I could just cut back my morning Reddit + Hacker News + RSS reading.

Would there be anything interesting? How many would I get? Would the volume trickle off after a few days? Would it increase the rate of passive ideas that pop into my head? Would it nurture my creativity and engender greater right-brain activity (whatever that...

Continue reading...

On my Internship at Khan Academy

05 Jan 2012

In true Khan Academy fashion I made a video to sum up my internship, at the suggestion of our lead developer Bengineer Kamens. I was not very good at emulating Sal Khan, so the video just evolved in my own style. As I became more and more sleep-deprived, I became less and less rational, and re-recorded some parts I thought were boring. Consequently, some speech is difficult to make out, so you can just read the transcript below or enable captions.

Anyway, the video is not meant to be taken too seriously; I’m not actually that crazy in real life (but I may be if sleep-deprived :P).

(EDIT: Yes, that is actually my voice, although I’ve been told it doesn’t sound like me in real life at all.)

Once upon a time on the internet, there...

Continue reading...

How Khan Academy is using Machine Learning to Assess Student Mastery

02 Nov 2011

See discussion on Hacker News and Reddit.

The Khan Academy is well known for its extensive library of over 2600 video lessons. It should also be known for its rapidly-growing set of now 225 exercises — outnumbering stitches on a baseball — with close to 2 million problems done each day.

To determine when a student has finished a certain exercise, we award proficiency to a user who has answered at least 10 problems in a row correctly — known as a streak. Proficiency manifests itself as a gold star, a green patch on teachers’ dashboards, a requirement for some badges (eg. gain 3 proficiencies), and a bounty of “energy” points. Basically, it means we think you’ve mastered the concept and can move on in your quest to know everything.

It turns out that the streak model has serious flaws.

First, if we define proficiency as your chance of getting the next...

Continue reading...