What I Use in 2020 For Software Development

Cover image

On Software Development

I figured I'd open up this article with explaining a few of the domains that I work in, both professionally and as a hobby. My hopes is that it provides a better context into some of the choices of technologies. For work, my current title is Cloud Engineer, which falls under the development practices of:

  • Public Cloud Tooling (Microsoft Azure, Google Cloud Platform)
  • Docker
  • Continuous Integration / Continuous Delivery
  • Python, Ruby, Groovy scripting
  • Golang CLI and Tooling
  • Infrastructure as Code

On the side, I find myself doing hobby programming in the following domains:

  • iOS Development
  • Android Development
  • Web Development
  • Open Source :D

This article was inspired by the ever-persistent question "What do they use?", which Wes Bos decided to answer in the Uses.Tech project. I figured, I should add the same to my own site for those interested (in a much more condensed version which can be found here!) and work my site into the listings too. We can always use more canadian representation.

Hardware - Generalized

Desktop

For most of my programming and computer hobbies, I still use the same desktop that I built in 2019 and talked about here, which has the following specs:

CPU Intel - Core i7-8700K 3.7GHz 6-Core Processor
CPU Cooler Cooler Master - Hyper 212 EVO 82.9 CFM Sleeve Bearing CPU Cooler
Motherboard MSI - Z370 GAMING PLUS ATX LGA1151 Motherboard
Memory G.Skill - Ripjaws V Series 16GB (2 x 8GB) DDR4-3000 Memory
Storage Samsung - 850 EVO 500GB M.2-2280 Solid State Drive
Storage Western Digital - Caviar Blue 1TB 3.5" 7200RPM Internal Hard Drive
Video Card Gigabyte - GeForce GTX 1070 8GB G1 Gaming Video Card
Computer Case Phanteks - Enthoo Pro M Tempered Glass (Black) ATX Mid Tower Case
Power Supply EVGA - SuperNOVA G2 750W 80+ Gold Certified Fully-Modular ATX Power Supply
Sound Card Asus - Xonar DGX 24-bit 96 KHz Sound Card
Sound Card M-Audio Mbox II Mini
Wireless Network Adapter Gigabyte - GC-WB867D-I PCI-Express x1 802.11a/b/g/n/ac Wi-Fi Adapter
Monitor LG 25 Inch Ultrawide 1080p
Mouse Pictek Wired Mouse
Keyboard Z-88 65% Mechanical Keyboard with Gateron Browns
Speakers Cheap Logitechs and Audio-Technica ATH-M30x Studio Headphones
Microphone Audio-Technica AT2020
Operating System Windows 10 with many Linux Docker Containers / Pop!OS

As of now, I've swapped out and upgraded a few items in the quest for optimizing my workspace:

Monitor AOC 4K IPS Monitor
Speakers Personus Eris 3.5
Mouse Logitech MX Master 2S
Keyboard Anne Pro 2 with Kailh Box Whites

Laptops

Laptop Year OS Purpose
Dell XPS 15 2014 Pop! OS & Fedora 31 General Software Development
Macbook Pro 15 2015 MacOS iOS and Android Development
Macbook Pro 15 2019 MacOS Cloud Engineering

Software & Tools

I try to run cross-platform software wherever possible to ensure that I can create productivity workflows and shortcuts which can be used in various mediums. With that in mind, the rise of Electron applications swept the 2010s by storm and I fell into it's cold embrace for quite a while. In the recent few months, I've been eagerly searching for applications which reach the same criteria written in non web-based technologies. My latest find: Alacritty, a GPU-enabled terminal written in Mozilla's RUST. I would swap out VS Code, but I've yet to find a competing text editor with a similar feature set (aside from Sublime which I'm going to be trying out in 2020). Open to your recommendations!

  • Editor: Vim, Visual Studio Code, XCode
  • Shells: BASH, Fish, ZSH
  • Terminals: Alacritty
  • Infrastructure as Code: Terraform, Puppet, Packer, Chef

For the UNIX side configurations, I'll include my dotfiles repository (out of date, #TODO: will update this month!) in the resources section of this article, along with here. I find myself using *nix systems more often these days for both work and play, so I'll have to find a clean seperation before I can post the fishrc, zshrc, and bashrc files. Speaking of Unix...

On Windows vs Linux

Warning, I could go into this for hours, so let's keep it as breif as humanly possible with:

Many who've known me for a while have seen various distribution grace and break my various workstations, and the occasional "Maybe Windows isn't so bad, let's give it a try!" moment which lasts between a week, and a year (currently on my longest W10 streak on the desktop). I like to have hands in both worlds (well, three if you include MacOS), and pick-choose as needed for the task. I have often found myself gravitating to the Linux kernel more than NT, but that is mostly due to the development environment being more accessible. That being said, there's benefits to both; so lets start a holy war only for good argument and conversation!

TLDR: Use whichever you like that's best for the task.

Resources