$ cat ~/wolfe.id.au/post/2022-07-23-my-development-environment.md

My Development Environment


I was inspired by others to document the tools I use working as a software developer professionally, and hacking on side projects out side of work.

One thing to note is in my day job I work on an Apple Mac, but my personal machine is a Linux laptop running PopOS . I find using Linux as a desktop works as most software I use is web based or supported on linux. I also use it for IoT development as pretty much all the tool chains I use supports it.

On a whole over the years I have moved to a more minimal setup, primarily to keep things simple, less is easier to maintain, easier to share, and more likely to be adopted by others.

The stack I work with professionally is pretty varied, but can be summarized as:

  • Amazon Web Services (AWS) , I work primarily this cloud platform in my day job
  • Cloudformation , native AWS infrastructure deployment
  • Go , great language for building tools, apis, and backend services
  • Python , used for cloud orchestration, scripting and machine learning
  • NodeJS often using Typescript , for frontend development
  • Git , used for all things source code

CLI Tools

I primarily use zsh as my shell, sticking to a pretty minimal setup tools wise.

  • Docker for containers, which I mainly use for testing.
  • direnv which is used to change environment settings in projects.
  • The Silver Searcher a faster search tool for the cli, ag is my goto for locating stuff in files when developing.
  • Git Hub CLI , makes working with GitHub from the CLI a dream.
  • AWS CLI is used to write scripts and diagnosing what is up with my cloud.
  • AWS SAM CLI for deploying cloudformation in a semi sane way.
  • nvm , nodejs changes a lot so I often need a couple of versions installed to support both new and old software.
  • Git Prompt for a dash more information in my shell about the current trees Git status.
  • gnupg , which I mostly use for Signing of Git commits and software, and a bit of data encryption.

Most of my builds done using the good old Makefile so I always have make installed.

Editor

Currently I use vscode when developing, it is one of the first things I open each day. I was a vim user but moved to vscode as I prefer to use a more approachable editor, especially as I work with developers and “non tech” people and they find it less daunting to learn.

I am trying to help everyone code, so using an approachable editor is really helpful!

To support the stack I use the following plugins:

  • Code Spell Checker , I really hate misspelling words in my code.
  • EditorConfig for VS Code , handy way to keep things consistently formatted across editors when working in a team.
  • GitLens — Git supercharged , helps me figure out what changed and who changed it without leaving my editor.
  • Go , primary language I develop in.
  • indent-rainbow , this addon keeps me sane when editing whitespace sensitive languages such as python and YAML!
  • Python , tons of stuff uses this language so I always end up using it.
  • vscode-cfn-lint , avoiding obvious errors and typos in my cloudformation templates saves a ton of time and frustration.
  • TODO Highlight , I always try and add information and notes to my code, this helps highlight the important stuff.
  • YAML , most of the tools I deploy with use it for configuration so I need a good linter.
  • GitHub Theme , I use the dimmed dark mode which is really nice comfortable coding theme.