Technical Skills and Interests
I’m a collector of computer languages and programming paradigms. I tend to learn a language as I need it for specific challenges, putting together something useful for my purposes and then moving on. I’ve also done projects with Ruby and Python, and run a website built on Haskell. These days I find myself writing a lot of shell scripts, with resort to Awk and even some Perl. My knowledge includes a working ability with all of the tools you would expect in a modern software environment: various unix-based systems, the shell, git, docker, ci/cd, etc.
When I can find the time, I also enjoy a self-directed computer science fundamentals course of study. My current project.
I’m a constant user of markup languages. I spend most of my day in markdown, Emacs Org Mode, git for versioning documents, pandoc for conversions, bibtex-latex for managing digital libraries in plaintex records, and other tools in the same family. On any given day I usually have a dependable and feature-rich text editor open, like BBEdit, Sublime, or VS Code.
I have a fascination with infrastructure. In another life I might have been a DevOps person. I once put together an explainer for the HTTP/2 protocol when it started to roll out. These days I run an SMTP server for a personal email address, and explore DNS tools like Unbound on my local network.
I’m a connosieur of many different operating systems, both in my homelab, and in the cloud VPS services I run. I often lean on the BSDs (FreeBSD and OpenBSD), because of tight integration between different subsystems, smaller but well-vetted package ecosystem, and great documentation. My uses for FreeBSD include several home servers and a private cloud setup that I designed for my own use case (mostly writing and research). I also run several OpenBSD VPS servers, one for email and web hosting, and another to run various scripts and utilities, and as a development platform, when I’m outside of my home network.
There are a few pieces of software I particularly admire. Most software is mediocre and just gets the job done. And that’s OK–as long as it does, in fact, get it done. But there are a few tools I live in every day, usually because they offer a source of endless fascination, pleasure and exploration. I consider them indispensable to my value as a knowledge worker:
Emacs Ostensibly a text editor, actually an alternative computing paradigm. The most democratic piece of software I’ve ever used, and the one which makes the least distinction between users and programmers/developers. I’ve never encountered another tool that helps me switch contexts so quickly while maintaining my train of thought, and that can keep up with the pace at which I think and recall. The best antidote I know to the distractions of the modern web. I have it open all day, every day, for note-taking, research, drafting, planning, reading, and just about any other activity that requires thinking in front of a screen. It’s the tool in which I maintain a knowledge management system of my own design, and organize hundreds of gigabytes of data for a personal digital library (mostly media, epubs, pdfs, and archival copies of resources on the web). The only program that I can’t imagine being without.
DEVONthink The closest a layperson can come to a general purpose information-management system without using Emacs. More than worth its high cost for serious researchers. Incredibly flexible, open-ended, and long-lived. Deserves to be much better known and widely used than it is. Here’s one great course I came across that teaches it.
Calibre A work of software art, proof that a single developer can still write and maintain something amazing. For anyone who reads and writes a lot of text, especially ebooks in open formats, this is a a piece of software whose uses are almost inexhaustible.