-> Technical

Automated tracing for javascript

I made blunt-instrument primarily to help visualize the execution of algorithms. You can paste code directly into the web app and see the value of every expression. It's a bit like a time-traveling debugger, but values at all points in time are shown in a table, rather than requiring you to step through the code line by line.

To build this, I needed a way to faithfully serialize a javascript object graph. Serializing to JSON isn't good enough, because that wouldn't handle cyclic references, doesn't record information about object prototypes, doesn't support all data types, etc. I wrote the object-graph-as-json library to fulfill this purpose.

Backup tooling

Note management

I take a lot of notes. I don't want to be tied to a particular service for storing them, or to a particular editor, or to a single uniform file format. I made notesdir so that I could store notes as ordinary and heterogenous files, but still do some of the stuff I would ordinarily have needed note-taking software for. It enables organizing and querying notes by tags, and updating links between notes when you reorganize your directory structure.

VS Code plugins

Programming challenge walkthroughs

Conference notes