Khan Engineering

Khan Engineering

We're the engineers behind Khan Academy. We're building a free, world-class education for anyone, anywhere.


Latest posts

Making Websites Work with Windows High Contrast Mode

Diedra Rater on March 21

Kotlin for Python developers

Aasmund Eldhuset on Nov 29, 2018

Using static analysis in Python, JavaScript and more to make your system safer

Kevin Dangoor on Jul 26, 2018

Kotlin on the server at Khan Academy

Colin Fuller on Jun 28, 2018

The Original Serverless Architecture is Still Here

Kevin Dangoor on May 31, 2018

What do software architects at Khan Academy do?

Kevin Dangoor on May 14, 2018

New data pipeline management platform at Khan Academy

Ragini Gupta on Apr 30, 2018

Untangling our Python Code

Carter J. Bastian on Apr 16, 2018

Slicker: A Tool for Moving Things in Python

Ben Kraft on Apr 2, 2018

The Great Python Refactor of 2017 And Also 2018

Craig Silverstein on Mar 19, 2018

Working Remotely

Scott Grant on Oct 2, 2017

Tips for giving your first code reviews

Hannah Blumberg on Sep 18, 2017

Let's Reduce! A Gentle Introduction to Javascript's Reduce Method

Josh Comeau on Jul 10, 2017

Creating Query Components with Apollo

Brian Genisio on Jun 12, 2017

Migrating to a Mobile Monorepo for React Native

Jared Forsyth on May 29, 2017

Memcached-Backed Content Infrastructure

Ben Kraft on May 15, 2017

Profiling App Engine Memcached

Ben Kraft on May 1, 2017

App Engine Flex Language Shootout

Amos Latteier on Apr 17, 2017

What's New in OSS at Khan Academy

Brian Genisio on Apr 3, 2017

Automating App Store Screenshots

Bryan Clark on Mar 27, 2017

It's Okay to Break Things: Reflections on Khan Academy's Healthy Hackathon

Kimerie Green on Mar 6, 2017

Interning at Khan Academy: from student to intern

Shadaj Laddad on Dec 12, 2016

Prototyping with Framer

Nick Breen on Oct 3, 2016

Evolving our content infrastructure

William Chargin on Sep 19, 2016

Building a Really, Really Small Android App

Charlie Marsh on Aug 22, 2016

A Case for Time Tracking: Data Driven Time-Management

Oliver Northwood on Aug 8, 2016

Time Management at Khan Academy

Several Authors on Jul 25, 2016

Hackathons Can Be Healthy

Tom Yedwab on Jul 11, 2016

Ensuring transaction-safety in Google App Engine

Craig Silverstein on Jun 27, 2016

The User Write Lock: an Alternative to Transactions for Google App Engine

Craig Silverstein on Jun 20, 2016

Khan Academy's Engineering Principles

Ben Kamens on Jun 6, 2016

Minimizing the length of regular expressions, in practice

Craig Silverstein on May 23, 2016

Introducing SwiftTweaks

Bryan Clark on May 9, 2016

The Autonomous Dumbledore

Evy Kassirer on Apr 25, 2016

Engineering career development at Khan Academy

Ben Eater on Apr 11, 2016

Inline CSS at Khan Academy: Aphrodite

Jamie Wong on Mar 29, 2016

Starting Android at Khan Academy

Ben Komalo on Feb 29, 2016

Automating Highly Similar Translations

Kevin Barabash on Feb 15, 2016

The weekly snippet-server: open-sourced

Craig Silverstein on Feb 1, 2016

Stories from our latest intern class

2015 Interns on Dec 21, 2015

Kanbanning the LearnStorm Dev Process

Kevin Dangoor on Dec 7, 2015

Forgo JS packaging? Not so fast

Craig Silverstein on Nov 23, 2015

Switching to Slack

Benjamin Pollack on Nov 9, 2015

Receiving feedback as an intern at Khan Academy

David Wang on Oct 26, 2015

Schrödinger's deploys no more: how we update translations

Chelsea Voss on Oct 12, 2015

i18nize-templates: Internationalization After the Fact

Craig Silverstein on Sep 28, 2015

Making thumbnails fast

William Chargin on Sep 14, 2015

Copy-pasting more than just text

Sam Lau on Aug 31, 2015

No cheating allowed!!

Phillip Lemons on Aug 17, 2015

Fun with slope fields, css and react

Marcos Ojeda on Aug 5, 2015

Khan Academy: a new employee's primer

Riley Shaw on Jul 20, 2015

How wooden puzzles can destroy dev teams

John Sullivan on Jul 6, 2015

Babel in Khan Academy's i18n Toolchain

Kevin Barabash on Jun 22, 2015

tota11y - an accessibility visualization toolkit

Jordan Scales on Jun 8, 2015


Hackathons Can Be Healthy

by Tom Yedwab on Jul 11, 2016

As an organization whose raison d’être is learning - we in fact have a campaign called “You Can Learn Anything!” - having a dedicated time where anyone at Khan Academy can tackle a new problem and learn something by doing is kind of a no-brainer.

Most software engineers I know have a strong creative impulse - so strong, in fact, that no matter how interesting our workdays, we can’t help thinking about unexplored software frontiers in our downtime. For example, we make open-source contributions, start independent projects, and some gather with friends for hackathons. As a company we recognize that this innate drive for creativity exists and that letting everyone on the team (not just engineers) express it can bring the team closer and make the company substantially better. This is why twice a year we take a break from our projects so we can focus on our internal company hackathon.

