Lenovo IdeaPad 5: Model 15ALC05. I have more than a few gripes with the Wi-Fi card and its Linux support (rtw89 is merged into kernel mainline, but I get weird throttling on 5GHz networks that seem to have to do with power state management!), but everything works well otherwise.
Langtu GK85: My mechanical keyboard. Currently using linear switches (am eyeing Cherry MX Blue clicky switches next). I'm not married to the brand — this was just the quickest one I could find that had 1u right-hand modifiers, which I'm particular about.
I use this and an elevated laptop stand to keep proper posture while sitting in my desk. I dislike multi-monitor setups because I strain either my neck or my back when facing asymmetrically left or right for extended periods of time.
Logitech G300s: My gaming mouse. It's symmetrical, which is important for me — I hold the mouse with my left hand instead of the right. The extra buttons are most useful to me for MMOs (with the notable exception of Esc on G9, the middle button, which comes in handy everywhere).
Arch Linux:
My daily driver OS of choice is Linux. The distro I've chosen is Arch Linux because it's KISS in a lot of ways (perhaps I'll write an in-depth post about this). Hostname is rivendell
, as this is my very own Homely House.
i3: My window manager. I don't have strong opinions on different window managers — as long as it's keyboard-driven and tiling, I'd be fine with it. i3 is just the one I stuck with.
st and urxvt: My terminal emulators. I mainly use st for wider Unicode font support. I use urxvtc for keybinds that bring up small terminal applications like a calendar, a calculator, etc., because I don't need font support as much there, but the speed boost from daemonization is nice.
zsh: My interactive shell. I've chosen this over bash because I find its configuration features nicer to use (built-in configuration wizard, compinstall and ZLE, extra parameter expansions useful for building prompts), while still being similar to bash and ksh (as opposed to e.g. fish, which diverges quite a lot).
There are some crucial differences (e.g. unquoted expansions not being word split! < <(...)
disconnecting tty stdin!) so I still write scripts in either POSIX sh or bash, but for interactive use, I'm extremely happy with zsh.
tmux: I use its tiling and session management features heavily. I spend most of my time in the terminal, and tmux is mainly how I organize my different activities (e.g. windows for email, notes, chat, code, etc.). tmux-resurrect and tmux-continuum are how I persist my sessions across reboots.
vim: My beloved editor, and the piece of tech that started me on my journey towards Unix and terminal citizenry. I've written plugins and blog posts about it (and perhaps I'll write an article series about my customizations).
I don't have a strong motivation to move to Neovim fully as of yet, but I don't have disdain for it like some Vim purists do — I actually love it as a project! In certain work contexts, I use Neovim for its built-in LSP support.
Vimwiki and todo.txt: I'm not going to list all my Vim scripts and plugins, but Vimwiki deserves a special mention because I use it as my comprehensive personal wiki and note-taking system. I use todo.txt as a bucket of quick, one-off miscellaneous TODOs that don't necessarily fall into any sort of project or overarching context (in which case I would log it in Vimwiki instead).
pass: My password manager. I love the password store format: it's just OpenPGP-encrypted files. Very Unix-oriented. One of these days, I'm keen to move to Filippo Valsorda's passage for superior age encryption (when Android support comes around, or perhaps when I author a solution there myself).
neomutt: My email client. I use isync/mbsync to sync my local Maildirs with my Gmail accounts over IMAP, so all my neomutt interactions resolve very quickly without needing Internet access.
newsboat: My RSS reader, where I follow news sites, blogs and indie sites I love, certain Youtube channels, and changelogs for software I keep track of. I mostly read from the terminal with w3m.
weechat: My IRC client. It's always pointed at libera.chat at the very least (or Freenode before the split). I've used bitlbee for a lot of other IM services such as Messenger, Discord, and Telegram, but those have come and gone for varying reasons. I don't use bitlbee right this moment anymore. I've also used scripts such as weechat-matrix, wee-slack, and signal-weechat, but again for varying reasons, I don't anymore.
Firefox: My GUI web browser. I have a privacy-hardened setup with arkenfox/user.js, uBlock Origin, and Multi-Account Containers, as well as some custom usability settings and styling. I also have Vimium and Foxy Gestures for faster keyboard-only and mouse-only usage, respectively.
I used to daily drive Vivaldi because of its customizability (and I still love it and yearn for it), but I've gotten to a point with my Firefox setup where I'm happy with how keyboard-driven and quick it can be, but with the core added benefit of privacy hardening with arkenfox/user.js.
mpd: I use mpd for my music-playing needs. I have a local library of MP3s, which I tag and organize with beets. I use mpc for a lot of scripted utilities (a lot of times I can just use rofi to play music I want), but ncmpcpp is my TUI client for when I want to be more hands-on in managing and curating my playlists.
I used to use cmus for music since it was also terminal-based (and had scriptability with cmus-remote), but I moved to mpd because:
sxiv and feh: I mainly use sxiv for viewing and browsing images because of its vi-inspired keybinds. I still use feh as it can take in images from stdin (nice for scripts and keybinds for opening images via URL or from the clipboard). feh is also what I use to set a desktop background.
mpv: My video player of choice. Keyboard-driven, minimal UI. Also works with youtube-dl to stream Youtube videos, but I tend to watch Youtube in the browser anyway because the buffering and auto-resolution-downgrade is smoother.
zathura: My PDF viewer, which I use for a lot of books, papers, and other readings. I tag and organize a subset with Calibre (mainly comics and books I read from my phone), but the rest are just laid out in a Usenet-inspired directory hierarchy.
I currently have a company-issued HP Probook 440 G7, also running Arch Linux. Hostname is ered-luin
, because it's my Dwarven craft hall of code (my previous company Macbook was named eregion
for similar reasons).
I prefer to have company-issued machines so I can keep company code on a completely separate disk, but I actually rarely use them directly — I just ssh into them and work from within tmux.
I install my dotfiles on all my company machines (whether Mac or Linux) so I have a consistent terminal environment in the places I work most frequently.
My previous daily driver is a Lenovo G40-30, also running Arch Linux. Hostname is arthedain
because it used to be the seat of power in ages past, but lies now in ruins.
Nowadays, I run it without X and use it as a network-accessible storage server. Its magnetic hard disk has slowed with age, and its Wi-Fi card is physically loose and can get disconnected if I move the laptop around too much. I'm sure a good SSD and Wi-Fi card replacement can breathe new life into this old workhorse though.
I have a small Dell Optiplex 3070 Micro PC I use as a home server, also running Arch Linux. Hostname is eldamar
, because it's an abode in my home realm (Wi-Fi access point is named Valinor
, for reference).
I use it to run game servers for family and friends, as well as my home Plex media server setup.
I have a $6 Basic Droplet on DigitalOcean where I host this website from. It's running the default Ubuntu 22.04 LTS image. Hostname is emnace.org
(heh, no Tolkien reference here) because it's already publicly accessible via a domain name.
I also use it to host some private git repos, and to reverse-proxy services from my home server, which it connects to via Wireguard. I also run a ZNC IRC bouncer from it.
I don't use my phone nearly as much. But I've tinkered with it to some degree as well, so I've left it in its own section.
Samsung Galaxy A72:
My daily driver. Model SM-A725F. Hostname is ilmen
, in keeping with the "Galaxy" theme.
LineageOS 21: My phone OS. Based on Android 14. My model is officially supported, so that's a huge boon. I use it with gApps, because:
AdGuard DNS: I use AdGuard's public DNS, so well-known ad domains aren't resolvable regardless of what app I use.
Droidify: My F-Droid frontend of choice.
mLauncher: I used to use Nova Launcher, but after the acquisition and finding out I had been updated to version 8 already, I switched away. It took some mental rewiring to get used to a minimal launcher, but I'm happy with it now.
Firefox for Android: Mainly for when I want to read HN, Lobste.rs, Tildes, or my local newspaper Philstar on the go. This is a much less customized Firefox, but I do have uBlock Origin installed.
Android Password Store: Password store access on mobile. Works in tandem with OpenKeychain as my OpenPGP implementation.
Aegis Authenticator: For TOTP MFA. I use an encrypted vault, with biometrics.
Termux: For when I need to quickly ssh into somewhere, for whatever reason. Has my vim, tmux, and zsh config installed!
K-9 Mail: Email client. I almost never use this to write email — just for when I urgently need to read email on the go. Also works in tandem with OpenKeychain for encrypted and signed email.
Librera: E-book reader for my Calibre collection. I only read a subset on my phone: mainly Wheelock's Latin and comics.
Polytopia and Shattered Pixel Dungeon: My two favorite Android games! Polytopia is a turn-based strategy game, while Shattered is a roguelike. Both are incredibly polished and offer deep gameplay. Neither have predatory patterns typical of mobile games. Shattered Pixel Dungeon is even open source!
Signal: Main mode of private, personal instant messaging.
Google Messages: For RCS and SMS.
Gboard: Am still on Gboard because swipe-to-type and spacebar swipe are things I use often that I don't find satisfactory in other keyboards.
Our TV is a Dévant 40STV101 Smart TV, which already comes with a good number of TV apps. This notably includes Plex, which is why I chose Plex over Jellyfin for my media server.
We have a 3rd-generation Google Chromecast, which we use for wirelessly casting things that aren't already supported natively by the TV.
I'm not too happy about the privacy implications here. I'm very averse to having smart home devices in my household (especially always-on, mic-enabled ones), but the Chromecast has a lower surface area (just TV, no mic, and plugged in only when we can't cast something natively to the TV), and the utility-to-privacy ratio is in a mostly-acceptable gray area for me for now.
We have a Nintendo Switch for our daughter (and the whole family!).
I have a couple of game controllers: an Ipega X3 Gamepad and a Hori Real Arcade Pro N Hayabusa arcade stick.
An Epson L5190 ink jet printer.