Designing a custom Monitored Training Session

11 Oct 2017

The tf.train module defines a helpful utility function tf.train.MonitoredTrainingSession that handles a lot of the training boilerplate in an elegant way. Recently, I’ve found limitations in its design, so I decided to build my own version. Read more

A bug hidden in plain sight

10 Oct 2017

Last week, I started searching for the origin of an odd bug. It turned out to be one of the more rewarding bugs to solve—unlike a variable misassignment or scoping issue, which might be straightforward (and somewhat mechanical) to resolve after finding the particular place that breaks the system, this bug deepened my conceptual understanding of the system that I had implemented and its underlying components. At least in retrospect, I’m glad I made the initial mistake because now I am woke. Read more

Using Markov chains for basketball

09 Oct 2017

The NBA hackathon application process asked a fun question that I got excited about:

Given that the Warriors win a game with probability 0.800,
what’s the probability that they play an entire 82-game
season without consecutive losses?
Read more

Introducing arXivES

07 Jan 2017

I’ve been wanting to experiment with Elasticsearch for some time now, and I finally got around to it. Read more

All I want for Christmas

25 Dec 2015

A family member pilots passenger aircrafts for a large commericial (and purposely anonymous) airline. His employer provides an online flight exchange portal, which he and his colleagues use to “trade” their randomly-assigned flights in order to vie for consecutive weeks of vacation time. Read more

Making informed decisions on the application layer

24 Nov 2015

During the playtest session for our ACM puzzlehunt, I needed a tool to find an undisclosed list of words from the English dictionary in a word search. All of the existing tools required a list of search terms as input, and dumping exhaustive lists of words from the English dictionary usually crashed these applications. Frustrated by the absence of such a basic tool, I decided to build one and investigate the effect of application layer design decisions on network throughput. Read more

Teaching at Stanford Splash!

12 Apr 2015

Today I taught M4160: Hacking the Internet at Stanford Splash! I introduced the class to the basics of web development through “hacks” that exploited the DOM, event listeners, and the persistence of chrome extensions. To make it as accessible as possible to high schoolers, the course assumed minimal previous coding experience. Read more

Model-views with vanilla javascript

25 Nov 2014

I felt a javascript course like CS42: Contemporary Javascript ought to include course material and an assignment pertaining to one of the more popular modern backend frameworks, Node.js, and one of the more popular no-SQL datastores, MongoDB. With a couple of the other course instructors, I built another assignment. Read more