Tools of the Trade

A list of hardware, software, and services that I use day to day as a software engineer.

From time to time it's fun to reflect on the tools that I use day to day. The last time I created a post like this was in 2009. Back then I was using a Mac Pro dual monitors and more design software than I do now.

Hardware

  • Monitor - Dell 32" 4K UHD Monitor (U3219Q bought in 2020)
  • Desktop - I usually hand build my desktop machines and built my current rig in late 2021 with the following specs:
    • Case: Fractal Design Define R5 Black Silent Midtower
    • Motherboard: ASUS Prime Z370-A LGA 1151 (300 Series)
    • Power Supply: CORSAIR RMx Series RM 750x
    • Memory: 64 GB DDR5 RAM
    • CPU: 12th Gen Intel Core i9-12900K with 30720 KB cache
    • Video card: NVIDIA GeForce RTX 3070 Ti - an 8 GB card which when I bought it the prices were astronomical.
    • Disks: (3) Samsung 990 PRO SSD 2TB NVMe M.2
  • Keyboard - the CODE Cherry MX Blue mechanical keyboard. One of the perks of working from home is that I can use a mechanical keyboard without annoying my coworkers.
  • Mouse - Razer DeathAdder v2 Pro. I generally go for a comfortable Logitech but decided to try this one out because it was on sale and highly rated.
  • Headphones - I have two pairs depending on what I'm listening to:
    • Sennheiser HD 660 S open back for classical, jazz, and podcasts.
    • Sennheiser HD 569 closed back for rock and EDM.
  • Microphone - SHURE SM7B with Focusrite Scarlett Solo (3rd Gen) USB Audio Interface and Cloudlifter CL-1 Mic Activator. Admittedly, this setup is over the top but I was toying with the idea of creating content and wanted good audio quality. I also get annoyed by folks that don't have good audio quality on work calls so I guess now I can say I'm not one of those people.
  • Webcam - Logitech C920 HD Pro Webcam.
  • Laptop - I don't generally purchase a personal laptop and instead use one provided by my employer. It's usually a MacBook Pro which is unbeatable as far as laptops go. I've been tempted to get the new M3 and also tempted by the System76 offerings in the past.

Check out this post on how to get hardware details from the command line on Ubuntu.

Software

  • Operating System - Pop!_OS 20.04 LTS. I've been using Pop!_OS for a few years now and I really like it. It's based on Ubuntu and has a lot of nice features out of the box. I mostly used Ubuntu in the past.
  • IDE - I've been using JetBrains IDEs for over twenty years now and currently have the annual subscription to the "All Products Pack." I started using IntelliJ IDEA before it went GA and used the other IDEs for Python, Go, and Rust. I used CLion with the Rust plugin for a while but I've since switched to the new RustRover product. I also use VS Code as a secondary IDE and general text editor when I want to leverage an extension that's not available elsewhere.
  • Terminal - I use two projects written in Rust for my terminal setup:
    • alacritty - a GPU-accelerated terminal emulator.
    • starship - a cross-shell prompt which is highly customizable.
  • A myriad of command line tools, aliases and Bash functions. I also keep several different ~/.bash_* files to help keep things organized: .bash_aliases, .bash_functions, .bash_creds, etc.

Services

I use a ton of services but I'm keeping this list to ones that I either use on a daily basis or ones that I am willing to pay for.

  • GitHub - aside from the occasional outage GitHub has been great. I use GitHub Actions for CI/CD and GitHub Copilot in my JetBrains IDEs and VS Code.
  • OpenAI - started using ChatGPT back in the Spring of 2023 and I've been hooked ever since. I don't typically use it to generate code because it tends to be based on outdated libraries. Another fun way I've used it is to help with writing cover letters
  • AWS - I currently don't have anything running in AWS but I do have a few accounts that I use from time to time.
  • CloudFlare - I was planning on using CloudFlare for my DNS and workers but I'm not sure I'll continue to use them. Every time I log in, their interface makes me have a fit of rage. I'm not sure why but I find it very difficult to use. I will say the R2 service is a compelling alternative to S3 because the egress costs are much lower.
  • Digital Ocean - I use Digital Ocean more as a quick way to spin up a VM for testing or the occasional bug bounty program.
  • Fly.io - I use fly.io for hosting containerized backends including Rust and Kotlin. I'm also a big fan of fasterthanlime's blog which I mention because I believe he used to work at Fly.
  • Vercel - I use Vercel for hosting this site and a few other projects. I've been very happy with it and it's flawless integration with GitHub lets me use GitOps to manage my deployments.
  • acm.org membership which includes access to O'Reilly Learning and Pluralsight.
  • YouTube Premium - I use YouTube a lot for learning and entertainment. The premium member is worth it to me to avoid ads and to be able to download videos for offline viewing.

Furniture

  • Desk - I have a Fully Bamboo Standing Desk with a Jarvis Monitor Arm which is great because it supports my big monitor and still leaves room underneath. Fully use to be a Portland company but are now part of Herman Miller.
  • Chair - I've had the same Herman Miller Mirra 2 chair for over fifteen years now. If I recall correctly, I paid around $800 for it and it's still going strong. About eight or nine years of having it one of the supports for the back broke but I got a new one under warranty and it's been fine ever since. The only other thing I've had to do is lubricate the lower parts to keep it from squeaking.

2009 Setup

If you're curious what I was running 14 years ago...

I guess I was doing more design work and Ruby back then.

Hardware

  • Mac Pro: 4 core, 2 x 2.66GHz Dual-core Intel Xeon, 7GB RAM
  • Dell 24" LCD Monitor: primary display
  • Samsung 19" LCD Monitor: secondary display used for IM, Twitter, iTunes, and Skype. I never use Spaces.
  • Microsoft Ergo keyboard
  • Logitech Ergo Mouse
  • Logitech USB headphones
  • iPhone 3G
  • Sennheiser Headphones

Desktop Software

  • Mac OS X Leopard
  • Transit - used for SFTP and managing files on Amazon S3
  • Adobe Photoshop CS3
  • Adium
  • Tweetie (for desktop and iPhone)
  • Skype - mainly used for conference calls
  • Skitch - great for taking quick screenshots
  • OmniGraffle - I use it for illustrating ideas and mind-mapping
  • IntelliJ IDEA - I use it for Java, JRuby, and Ruby
  • TextMate - use it for quick edits and prototyping in Ruby
  • VMWare Fusion - virtual instances of Ubuntu and Windows
  • Terminal
  • Safari - at the moment (tend to switch between FF, Chrome and Safari)

Hosted Software

  • GitHub - recently converted from Subversion
  • Google Apps - Gmail for mail, and Google docs
  • Atlassian Confluence * - personal wiki for tracking ideas, features
  • Atlassian JIRA * - issue tracker and personal to-do list
  • Atlassian Bamboo * - continuous integration
  • Sonatype Nexus * - manages my personal Maven repository
  • Harvest (getharvest.com) - for client billing * hosted on my home network