how i do my computing

students occasionally ask how i do my computing, so here is a brief summary (as of october 2026). i might update this page occasionally, but my setup has not changed much in recent years, so i don't expect this page to change very often.

computers

whenever possible (read: whenever it is not too inconvenient), i prefer to use machines that only run Free/Libre Software.

nowadays, my main desktop computer is a system76 Thelio workstation.

i also use a D16 Workstation, purchased from Vikings. although this machine is old, its main appeal is its ability to run Libreboot, a freedom-respecting replacement for proprietary boot firmware.

i use a "vertical" mouse from Evoluent. i have tried a number of different keyboards, but my current favorite is the V3 from WASD keyboards (with Cherry MX Silent Red switches). i also love the IBM model M, as well as the "New Model M" from Unicomp.

my main laptop computer is a Librebooted Lenovo Thinkpad X200. i own a number of copies of this machine, some purchased from Libiquity and Ministry of Freedom and a couple that I Lirebooted myself. i also own a Librebooted Thinkpad X200T tablet, which i use occasionally, as well as a Lenovo Carbon X1.

operating system and other software

i run Debian GNU/Linux on all my machines. i typically stick to the "stable" version, but i occasionally jump ahead to "testing." with two machines as exceptions, i do not enable the "contrib" or "non-free" repositories, as those include non-free software.

while i spend most of my time in a terminal, i usually do so from an X11 environment. i use the Openbox window manager with some custom keybindings, and i use lxterminal as a terminal emulator. i use GNU Bash, and the hzeep font.

a good amount of my time is spent editing text in one form or another, and i use Vim for those tasks (although i do configure things so that a number of Emacs keybindings are available, primarily because i prefer Emacs's movement commands as a way to move around in insert mode).

e-mail

i use Mutt for reading e-mails, Vim for composing e-mails, and msmtp for sending e-mails. i work with local copies of my e-mails, and i use offlineimap to keep those copies in sync with each other. roughly once per semester, i back my e-mails up to a Git repository, so that my actual IMAP mailboxes remain small.

i self-host a server for my personal e-mails, using maddy.

web browsing

i route some network traffic through Tor, and i try to do my browsing through the Tor Browser. i also use GNU Icecat or Mozilla Firefox.

music

i keep local copies of all of my music library (in the Ogg Vorbis format), and i keep these files in sync across my various machines using Syncthing. i use cmus to play music.

programming

although i dabble in other languages, my go-to programming language for practical use is Python. i use Vim to write programs (i do not use an IDE), and i pretty much exclusively use print for debugging. i prefer Mercurial over Git for version control, but i routinely use both. that said, i often use the hg-git plugin to use Mercurial to interact with Git repositories.

i am strongly opposed to github, and i am also generally opposed to other forms of centralized repository hosting (though more moderately so if they run only Free Software). i prefer using simple decentralized tools like self-hosted repositories and e-mail for coordinating software development. that said, i am regularly forced to use github to contribute to other people's FOSS projects.

i believe in strong copyleft licensing, as i believe that it is not a good thing to grant licensees the right to remove freedoms granted by my license. my preferred license for software is the GPLv3, and my preferred license for other creative works is CC-BY-SA.

teaching

my lecture slides are primarily created using LaTeX or conTeXt, using a preprocessor that allows me to programmatically generate pieces of the source, to include figures from Metapost and Matplotlib, and to create animations and include video files. i use a small Python program to project my slides. i typeset written exams and problem sets using a similar system.

perhaps not shockingly, catsoop is my learning management system of choice.