Skip to Content

about blog contact


Posted on Mar 29 2024

Table of Contents

This page lists the tools (both physical and otherwise) that I use to do my job as a software developer along with some thoughts on them.

While this page is likely to be out of date when you’re reading it, since I am usually trying a few small changes here and there at any given point to try and improve things, I try to update it regularly. You can follow those updates by looking at the history of the source code for this page specifically.

For other pages like this from other folks, check out this repository:

I’ll go through a theoretical “day in the life” of myself working. Mostly to help me remember all the stuff involved, but also as a means of storytelling and being imformative. I normally don’t drop brand names, but since that’s kind of the point here, I will be doing a lot of name dropping. No links to products for simplicity, but everything listed here should be searchable. If not, let me know! I’ll try to link to anything free, though, such as software.

I’ll break stuff up by topic as things come up so you can skip things that are not interesting to you. There is also a Table of Contents at the top to help you navigate.

I also think that in general sharing this much information about yourself isn’t the best idea. However, since I’m confident the bots can’t know much more about me that they already do and this will really only mostly be useful to my fellow human beings, I think it’s worth sharing. I hope you discover some cool new stuff! Better yet, I hope you recommend me better stuff! I’m always wanting to try new tools and discover something new that’s good at something.

Regarding the configuration of my machines and the software referenced below, please refer to my Nix repo! It may also be useful to look through my old dotfiles repo.

Good morning!

I wake up when my kids do out of a Purple mattress. I slip on my PineTime wrist watch, grab my flashlight, Android smartphone and backpack, put on my prescription glasses, and usually make some tea.

Mattress: Purple King Size

Sleep is real important, so get a good mattress! Of course, “good” here is highly subjective, so you will want to do your own research. We usually have a kid or two join my wife and I in the mattress, so we went with a king size to account for this. Fantastic decision!

Smart Watch: PineTime

I love my PineTime! It serves as a good flashlight in the pitch black of a baby’s room and can tell the time. That alone is good enough. However, it can also vibrate when I get notifications on my phone if I want, which I do use on occasion. The price is also unbeatable at 25USD and the InfiniTime firmware keeps improving! I get about two weeks of battery with light use and bluetooth off. I get about 5 days if I’ve got notifications on full blast, but they recently improved the firmware and claim this may now be more than double!

Flashlight: Emisar DW4

I have a phone with a flashlight. And even my watch can be enough of a flashlight to navigate in pitch black, but I’ve taken to carrying an actual flashlight. Specifically, an Emisar DW4. It has a magnetic tailcap so it can attach near or directly to many work surfaces. It can get hilariously bright or dim enough to be suitable for use around sleeping family members in the dark.

And it has fun RGB LEDs that can flash, show you the battery level, and just look cool. It’s not a game-changer, but at times it is incredibly convenient to have on hand.

Smart Phone: ASUS Zenfone 10

I’ve enjoyed ASUS’s phones and have previously used the ROG Phone 5S. I bought this since it maintained most of the important features of the ROG Phone while being cheaper and my old ROG Phone started having bluetooth and phone call issues. To be fair, I bought the international Chinese version off ebay to try and save a buck.

The Zenfone 10 does everything I need. Lots of battery life, nice display for reading on, good speakers, blah blah blah. Phone’s get less interesting all the time and most of them are good enough these days.

I hope a real Linux phone comes around!

Android-Specific Software & Applications

Since I’m discussing my phone, I’ll go over phone-specific apps (and some common with my laptops/desktops) now in no particular order. I have no idea if any of these have iOS equivalents, but here ya go.


The portable office! I keep my laptop, a multi-tool, extension cord, power strip, laptop charger, a suite of adapters and flash drives, water bottle, and the odd cable here or there. If I’m feelin’ that I might be gamin’, I throw in the Steam Deck. More on all this later.

Server Room

Once the day has started and I’ve said my goodbyes to the fam, I head downstairs to my basement where my home office is located. I walk past a super overkill server rack I got on Craigslist. It holds a few things, but the most important things are my home router/gateway. It’s connected to a Google Fiber jack where I get 500 Mb/sec (symmetric) speeds for about 55USD/month. It’s hooked up to a Netgear 16-port gigabit switch which in turn is hooked up to a bunch of little devices, the most important of which are my home server, WiFi access point, and a really long cable that goes to my desk where there is another tp-link 8-port gigabit switch.

The rack also has a bunch of loose cables, peripherals, and other random gear, like a big knife. I think I was using it to strip some wires. I should get some easy-mode wire strippers.

Router & Gateway: Any decent dual-NIC machine

For a long time, I used a Raspberry Pi 4 with a USB3 ethernet adapter. It did great, too! But then I wanted it (and my ethernet adapter) for another project and I scored a Datto Alto 2 with 2 NICs built right in on Ebay for like $30. Ebay is awesome.

The Datto Alto 2 is great, but not because of what it is. Any little dual-NIC box will do nicely. It’s running Arch Linux and is configured via the contents of this repo (please be nice to my network). Having a router I’m in full control of has helped with networking problems immensely and makes port forwarding stuff a breeze. I’m roughly familiar with its workings, which makes troubleshooting network problems that much easier for me.

