What I Use
I get asked quite a bit about the tools I use for certain tasks, what things are running in a screenshot, or what laptop I recommend to others. Although most of what's here are not recommendations, I'll try to keep this page up to date with what I'm currently using.
Table of Contents
- Primary Workstation
- Work Programming Workstation
- Classic Mac Programming Workstation
- Personal Technology
My primary workstation is a Lenovo ThinkPad X1 Nano (Gen 1) laptop with an Intel i7-1160G7 processor, 16 GB of RAM, and a 512 GB SSD. I purchased this particular example in early 2023 after the Gen 2 model came out and the Gen 1 models were heavily discounted. I wish it had a bit better thermals so it wouldn't get so warm with the fan off, so that it could run fanless for longer. I do not like fan noises.
I use it at my desk with a single
right-angle USB-C cable
connected to a
Lenovo USB-C Dock
under my desk which provides power and USB-A ports, one of which houses the
Logitech Pebble M355
Logitech POP Mouse.
I switched from the Pebble to the POP because the wheel on the Pebble rattles
when scrolling quickly, and the POP is completely silent.
Unfortunately it required purchasing a separate Bolt receiver and the pairing
has to be done under Windows, but once paired, it works fine under OpenBSD.
The center button on the mouse in front of the wheel sends a button 6 event
which conveniently works with
to generate a back key press, causing Firefox to go back when pressed.
Occasionally I plug in Creative BT-W3 (article) to route audio to my AirPods Pro. Clearly OpenBSD is in need of a Bluetooth stack again so I can eliminate both of these USB dongles.
Operating System: OpenBSD-current
I run a custom branch with some local changes and in-development drivers.
I use a monochromatic color scheme and just a few plugins to keep it light.
Web Browser: Firefox
I've been using Mozilla browsers since Netscape Navigator (back when OpenBSD had to run a BSDi binary-emulated version). I especially like using it these days because I switch between macOS and OpenBSD frequently and I like having all of my settings, bookmarks, and add-ons sync between both environments.
about:configsettings that I change for OpenBSD:
general.autoScroll: trueto enable automated scrolling after a middle mouse button click
layout.css.devPixelsPerPx: 1.5to render things larger on my laptop's screen, and enable 2x assets on websites that support them (like this one)
ui.key.accelKey: 18to use Alt as the primary UI keyboard shortcut modifier, rather than Control (for similar muscle memory with the Command key on a Mac)
ui.key.meuAccessKeyFocuses: falseto stop random Alt presses from bringing up the menu
widget.non-native-theme.scrollbar.size.override: 12to make the scrollbars thicker
I use a few add-ons, though some are just to restore functionality that used to be included in Firefox:
- Awesome RSS just to get the RSS icon back in the address bar for websites that support it
- Cookie AutoDelete is my most critical add-on; I whitelist only the websites that I actively login to and all other websites have their cookies and other junk deleted automatically when the tab closes.
- History Cleaner to purge history after a certain number of days
- I don't care about cookies
- No PDF Download
- Open in Browser
- Stylus to fix the UI of a few websites
- uBlock Origin
- User-Agent Switcher which, sadly, is required to login to my bank's website
- Vimium-FF mostly just for hit-a-hint and j/k/G/gg scrolling
E-Mail Client: Mutt
I've been a happy Mutt user for decades now, and I can't see myself ever switching to anything else, especially for dealing with mailing lists. I'm glad the sidebar functionality was finally merged and it works great with Fastmail's IMAP and SMTP servers.
I'm somehow still on IRC after 20 years. I run Irssi on my server in a tmux session, and then SSH to it from my laptop or phone to chat. I use a wrapper script to connect so that when my laptop screen locks, it kills the SSH session and then waits until the screen is unlocked before automatically reconnecting. This allows me to use the irssi-pushover plugin which sends me Pushover notifications when I'm mentioned, but only while nothing is connected to tmux.
One thing I strongly recommend with Irssi is to set
1so that pasting anything (accidentally or not) with a newline into Irssi requires manual confirmation.
X11 Window Manager: progman
A lightweight window manager I created that looks like Windows 3.1's Program Manager. I have been using this more lately to take a break from sdorfehs, my tiling window manager.
- picom mainly just for tear-free scrolling these days, but with sdorfehs I enable window shadows
- Redshift to shift the color temperature at night
- slock with DPMS functionality added so that it turns the screen off while locked
- tpadnav to enable two-finger left and right swiping on the touchpad to navigate back and forward in Firefox
- xbanish to hide the mouse cursor when typing
- xbatticon and xcalicon for desktop widgets
- xcalib to load a color calibration profile for my laptop generated from a colorimeter
Work Programming Workstation
For work programming and other Mac-specific things, I use an Apple MacBook Air (2022) with an 8-core M2 processor, 24 GB of RAM, and a 1TB SSD. It is fast and quiet, but cold to touch and a tad larger than I would like. I'm still hoping for an Apple Silicon upgrade to the 12" MacBook.
I use Xcode for iOS and Android Studio for Android development, with iTerm2 for anything in the terminal.
The little compact Mac USB-C charger that the MacBook plugs into is kind of neat.
Classic Mac Programming Workstation
For System 6 programming, my primary development machine is a Macintosh 512Ke upgraded to Macintosh Plus specs. I tried a 3rd party RAM upgrade but eventually just upgraded it with a full Macintosh Plus logic board and rear case, with 4 MB of RAM. I use it with its original M0110 keyboard and M0100 mouse.
Its SCSI hard drive is a SCSI2SD v5.5 with a 2 GB partition on a Samsung PRO Endurance microSD card. It has a Dayna DaynaPort SCSI/Link-3 ethernet adapter which connects it to my network for TCP/IP and EtherTalk for AppleTalk file sharing.
It has an
connected to its video cable that is plugged into my
jcs.org server (the Mac
Mini next to it) to
its screen through this website.
It runs System 6.0.8 and MultiFinder. I use THINK C 5 for C programming and Amend for revision control.
In my office, I sit in a Steelcase Gesture chair at a GeekDesk Max adjustable height desk with a "carbonized bamboo" top. I don't recommend this desk top as it is very soft and has many scratches and gouges in it from just a couple years' use. I wish I had ordered the chair with the optional headrest.
If you're wondering why my office photos seem so yellow, I use low Kelvin light bulbs in my lamps because I hate bright white LED bulbs.
Not specific to one of my main computers, I have a few pieces of technology that are in frequent use:
After decades of running my own e-mail servers and getting fed up with the arms race of dealing with spam, I switched to Fastmail for hosting my e-mail, calendars, and contacts a few years ago. I've been a very happy customer and their IMAP and SMTP service works great with Mutt, and their web interface for calendars and occasional e-mail is very lightweight.
Once 1Password discontinued its HTML export that I used to access my passwords on OpenBSD, I switched to Bitwarden for password management. It allows me to synchronize my passwords between my OpenBSD laptop (Firefox), my Mac laptop (dedicated macOS client), and my iPhone (iOS app and password filling extension). I ran my own server for a while, but I gave up trying to keep pace with the upstream clients and server.
Apple iPhone 13 Mini
The last of the small iPhones, I have the 512 GB model to be able to keep all of my high-resolution music and all of my photos with me. I'm not a big app user and prefer to use things in a web browser when I can, but here are a few apps on my home screen:
- Albums to bring back "album shuffle" from the old iPods
- Apollo to make Reddit tolerable
- Bitwarden for password management; I miss 1Password's polished UI though
- Calendars 5 for a high-density monthly view which the default calendar app doesn't provide
- Home Assistant for home automation things
- Mammoth (currently in beta) for Mastodon/Fediverse
- OTP Auth for all those OTP codes; importantly it offers encrypted export/backups
- Pocket Casts which I've been using since my Android days
- Prompt 2 for SSHing to my servers on the go
- Pushover for push notifications
While not really a personal technology, I thought it was worth mentioning Ruby because of how often I use it. When I'm not writing C, I'm writing Ruby, and my brain tends to think in Ruby when I need to map out how to understand something. I use it for one-off scripts, for larger projects like dynamic websites and to generate static websites like this one, and for very large projects like Pushover's API and website.
Apple AirPods Pro (2nd Generation)
I listen to a lot of podcasts and music, and I use these at least a couple hours every day. The noise cancellation is great in loud public places, and the transparency mode is useful when wearing them at home when I still need to hear what's going on. I often just have one AirPod in, listening to a podcast while I do stuff. When the battery gets low, I can just switch to the other ear's AirPod while that one charges.
Obviously I use Pushover a lot on my devices and have it integrated into a number of things like my IRC client and cron jobs, though sadly I can't use many of its features for monitoring my own servers because those servers operate Pushover itself.
I use Tailscale on all of my servers and (modern) workstations. It's great not having to deal with IPsec or running SSH on a hidden port, and being able to securely connect to any of my servers remotely when I need to.
All of my dedicated servers around the country backup to rsync.net.
I run this on my laptops and my file server as a way to keep my music, photos, and documents synced and backed up.
Amazon Kindle Paperwhite
My preferred book-reading device. I used to have to jailbreak it to get book covers on the lock screen, but now it's natively supported by the Kindle OS.
Apple iPad Pro 11-inch (2nd Generation)
Mostly just used for recording my Mac Plus, though occasionally used for testing Pushover on iPad OS or watching TV shows in bed.
I used to have a whole rack of equipment in my basement, but these days my network footprint is much smaller and quieter.
My main router and firewall is a Protectli FW6 mini fanless server with an Intel Core i5 and six gigabit ethernet ports running OpenBSD. It uses VLANs on most of the ports to segment my network, and connects to AT&T U-Verse for internet access over symmetrical gigabit fiber.
It runs Asterisk to connect the various telecom equipment in my office to Twilio SIP trunks, such as my Western Electric 1D2 payphone and modems.
I have three Apple Airport Extreme WiFi base stations throughout the house, two of which are connected back to the router over ethernet.
A cheap TP-Link TL-SG108E 8-port managed gigabit switch up in my office handles VLANs for various things like my old Macs and a Grandstream HT814 4-port ATA that routes VoIP traffic between my BBS modem and my Asterisk router.
Previously this website ran on a dedicated server hosted at Vultr, but now that I have gigabit fiber and static IP addresses at home, I moved it to an old Apple Mac Mini (2012) with an Intel Core i5-3210M, 16 GB of RAM, and a Samsung 850 500 GB SSD. The Mac Mini runs OpenBSD, and operates silently on my desk.
Kludge BBS runs on a dedicated Macintosh Plus located next to my desk. It has 4 MB of RAM, a Dayna DaynaPort SCSI/Link-3 ethernet adapter and a US Robotics 56k modem in the case of an old Apple 300/1200 modem.
It runs my Subtext BBS Server on System 6.0.8 and has a 2 GB SCSI2SD v5.5 hard drive on a microSD card.
Home Assistant Yellow
I have a handful of Z-Wave light switches and sensors in the house and recently switched to a dedicated Home Assistant Yellow device for controlling everything. The software is pretty terrible, but the Indigo Domotics software that I previously used and had to pay hundreds of dollars a year to keep upgrading was not much better.
Brother DCP-7065DN Printer
I've had this printer/scanner for over a decade now and it's still rock solid. I mostly use it these days to print shipping labels for things, but I can't even remember the last time I've had to change its toner. It doesn't have any of the vendor lock-in like HP printers, and it connects to my network with good old ethernet (though I have it on an Apple Airport Express to bridge to WiFi). I print to it from OpenBSD with CUPS and the brlaser driver which takes all of 30 seconds to setup when I get a new machine.
An Apple Mac Mini (M1) in the basement primarily handles Time Machine backups from Macs and Restic/SSH backups from OpenBSD machines. It also uses osxphotos to keep a local directory synced with all of my photos from iCloud, that is then exported through Syncthing so they show up automatically on my OpenBSD laptop shortly after I take photos on my iPhone.
It also hosts a small Linux VM in VMWare Fusion that runs Netatalk 2 for my classic Macs to be able to copy files around, and serves as a bridge between SMB on my new Mac and AppleTalk on the old Macs.
After burning two small holes in the aforementioned desk with a mini spot welder, I decided to make a dedicated workbench in my office for soldering and taking things apart. Because it had to fit in a rather particular space, I made a table from a large cutting board attached to two square legs with a drawer.
From left to right, these tools that I am not qualified to use are: a Hakko FR301 desoldering gun, a generic hot air station, a Fluke 117 multimeter, a USB fan with adjustable speed, wire, a Hakko FX888D soldering station, and a generic magnifying glass and lamp.
Not pictured is my Prusa i3 MK3S+ 3D Printer located in a closet. I like it a lot, but I think I need to add a dedicated enclosure to more accurately control the temperature around it.