RSSAmplifier

Blog

Matt Faus

mattfaus.comRSS feed ↗10 posts

Latest posts

Speeding up GAE Datastore Reads with Protobuf Projection

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…

Building a machine learning pipeline in Google’s Cloud

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…

Khan Academy Mastery Mechanics

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

Improving Khan Academy’s student knowledge model for better predictions

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…

Data engineering at startups

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

BigQuery at Khan Academy

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

How to ignore exceptions within an appengine datastore query

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…

Automating Funnel Analysis with the MixPanel API

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…

Machine Learning Learning: Coursera Reviews

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

Efficiently Querying the YouTube API with Google Appengine Pipeline

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