This is the last bastion for Arch Linux in my network and I’m excited to move. Not because I hate Arch, but I’m really loving NixOS.

WiFi Access Point: Unifi AP-Pro

Fantastic access point that plays nicely with my very DIY home router. Not really much else to say. I set it up a long time ago and update it with some regularity, but it just works. At some point, I’d love to get wireless devices on their own VLAN for another layer of security.

Ethernet Switches: Anything with enough speed and ports

Seriously I just bought the cheapest switches at Micro Center with enough ports for me. They’re getting hilariously cheap, which is great! Having extra ports for ad-hoc stuff, like LAN parties, is a must-have for me, even in the age of WiFi.

Share the load.


I was given a Dell R720xd with dual Xeon E5-2580 CPUs (10c/20t), 256GB RAM, and 12x4TB (48TB) of raw disk space. It runs my own, my servers, and hosts onsite backups for all my stuff and serves as an offsite encrypted backup for some friends.

I have a few other cheap machines with larger disks at friends and family’s houses for off-site, encrypted backups of important data. They all run NixOS and use its built-in restic backup setup.

Any paid client workloads are served via redundant mechanisms via cloud services, generally Digital Ocean, and backed up with whatever the relevant cloud offering is.

I run the following main applications:

Other details can be found in the Nix config for the beefcake host.

I run a few services from the cloud as well:

Starting Work

I sit in a way-too-expensive computer chair at a homemade desk and wiggle my mouse or slap my keyboard until my workstation wakes up. I punch in my password and a script fires off to make sure I am ready to work. It does stuff like have me log in to various work services that need daily (or hourly) authentication and making sure I remember to review certain reminders and things of that nature.

I usually spend my work mornings reviewing neat things I read about the night before on my various feeds – assuming nothing urgent is happening with work, which there usually is not. Tinkering with things is super important for learning. This is usually done by pulling down my notes as sync’d from my phone, where I do most of my reading.

I may also spend some time playing games or working with electronics in the workshop area.

Then the standup meeting notification pops up and I spend about 10 minutes reviewing work stuff so I’m ready for the day. I make sure any audio/visual settings are reset for the workday from any tinkering I may have done the previous evening, usually with musical instruments or just general goofing around with Pipewire.

Chair: Steelcase Gesture with Headrest

Like a mattress, very subjective. Get your chairs secondhand for way cheap and you can get some heckin’ nice chairs. I spend about 8 hours a day in my chair, so having a good chair is well worth it, even if the price tag is $1,500 USD. 😬

Desk: Custom

It’s a huge slab of butcher’s block I got from Home Depot for about 200USD and I made some really crappy legs to try and hold it up. It’s huge and awesome and by the time I can’t move it around by myself anymore is probably a good indicator for retirement.

You can see an old but decent picture of it here:

Mouse: Logitech MX Master 3 and Mionix Avior Pro

The MX Master 3 is my default, go-to mouse. It’s great. I don’t use any of the fancy features, really, but the mousewheel on it is real special. Can’t go back.

The Avior Pro I got a long time ago after my last mouse bit the dust. I really only pull out for gaming on the more competitive side, such as Counter Strike. For pretty much everything else, the MX Master 3 is not noticeably bad – even for Doom Eternal.

Keyboard: Sofle Choc RGB

Another very subjective thing! Building and programming your own keyboard is something that is super fun for heavy keyboard users, which I think is most people these days. This one is focused on being good for my hands and wrists to use for long programming sessions. It’s split into two wireless pieces so each hand can move them independently and the keys are laid out in a sensible manner that fits the human hand. There are other features that are nice, but that I rarely use.

Here’s a picture if you like:

Monitors: Aorus FO48U and 2 Dell U2720Q

I stumbled into having a huge 4K display when COVID had Postmates send our little Kansas City satellite office packing and I took the meeting hardware home. At some point, I plugged it in to see what World of Warcraft would look like in 4K on a big screen and realized it was actually amazing for programming as well.

Here’s roughly my monitor layout, though I usually have two of the secondary monitors – one on either side:

Laptop: Lenovo T480 and MacBooks

The T480 is a recent acquisition. It was pretty busted up when I got it, but I bought the high capacity external battery and some phat sticks of RAM and replaced the trackpad. A little bit of superglue and a good cleaning later and I’ve just fallen in love with this laptop. Sometimes I use it even though I have a really beefy workstation with what I consider to be a pretty high-end setup – it just feels so cozy! All my machines run Arch Linux configured as specified in my dotfiles repo.

Work provides MacBooks. I’m able to use them as proxies and simply SSH into them for work-related tasks. They otherwise run Linux virtual machines or serve as dumb terminals to Linux environments in the cloud where I do the majority of my work. In general, I’m not a big of macOS and its interface, but I fully recognize that I’m used to a very bespoke and unique way of interacting with my computer.

That said, before work really cracked down, the M1 Max MacBook Pro they got me was one of my favorite machines ever. Insane battery life, performance, speakers, display, and the ability to run Linux natively on it is going to be really hard to beat. I miss being able to use that thing to its fullest!

Desktop: Custom Rig

