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 Senior Cloud Engineer, which falls under the development practices of:

  • Public Cloud Tooling (Microsoft Azure, Google Cloud Platform, Amazon Web Services)
  • Docker and Containerization Platforms
  • Continuous Integration / Continuous Delivery Processes
  • Developing Go CLI and Platforms
  • Python Scripting
  • Infrastructure as Code

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

  • Systems Programming
  • Open Source :D
  • Android Programming
  • iOS Programming

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:

CPUIntel - Core i7-8700K 3.7GHz 6-Core Processor
CPU CoolerCooler Master - Hyper 212 EVO 82.9 CFM Sleeve Bearing CPU Cooler
MotherboardMSI - Z370 GAMING PLUS ATX LGA1151 Motherboard
MemoryG.Skill - Ripjaws V Series 32GB (2 x 16GB) DDR4-3000 Memory
StorageSamsung - 850 EVO 500GB M.2-2280 Solid State Drive
StorageWestern Digital - Caviar Blue 1TB 3.5" 7200RPM Internal Hard Drive
Video CardGigabyte - GeForce GTX 1070 8GB G1 Gaming Video Card
Computer CasePhanteks - Enthoo Pro M Tempered Glass (Black) ATX Mid Tower Case
Power SupplyEVGA - SuperNOVA G2 750W 80+ Gold Certified Fully-Modular ATX Power Supply
Sound CardAsus - Xonar DGX 24-bit 96 KHz Sound Card
Sound CardM-Audio Mbox II Mini
Wireless Network AdapterGigabyte - GC-WB867D-I PCI-Express x1 802.11a/b/g/n/ac Wi-Fi Adapter
MonitorAOC 4K IPS Monitor (x2)
MouseLogitech MX Master 2S
KeyboardAnne Pro 2 with Kailh Box Whites + QMK
SpeakersAudio-Technica ATH-M30x Studio Headphones, Personus Eris 3.5
MicrophoneAudio-Technica AT2020
Operating SystemFedora 36

Laptops

LaptopYearOSPurpose
Dell XPS 152014Fedora 36General Software Development
Macbook Pro 152015MacOSiOS and Android Development
Macbook Pro 152020MacOSCloud 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: Visual Studio Code, Neovim, Emacs
  • Shells: Fish
  • Terminals: Alacritty
  • Infrastructure as Code: Terraform, Puppet, Packer, Chef
  • Fonts: Cascadia Code, JetBrains Mono, Fira Code

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 separation 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 brief 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