SALVE is a language designed for configuration deployment from a git repository. Originally inspired by University of Michigan's Radmind, it originated as an answer to the common practice of keeping dotfiles and other personal configuration on github. Although many of these repositories contain the components for a complex and highly personalized setup, the only way to automate deployment onto a new machine or virtual machine is through manual scripting. Scripts are inherently dangerous and error-prone, containing numerous assumptions about permissions, directory structure, and so forth. SALVE is intended to insulate the owners of such repos from concerns about correctness, safety, and idempotence.

My resume is scraped from GitHub, and included on my resume page with a JQuery load, but the real magic is behind the html.

I want to keep a LaTeX resume so that I can supply a PDF, but also an HTML version of it to embed on my site. Rather than maintaining two copies of the same content in different formats, I decided to build a system that would allow me to produce both the PDF and HTML outputs from a single source document. In 2015, I finally took the time to build this, using Ruby's ERB templating as the mechanism for rendering structured resume information to these formats.

The resume source is a JSON document -- it's exact schema is ill-defined, since I'm the only one using it and it changes to suit my needs. That JSON is rendered to HTML and to LaTeX source via ruby ERB templating. The basic flow is (1) load from JSON, (2) scrub to texify or HTML-escape things like ampersands and underscores, and (3) run ERB. The LaTeX is handed off to pdflatex to do its wizardry, and the HTML is included here. There is a Makefile which exists to pass arguments to the ruby script, but does little else.

Please feel free to use the source either as a jumping-off point for your own resume templating needs, or use the generated LaTeX source as a template for your own Resume or CV.


Hydra was an toy project I worked on with Tristan Rasmussen while we both worked at the CSIL. We experimented on making a forkbomb as nefarious as we could. Hydra renames its children, bounces back signals it receives (other than SIGKILL, of course), and begins mucking with shells and ttys it can get its hands on. Running Hydra is dangerous to a system's health, but not to the state of the filesystem.


Dotpimizer was another small project on which I collaborated with Tristan Rasmussen. It was a small Hackathon project that we did to draw regexes as NFAs, but is not very well documented. Dotpimizer has the nice feature of producing dot files for all stages of its NFA transformations, so that you can inspect and "watch" the NFA simplify. The ultimate goal of the project was to optimize the regex and display the NFA transformations, but this was never fully achieved.


inv_parser is an early verrsion of a package I wrote for the CSIL to parse the output of OSX's System Profiler. The code kept in the GitHub repository is not actively maintained, but was an early iteration of the project.

Our experience across multiple versions of OSX was that the non-full textual output of System Profiler was a lot more stable than its plist output. Although this may have improved in the recent past, the textual solution works across a wider range of versions. In order simplify parsing, we convert the text to xml, and then run xpath expressions on the xml. For this to be possible, I used several rewrites of special characters, and some other nonstandard practices.

inv_parser is far from exemplary code, but it now has years of successful usage in a production context. In spite of its quirks, it has continued to work well over this period.

Site tested on Firefox and Chrome.