Unifying Dynamic Type Tests and Type Refinement

Sunday, September 3rd 2017

Programs often need to perform different actions based on the type of an object.

Stackless vs. Stackful Coroutines

Friday, August 18th 2017

It’s 2017 and coroutines are coming to a language near you. Javascript has generators, and is getting async/await functions, while C++ is getting coroutines as part of the N3858 proposal. However, coroutines in languages differ in that some languages support stackful coroutines, but others only support stackless coroutines.

This terminology is a little bit confusing - you might wonder how it’s possible for a coroutine to not have a stack.

Spaced Out - CS148 Ray tracing Project

Tuesday, June 6th 2017

This write-up was initially the README for a private repo only the TAs could see. I decided to repost the write-up here, separate from the code. The project is from 2014.

CS148 Final Ray Traced Image, created by Harrison Ho and Varun Ramesh.

Our idea was to represent a tabletop game that the players imagine is actually taking place in space.

Automatically Promoting Constructor Parameters to Fields

Thursday, March 30th 2017

When writing object-oriented code, you frequently want a constructor that takes in values and assigns them to object fields.

Runaway Robot - A Mobile Runner Game

Wednesday, March 29th 2017

This quarter, I worked with three other students on a mobile game called Runaway Robot. The game, made in Unity, is a side-scrolling runner featuring mechanics like gravity reversal. All of the music, all of the code, and a large portion of the art was made from scratch. The code is open source and can be found at