My Developer Setup
Jul 18, 2023
One of the quirks of spending the past 6 years at one company is that the majority of the coding that I’ve done in that time has occured on a company laptop. While this physical separation is great for work-life balance, it also means that whenever I open my personal computer to write some code, I’m usually met with a long list of out of date libraries and keyboard shortcuts.
To alleviate this problem, this document is a gift to future me. It’s a running list of all the various tools and tricks I use as a software developer.
Note that I use a MacBook. Not all of these will work/apply on windows
Terminal
Here’s how I make the Mac terminal look/work the way I want
- starship.rs - all the good stuff with minimal setup
- One Dark Theme - gotta love it when terminal and VSCode match. A nice little addition on top of starship
- zsh-autosuggestions - a gamechanger. Way
better than recursive searching.
- To install:
- `brew install zsh-autosuggestions“
- Add
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
to~/.zshrc
- To install:
Environment Management
conda
I use Anaconda (via miniconda) to handle most of my global installation needs, including Python and Node.
Installing nodejs
via conda
I’ve become a big proponent of using an environment manager (like conda) to manage node installation. Ever try to switch to a different version of node? It’s a pain. Sure you can use n but I think it’s much cleaner to let conda do it for you:
- Install globally:
conda install -c conda-forge nodejs
- Or create an environment and install a specific version:
conda create --name node16
conda activate node16
conda install -c conda-forge nodejs=16.20.1
Python
I set my default python.defaultInterpreterPath
to that conda environment’s python shell so that
whenever i open a new terminal in vscode, it automatically activates the environment
pnpm
I started using pnpm instead of the normal npm
and have been loving it so far.
Dramatically reduced install times makes for a much nicer developer experience.
VS Code
Workspaces
VS Code workspaces are very useful, especially when you’re working in a monorepo with a front-end and back-end that are written in different languages (e.g. TypeScript vs Python).
I use a multi-root workspace where I have both the front-end and the back-end so that they both appear at the top level of VScode’s file explorer and so I can track their git histories separately
Settings
- Unicode character highlighting - really helpful when copying and pasting text to make sure unicode characters don’t sneak in
Launching from the command line
I use the code
command all the time to open files and directories in VS Code. A very easy install
process, just follow
these steps.
Extensions
- ESLint - lint your code as you go
- Prettier - auto-format your code
- Git Graph - useful visual diagram of your Git tree with lots of functionality for running commands from it
- mikestead.dotenv - adds
support for
.env
syntax - TODO Highlight -
highlights anywhere
TODO:
appears in the code - Color Highlight - highlights colors when they appear in your code
- Markdown All In One - a must when writing markdown (like this document!)
- One Dark Pro - my theme of choice
- Vitest - very helpful when writing vitest unit tests
- MongoDB for VSCode - convenient tool when working with MongoDB
Plus the official extensions for any language/framework I’m using (e.g. Svelte, React, Angular, Python, YAML,)
Software
- VS Code - hard to imagine life without it at this point
- Bettersnaptool - one of the only apps I have paid actual, personal money for. It’s worth the $2.99 to be able to hit⌘-⌥-→ and have my window snap to the right half of the page.