Hey there! I see you're not using JavaScript. Just FYI, I use MathJax to display things that deserve to look like math.

Alex Clemmer obtained a BS in computer science from a middle-of-the-road state school in 2013. He had an ok-but-not-great GPA. 3 out of 5 officemates agree that Alex has programmed before.

Alex is mostly known for (1) turning Snapchat into a remote filesystem, (2) porting lisp to the Apple //e, and (3) implementing Python 3 in a couple thousand lines of Haskell.

Alex has been programming for about 4 years (as of early 2014).

Alex is currently employed at Microsoft.

BLOG · #HACK · #ABOUT

#HACK

Some nifty recent work I did in my free time

Snapchat FS — [code]
I reverse engineered Snapchat's private API. Snapchat FS is a client I wrote (with some help from @pencilo ) that allows you to use Snapchat to store and manage arbitrary files.

Turtles: turns Apple //e -> lisp machine — [video, writeup, code]
Wrote code to send the assembled lisp interpreter binary from a laptop through the audio jack, to the Apple //e, which then stores the lisp and opens up a REPL.

pyli—Python 3 compiler in < 4000 lines of code — [writeup, code]
Writing parsers and lexers is really hard. I wondered if I could write a parser for almost all of Python that anyone could understand. As soon as I finish the AST-to-bytecode step, this will be a complete compiler, but for now it's "only" a parser and lexer.

Completely transition all state serialization in Storm (Twitter's stream processing system) from the Java stock serializer to a type-annotated JSON — [code]
Storm is a stream processing system from Backtype (acquired by Twitter). Storm used to use Java's stock serialization capabilities to persist system state (useful, e.g., for checkpointing and reliability purposes). This patch completely replaces stock Java serialization with a type-annotated JSON called EDN. This solves issues #419 and #525, and supersedes pull request #497.

Adding Haskell's where clause to OCaml — [writeup, code]
I love Haskell's where clause. It is one of the features I really missed when I started learning OCaml, and eventually it got so bad, I ended up just extending OCaml syntax to support it.


#ABOUT

Here is how you can find me and stuff

I organize Hack and Tell Seattle. You can find me elsewhere: