View as PDF file.
To download the PDF, right-click the link and select "Save
- January 2012 - April 2012 (in progress). Four month software engineering internship at Lolapps. Working with a team of engineers to push out new features and fix bugs for Lolapps' next social flash game. Using ActionScript 3.0 and Python.
- September 2008 - September 2010. Two years indie game development + freelance programming (web, desktop). Released 5 successful indie flash games, and worked on freelance projects for clients around the world and locally.
- Won the first WSOH (World Series of Hack 2011), a competition hosted by Mozilla wherein 300 software interns from Silicon Valley competed to build projects from scratch in 12 hours. Built a browsing history analytics tool for users (getsurfcontrol.com).
- One of 20 national finalists for the CCC 2010 programming competition (view results).
- Obtained 1st degree blackbelt in Shotokan Karate.
- Top ten national chess finalist for age group (1998 and 2002).
- Functional Programming: Experience with Scheme (Racket and R6RS). Familiar with functional programming concepts and able to apply them in other languages.
- Web Development: Years of experience developing PHP applications in LAMP/MAMP environments. Currently learning Python, Rails, and node.js.
- Algorithms and data structures: Deep understanding of most popular algorithms and data structures. Favorite data structures: bloom filters, and tries.
- Math 249 - Advanced Intro to Enumeration and Graph theory. Connectivity, planarity, matchings, colorings.
- CS 241 - Introduction to compilers. Wrote a compiler from a C-style language to MIPS.
- CS 145 - Advanced first-year CS. Covers a year’s worth of CS and more in 3.5 months.
Favorite Tools - Macbook, iTerm 2, Sublime Text 2, Github, Google Chrome.
Interests - Karate, Starcraft, kayaking, chess, fencing, music.
On the web - StackOverflow, LinkedIn
References - provided upon request.
Here are some examples of code I've written in various programming languages.
AVL Tree (Java)
The following two classes implement a generic AVL Tree. An AVL Tree is a binary search tree that automatically maintains minimal height, so that search times are optimal.
This is a C implementation of a trie. The trie is by far my favorite datastructure since not only can it can do more than a hashtable but it's just as fast as one too (if you have a hash function, that is - otherwise a trie's speed depends on key length).
make-memoized (Scheme R6RS)
Memoization is a popular optimization technique which allows pure functions to 'remember' previous results. make-memoized.ss provides a function called 'make-memoized' which takes in a function and returns a new version of it that uses memoization.