Like most frameworks these days, the Google Appengine (henceforth, GAE) SDK provides an API for reading and writing objects derived from your classes to the datastore. This saves you the boring work of validating raw data returned from the datastore and repackaging it into an easy-to-use object. In particular, GAE uses protocol buffers to transmit Continue reading Speeding up GAE Datastore Reads…
Khan Academy uses a few statistical models to personalize content around the site. One of the most important, the knowledge model, has been discussed on this blog before. The process of training these models: gathering data, training parameters, deploying parameters, and monitoring parameter performance, is tedious. I set about to automate as much of this Continue reading Building a machine…
If you’ve used Khan Academy, I’m sure you’re familiar with this graphic. It is shown at the end of each task to inform you of how you have progressed. You may not be familiar with the (somewhat complex) mechanics behind how students progress through each level of mastery, and that’s what I hope to clarify. Setting Continue reading Khan Academy Mastery Mechanics
Recently, I have been working on improving Khan Academy s user knowledge model to get better predictions on how each student will perform on exercises. We use this model for many things including assessing a student s mastery of an exercise, and recommending the next piece of content that they work through. The following is an overview of the Continue reading Improving Khan Academy s student…
I’ve spent the last year on the data science (a.k.a. analytics) team at Khan Academy. Here are some of the lessons I have learned during that time. These lessons won’t apply to everyone, but if you’re working at a small company that fosters a data-driven process across the company, they should help you be more Continue reading Data engineering at startups
Previously, I wrote about the three frameworks we use for data analysis at Khan Academy. Since then, we have automated the export of production data into BigQuery and are regularly using it to perform analysis. We have all but deprecated our Hive pipeline and things are going great! Here, I’ll go over what has gone Continue reading BigQuery at Khan Academy
Let’s say you have a bunch of entities stored in Google’s AppEngine Datastore, and you want to run a query over all of them, but you don’t really mind if a few are missing. For example, computing summary statistics over log files. class LogRecord(ndb.Model): message = ndb.StringProperty() query = LogRecord.query() for record in query: update_statistics(record.message) Continue reading How to…
The content on Khan Academy is organized into a large taxonomy that breaks down by Domain, Subject, Topic, and Tutorial. For example, information about quadratic equations is located in the Math domain, Algebra subject, Quadratic equations topic, and the first tutorial is titled Solving quadratics by taking square root. Our content creators have organized these Continue reading Automating Funnel…
Since moving to the analytics team at Khan Academy, I have endeavored to grow my knowledge and skills in machine learning and data analysis, to help balance my data science venn. Thankfully, there are quite a few free online courses available at Coursera that cover these topics in great detail. Over the second half of Continue reading Machine Learning Learning: Coursera Reviews
Sometimes a user on your website clicks a button, and you need to do some pretty heavy lifting in the backend to make the magic happen. But, you don’t want to make the user wait for this magic to happen, and the work required may exceed appengine’s 60 second request deadline. An easy way to Continue reading Efficiently Querying the YouTube API with Google Appengine Pipeline