Computer Science
Last updated February 2023. I’m learning that the more I write, the more stuff there is to go out of date; so I’m going to try to keep this snappy this time.
I wrote code to make computers do stuff. Most recently I have been writing C++ professionally, but before that, I had the most work experience developing on the front-end, with TypeScript and React/Redux as well as HTML/CSS. I also write Haskell, Python, and Scala, and love learning new languages (exhibit A, correct solutions in 23 languages on Google Code Jam 2015.)
Experience
For more personal projects, see the projects page.
- From October 2020 to December 2022, I was a software engineer at Zoom by way of Keybase, working to implement end-to-end encryption. I spent some of my time on the cryptography research subteam as well, creating an in-house implementation of the relatively young primitive of a Verifiable Random Function, and helping with Rotatable Zero Knowledge Sets, our paper in ASIACRYPT 2022.
- As an organizer on Galactic Puzzle Hunt, I worked on and helpd open-source gph-site, our hunt-running website codebase that has now been used by at least a dozen other puzzlehunts, and Puzzlord, our puzzle-writing website that has been picked up by the Mystery Hunt writers after us.
- I spent the summers of 2018 and 2019 interning for SingleStore (known as memSQL when I was an intern), an SF-based company making an extremely fast database. I was on the Platform team and worked on SingleStore/memSQL Studio, a visual interface for managing and monitoring database clusters. In particular, in 2018, I worked on and blogged about Visual Explain, a tool for visualizing the operations used to perform database queries.
- During the 2018–2019 school year, I worked on Mavo, a tool for creating web applications capable of reactivity and persistence by only writing HTML and CSS, with Lea Verou and the Haystack Group at MIT CSAIL. I implemented server-side rendering for Mavo apps.
- I spent the summer of 2016 working for Dropbox. I worked on Dropbox Paper, a nifty doc editor for collaboration and brainstorming, primarily adding a sign-in-as-user feature but also making UI tweaks.
- I’ve spent some winters working on Stone Campus, a Taiwanese provider of programming classes and material, run by my father.
- I was a remote member of Random Fish, the writers of the 2015 MIT Mystery Hunt, and hacked quite a bit on Puzzletron, some quite old software for managing the editing and testing of puzzles.
Competitive Programming (?)
I did Advent of Code pretty seriously in 2018–2022 (and may or may not keep doing them pretty seriously). I also wrote a detailed blog post on how to place on the leaderboard for fastest solve.
Aside from that, I did the high-school and college competitions, IOI and ACM-ICPC, ages ago; I usually do Google Code Jam and fluked into being a finalist once, in 2015; and maybe once a year I am convinced to do a Codeforces problem or contest for whatever reason. But in general I am not an active competitive programmer.
Open-Source
I like open source software. I used to collect PRs I sent out here, but that list was both incredibly old and underwhelming. Here are some particularly notable ones:
- Adding Pandoc to Hugo
- Adding
unsnoc
to Haskell’s Data.Text and Data.Lazy - Updating OpenSSL’s fuzzing documentation
Esolangs and Code Golf
At some middling rank on the list of my hobbies are esoteric programming languages and code golf. Back when GolfScript was the only golf-oriented programming language, I spent a lot of time playing with it on anarchy golf; but after I returned after a few years’ hiatus and checked out codegolf.SE to find everybody writing extremely dense languages with (what I considered to be) much worse mnemonics (e.g. Pyth, Jelly, 05AB1E), I spent a few weeks writing my own code golf language, Paradoc. Much later I wrote an introduction to code golf on my blog.
Computer Security
I’m kind of a computer security professional now. I sporadically do CTFs with galhacktic trendsetters. I participated in the 2017 and 2018 CSAW CTF finals, the first time with Don’t Hack Alone, the second time with TechSec.
I use KeePassX for many of my passwords. I like EFF’s Diceware word list and own two precision backgammon dice for personal password generation (as well as extremely fair games of Settlers of Catan :)
User Interfaces
I like playing with gradients and shadows and hover/active effects on buttons, probably to a mildly unhealthy degree. To spread the passion, I taught the class “How to Build the Perfect Button with CSS” for Spark and Splash 2017. Once you’ve seen Bootstrap basic and themed buttons, you’ve probably seen most of them, but there’s the occasional much fancier example like BonBon buttons.
I am probably overreliant on Practical Typography (Matthew Butterick), but it’s a good resource.
My usual coding font is Hasklig, or Source Code Pro with ligatures. There are many others out there but this is still my favorite. (There are good reasons not to use ligatures in code that you’re sharing, but in private the arrows make me happy. Also, technically I use a version of Hasklig that I manually modified to have a smaller line height…)