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.