Probably easiest to list the parts. I wanted something quiet, small, and cute. In hindsight, I think it would have been more practical to just get a bigger and more expandable system. I’m somehow always out of USB ports.

Other Neat Computing Devices

I also have a PinePhone and a Steam Deck.

The PinePhone was unfortunately a dud for me personally since MMS is still pretty prevalent in my life in a way that I can’t overlook in addition to the notification setup not quite being up to snuff. I am very excited for the time when a Linux (you know what I mean) phone is feasible, though! I got the keyboard addon, though, and since my phone has some radio issues in the US, I sometimes use it when I need better radio performance, like when camping.

The Steam Deck is absolutely wonderful. Anything I would play with a controller, I usually just play it on the Steam deck. I haven’t touched my Switch since! Plus, it’s Linux, so the tinker factor is there too. Highly recommend one if you’re considering it.

Headphones: Sony WH-1000XM4

Bought the XM3s on a Black Friday special and fell in love. Nice noise cancelling headphones are absolutely wonderful. They made my mom cry.

Work got almost all their engineers the XM4s not long after so I kind of have 2 pair. The XM4s are much nicer with multiple device pairing and the firmware voice feedback fading out your audio instead of cutting it completely when it says anything. The XM4s also automatically shut down if they can detect they aren’t on your head for a little bit, which makes the main issue I had with the XM3s of setting them on my desk without turning them off a non-issue.

Microphone: Blue Yeti USB

Sounds good enough, but I’ve got a fancy audio interface now, so I’m wanting to upgrade at some point. Super low priority, though.

Audio Interface: MOTU M4

A recent gift. I’m hoping to do more with music and mixing in the future, though, so it will be welcome at that point! I play drums and would love to put together a decent electric guitar setup. I also have an Arturia MicroFreak digital synthesizer which is a lot of fun to play with. I’d love to put some cool tracks together!

Keys: Some twist-lock cable keyring

It’s nicer than those metal rings you have to snap your thumbnail to get keys off of. I had one fail after about 10 years and my keys went everywhere, so if you’re gonna use these, I guess you should replace them occasionally or check them in rather rough ways with some regularity after a certain amount of time.

These are usually karabiner’d to my backpack or a belt loop.

When I’m driving with the family, we take the van, which has one of those wireless keys, so I can just throw my whole bag in and we can drive. If I’m driving solo, it’s still a good, old insert-and-turn key, so the keys un- karabiner from the bag or loop and go back on when disembarking.

My keyring is also attached to my wallet. Speaking of which…

Wallet: Chums Surfshorts Wallet

Cheap, has a zipper to hold keyfobs and cards, and easily attaches to my keys. Having them all together means I just gotta grab two things, one for each pocket: phone and wallet-keys.

I haven’t tried tap-to-paying through the wallet, which is probably a big security hazard. 🤷


When my machine boots up, I’m greeted by the standard Linux login at the console. No display manager or graphical login or anything. Once I’m logged in, I usually run wm which fires up my window manager, Sway.

When Sway starts, it runs Kitty, my terminal emulator of choice, and Firefox, my web browser of choice.

Anywhere I can, I really like to use the Catppuccin color scheme. Otherewise, I used a modified Monokai with a darkened background color for the longest time.

Web Applications

Firefox is awesome. I’m a big fan. I make heavy use of their “Sync” offering, which syncs just about everything. It’s very convenient and I’m sure it will somehow bite me later.

I use the following must-have browser extensions:

Firefox usually has the following web applications opened:

Ugh, modern messaging is a mess, isn’t it?

Tailscale connects all my machines to the same VPN. It’s great! And I think once I get it fully setup, I will put it in the “gamechanger” bucket.

I also frequent these:

And do my online shopping here:

I’m sure I’m forgetting a ton here.


Beyond the web stuff, I pretty much live in the terminal. Interacting with my machine is mostly done via hotkeys as configured for Sway. Otherwise, everything happens in the terminal. Here are my most popular commands in no particular order:


From Sway, the only utilities I use are the following:

Beyond these, I have a bunch of scripts and configuration in my dotfiles repo.

I use wofi for launching applications occasionally. It lists the following often-used applications:


I dabble in music sometimes, depending on my workload or how much I need an outlet, mostly as a poser metal drummer, so I’ll list that stuff here, too!


I also tinker a lot with electronics and “maker”-y things! The only name-able thing is my 3D printer, which is an Ender CR-10S. Micro Center was having an incredible sale one upon a day. The thing is really awesome. I still want a real nice one that I can reliably send prints over the network to.

Other unnamed tools I have and use on roughly a weekly basis:

And I’m sure there are other unsung heroes I just don’t think about. Like butter knives.

Finishing The Day

That about does it! I usually head upstairs when work is done, make food in unidentifiable cookware, tinker and play with my kids for a bit, head out to whatever evening activity we’ve got going on if applicable, come home, and bedtime!

Ah, we have a couple tablets for Khan Academy Kids, white noise (and other sleep-inducing ambience), and podcasts (like Base Camp Adventures!) and a Google Home Mini or two, mostly for playing loud and obnoxious music or setting timers.