Why hold a hackathon? Clearly, hackathons are a fun and exciting event: Hackers form teams to collaborate on projects, share ideas over catered lunch and dinner, and demo something amazing. Winners are chosen, and sometimes the ideas become real products later on, but this isn’t the hackathon’s goal. Reflecting on our favorite experiences, we found that being able to work with others you don’t normally work with is a good way for the team to get to know each other better and bond a bit more. We also feel a sense of release of pent-up energy and a morale boost as all the constraints of building production systems and careful design and testing fall away. Most importantly, it allows individuals and the organization as a whole to learn a bunch of new things and explore areas that were previously unknown.

However, hackathons can have a bit of a dark side. Traditionally, they run through the night, provide primarily junk food like pizza and energy drinks, and are generally unfriendly to those who might have families or responsibilities outside of work. As a team committed to sustainable, healthy lifestyles, we choose not to subject ourselves to this. That’s why we branded our first internal hackathon the “Khan Academy Healthy Hackathon” back in 2012.

Of course, just calling a hackathon “healthy” doesn’t make it so. Over the years, we’ve experimented with several formats to find the one that feels most inclusive (everyone in the company can participate) and sustainable (everyone is rested and healthy at the end and can resume a normal schedule immediately). We tried a few different formats; here’s some of what we learned:

1. It's not that hard to be healthy

Our methodology is simple:

  • Kick everyone out at 11:45pm and don’t allow them back in until 9:30am. (Do people cheat? Probably, yes. But working through the night is definitely not the norm.)
  • Cater healthy meals for lunch and dinner. No piles of junk food or energy drinks.
  • Schedule breaks to do yoga, outdoor activities, or improv to get people out of their seats periodically.
  • Don’t take things too seriously:
A few hackers got dressed up for the occasion

Can you guess the theme?

2. “Hack weeks” are more inclusive, but weekend hackathons feel more relaxed

I have a family at home and obligations that often keep me from attending weekend events at work. I’m not against having a company hackathon that starts Friday night and runs through Sunday, but having one that I can also attend feels great and gives me a chance to share my ideas as well.

Our initial take at an alternative was a week-long (Friday to Friday) Healthy Hack Week, which meant that everyone could attend at least 5 days, with some coming in over the weekend as well. The consensus was that, fun though it might have been, there was a definite decline in energy around Wednesday and productivity fell noticeably. I also observed that a lot of projects were scoped far more optimistically than a two-day project would be (“think what we can get done in a whole week!”) and the result was a few projects that weren’t ready for a demo at the end.

This year we compromised and for our first hackathon in February we scheduled it Monday to Friday, which felt very natural and was fairly easy to plan for in advance. All running projects could simply omit that week from their planning, and all meetings were canceled.

The other side of the compromise is to still do a weekend hackathon in July (this week in fact!), when the summer interns will be able to join in. This has the advantage that it won’t require us to sacrifice another whole week from all our projects (interns are with us for precious few weeks in the first place) and it has a more relaxed feel since it’s outside work hours.

3. Brainstorming is best done in advance

A hacker participating in a fun kickoff event

Have you guessed yet?

This February we happened to have Hack Week scheduled the week after our company off-site. One of the activities during the off-site was to draw our ideas on post-it boards and hang them around the room, science fair style. The goal was to drum up support for the really cool ideas and get people to collaborate on them. This was wildly successful and got everybody totally pumped to work together.

We had also just spent a lot of time discussing company goals and strategy, and so everyone’s mind was laser focused on the critical challenges facing Khan Academy in the coming year. As a result, almost all the projects seemed to explore and inform the direction our existing and upcoming products were heading. While some demos were prototypes of technologies we would later ship (including one project that provided a blueprint for a major performance improvement initiative), others were educational, thought-provoking or inspirational.

4. A theme can go a surprisingly long way

When planning our Healthy Hack Week, the discussion quickly turned to planning a theme for the decor and events. I must admit I was skeptical at first that this was necessary, especially when we settled on a theme having to do with a certain fictional wizard. There is, in fact, no particular connection between what we do and that fantasy world, so I figured it would just be good fun to dress up and everyone would quickly forget and focus on their projects.

The reality was much, much better than that.

Immediately once the theme was suggested, we hit upon the idea of sorting everyone in the company into houses (yes there was a sorting hat and a ceremony, and yes it was a riot). That led to the idea of being able to award points to the houses, and since no one felt particularly qualified to dole these out our own Eli Feasley built a Slack bot as a pre-hackathon hack project to track the house points.

Here is how it actually turned out:

Hackers giving points to houses as a way of showing thanks to individuals

J.K. Rowling please don't sue us

This was probably the most surprising highlight of the hackathon: a simple bot and some randomly-assigned teams led to spontaneous outbursts of appreciation and recognition between team members! Folks from across the organization who happened to be assigned the same house had something in common and something to talk about at lunch, sitting under their house’s banner.

It was actually a little bit painful to go back to work as usual, and there was a strong temptation to keep the houses long-term. We may yet bring the idea back in some form, if only for the next hackathon.

Hackathons are one of my favorite things we do at Khan Academy and have been the source of some of our most creative and thought-provoking new ideas. If you are planning a hackathon yourself I hope you find some of these findings helpful. If you do, drop me a line (tom at and let me know how it turned out!

Big thanks to Hillary Acer for organizing the whole mess, Eli Feasley for writing the Hogwarts Bot and the whole Khan Academy team for participating!

A fun outdoor activity where my house just happened to win