I made a domain-specific programming language for parsing formal grammars within Swift, hoping to provide a more hands-on way to learn about languages.
I built tools for developers which would allow them to write tests and documentation for their software all in one place, and in the same languages which they use everyday.
I designed a modern alternative to awk: a lisp with powerful stream-manipulating primitives that makes for readable bash one-liners.
I rethought the graphing calculator, basing its use on a very terse and powerful programming language: APL.
I made an interactive drawer of chemical formulae which can illustrate the structure of any molecule.
I made a tool that lets any developer record his screen & audio from the command-line and then share the recording with the world.
I sold a graphing app to thousands of iPad users across the nation. I designed and implemented all functionality.
After talking to a sample of schools, I designed an iPad app to solve the many problems which they had encountered with their existing software and then marketed it to schools across the nation.
I cofounded a tech startup to provide athletes with peer-based learning. I contributed to vision and managed a team of developers
I made a webapp for drag-and-drop file transfer across the internet to allow anyone to bypass the inconveniences of email and flashdrives.
I attempted to derive tactics for solving a Rubik's cube by first analyzing the nature of cube moves and then exploring these interactions through the lens of group theory.
To illustrate the interesting ideas involved in programming languages, I designed and implemented a super simple language in high school algebra and then proved its implementation correct.
I wrote a book exploring computation from first principles, from the formulation of posulates to the simulation, interpretation, and self-hosting of a common programming language.
I started a blog to hold any essays I might write about ideas, aesthetics, or human nature.
I implemented a monad for construction and manipulation of lazy expressions in Python, to allow for recursive programs to be written without fear that they will exhaust the callstack.