Side Projects


A programming language that uses prefix notation for amusement purposes: for example, a = (b + c) * d looks like = a * + b c d. Nitwit is imperative, strongly typed, and uses reference-counting garbage collection. The Nitwit compiler produces C code, which can then be compiled to an executable.

Retroactive Priority Queue

A priority queue that supports adding and removing updates (insert and delete_min) on past versions of the data structure. Retroactivity differs from persistence in that the effects of changing past operations propagate to the present (think, Back to the Future). I implemented the data structure proposed by Demaine, Iacono, and Langerman, which performs all operations in logarithmic time.


A top-down 2D game where you collect coins while avoiding guards on patrol. The area each guard sees (their visibility polygon) is computed in O(n log n).


A two-player platformer where players cooperatively solve puzzles made out of logic gates. Provides real-time multiplier using WebSockets.

In Bulgarian, “Vali li?” means “Is it raining?” This website has the answer!