somewhere to talk about random ideas and projects like everyone else


Project Naptha highlight, copy and translate text from any image

Project Naptha started out as "Images as Text" the 2nd place winning entry to 2013's HackMIT Hackathon.

It launched 5 months later, reaching 200,000 users in a week, and was featured on the front page of Hacker News, Reddit, Engadget, Lifehacker, The Verge, and PCWorld.

Ajax Animator create and share animations in the browser

Ajax Animator was probably my first large project— I started it after I had exhausted all the free trials of Macromedia Flash for making silly cartoons in 5th grade.

As my primary focus from the latter half of 6th grade until my early sophomore year of high school, it evolved through many different iterations and spun off several smaller projects.

I started by downloading Mark Finkle's RichDraw SVG/VML drawing component and pasted code snippets from various DHTML widget sites until I had something that looked vaguely like the Flash I knew. Over the years, as I've learned more about programming, I've rewritten the app several times— going from raw HTML and docment.write to DHTMLSuite to YUI/Ext to Ext 2.0.

Ajax Animator has been featured on MakeUseOf, InfoQ, and has its own Wikipedia article.

ShinyTouch zero-cost optical touchscreen retrofit

With an ordinary webcam pointed at any flat, semi-reflective surface, one can recover a finger's X and Y position with a perspective projection, and Z by measuring the distance from a fingertip to its reflection.

ShinyTouch won 1st place at the Fairfax County Regional Science and Engineering Fair, and competed at the Virginia State Science Fair. It was recognized by the Optical Society of America, the US Patent Office and the IEEE.

Protobowl real time multiplayer quizbowl game

Protobowl is a real time website for competing with friends and strangers on trivia knowledge. It runs both online and offline, and includes a database of over 90,000 questions comprised of Quizbowl, Jeopardy, Science Bowl and Certamen questions.

With over a thousand daily players each staying for half hour on average, it eats a month of humanity every day. Skynet would be proud.

Cloud Save one click save to any cloud storage locker

Cloud Save featured on Lifehacker, MakeUseOf, TheNextWeb,, HowToGeek, MacWorld, ComputerWorld, ITWorld.

Surplus featured on Business Insider, Lifehacker, TheNextWeb, MakeUseOf.

Drag2Up featured on Techcrunch, CNet, Lifehacker.

Offline Wiki browse the full text of wikipedia offline

In middle school, I had an iPhone— but it didn't actually have cell service, which led to more than a few expeditions for the fabled WiFi. My favorite app was Patrick Collison's Encyclopedia, which contained the full compressed contents of the English Wikipedia. It left a powerful impression on me— I felt the true power of a real-life Hitchhiker's Guide.

Whammy a real time intraframe WebM encoder in javascript

WebP is basically VP8's intraframe compression in an itsy-bitsy-yellow-polka-dot RIFF container. Weppy exploits video decoding capabilities to render WebP images, while Whammy exploits image encoding capability to encode WebM.

MusicAlpha reverse-engineered Google Music uploader

For a long time, Google Music could only upload songs with a proprietary uploader that only ran on Mac OS and Windows. With a bit (literally) of IDA Pro twiddling, it's possible to dump and reverse-engineer the protobufs that get sent to the server to negotiate file uploading.

MusicAlpha is a prototype of a cross-platform implementation of the uploader as a Chrome app.

Microwave mobile-friendly google wave client

I spent the first year of high school mildly obsessed with Google Wave. To be fair, I still think it's pretty cool— but apparently that opinion was a minority one.

One problem was that they had tried to replace everything— email, instant messaging, google docs, mailing lists and web pages— severing their ties with the outside world. Everything was contained within a bloated operating-system of a web app.

Microwave was the first real third party Google Wave client. Wave Reader uses Microwave's core (magnetron?) to to publish waves as plain web pages.

Facebook Clock visualizing when friends are active on facebook

Everyone has a bit of a daily rhythm, which often for better or worse includes scattered visitations of Facebook. I wrote a simple script which polled the Graph API every minute for a list of online friends. Each ring in the chart represents a single friend's 24 hour Facebook routine with centrality indicating total time spent. To the extent that you are your group of friends, this could be thought of as a sort of sociotemporal fingerprint.