SALVE was a language designed for configuration deployment from a git repository. Originally inspired by University of Michigan's Radmind, the idea was to have a purpose-built tool for keeping dotfiles and personal config in a github repo, then deploying that config to a new machine.

Ultimately, having a dedicated language for this purpose was more trouble than it was worth. One of the great advantages of shell scripts is their immense flexibility, and giving this up doesn't really seem worth it in the end. After reaching this conclusion, I have stopped working on SALVE.

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.


codenamesJS is a small pure Javascript implementation of Codenames. It was built for use during the COVID-19 lockdown, so we could play codenames through the browser.


tinyprompt is a very small python library for writing skippable prompt steps. It's useful for writing small, lightweight operational scripts. See the readme for more detail.


git-fortune is a python package which provides a fortune-like command for getting random git usage tips. Install with pip install --user git-fortune and run like so:

$ git-fortune
| GIT TIP #15                                                                  |
|                                                                              |
| Set up `git tree` by running                                                 |
| `git config --global alias.tree 'log --graph --decorate --all'`              |
|                                                                              |
| This puts `tree` into your ~/.gitconfig so that you can invoke `git tree` in |
| any repo.                                                                    |
|                                                                              |
Read the docs and help text for more details.


callable-pip is a python package which lets you patch modern versions of pip to get back the pip.main() method. Read the docs for more details.

Site tested on Firefox and Chrome.