Skip to main content
  1. Posts/

Development Environment Opinions

This is a collection of software I’ve used that I have found useful or neat. I’ve included install instructions for macOS but if you’re on linux, finding other ways to install this software shouldn’t be difficult.


Homebrew #

Homebrew is a package manager for macOS. It has some annoyances but has the largest package base and community around it.

# Install brew
/usr/bin/ruby -e "$(curl -fsSL"

fish #

The fish shell provides a modern take on the shell and has some great documentation.

# Install fish
brew install fish
# Add fish to the list of available shells
echo /usr/local/bin/fish | sudo tee -a /etc/shells
# Set your shell to fish
chsh -s /usr/local/bin/fish
Node Version Manager>

Node Version Manager #

POSIX-compliant bash script to manage multiple active node.js versions.

# Install nvm
# Note: Don't install this via brew as it doesn't work as of the time of writing.
curl -o- | bash

# Install fast-nvm-fish
# Only needed for fish
curl -sSL > ~/.config/fish/functions/

# Install node and npm via nvm
nvm install 18
nvm use 18

You may also need to add a line to your configs:

# ~/.config/fish/ or ~/.zshrc or ~/.bashrc
nvm use 18

coreutils #

The coreutils brew formulae contains GNU file, shell, and text utilities. The default utils provided by macOS have some shortcomings and idiosyncrasies that don’t exist in the canonical GNU utilities.

# Install coreutils
brew install coreutils

You will need to update your PATH and MANPATH variables to tell macOS to use the new utils over the macOS utils:

# ~/.config/fish/
set PATH /usr/local/opt/coreutils/libexec/gnubin $PATH
set MANPATH /usr/local/opt/coreutils/libexec/gnuman $MANPATH

# ~/.zshrc or  ~/.bashrc
export PATH="$(brew --prefix coreutils)/libexec/gnubin:/usr/local/bin:$PATH"

thefuck #

thefuck is one of the most useful command line utilities I have found.

# Install thefuck
brew install thefuck

You will need to configure it before use as well:

# ~/.config/fish/
thefuck --alias | source
# ~/.zshrc or  ~/.bashrc
eval "$(thefuck --alias)"

I would also recommend adding an alias ;)

# Be more polite
alias f='fuck'

starship #

Starship is a minimal, fast, and extremely customizable prompt for any shell.

brew install starship

You will need to configure your shell to use starship:

# ~/.config/fish/
starship init fish | source
# ~/.zshrc
eval "$(starship init zsh)"
# ~/.bashrc
eval "$(starship init bash)"

VSCodium #

VSCodium is a build of VSCode that strips out all of Microsoft’s telemetry.

# Install vscodium
brew cask install vscodium

# Can still be launched from cli like this:
code ~/foo.txt

FiraCode #

FiraCode is a nice monospace font with ligatures.

# Install FiraCode
brew tap homebrew/cask-fonts
brew cask install font-fira-code

You will also need to configure Visual Studio Code:

// settings.json
  // Use the font
  "editor.fontFamily": "Fira Code",
  // Use the font ligatures
  "editor.fontLigatures": true

exa #

exa attempts to be a more featureful, more user-friendly version of ls.

brew install exa

You can replace ls with exa with an alias in your config file:

# ~/.config/fish/ or ~/.zshrc or ~/.bashrc
alias ls='exa'

bat #

A cat clone with syntax highlighting and Git integration.

# Install bat
brew install bat

Again, we can replace cat with bat with an alias:

# ~/.config/fish/ or ~/.zshrc or ~/.bashrc
alias cat='bat'

fd #

fd is a simple, fast and user-friendly alternative to find.

# Install fd
brew install fd
# ~/.config/fish/ or ~/.zshrc or ~/.bashrc
alias find='fd'

tldr #

A collection of simplified and community-driven man pages.

# Install tldr
brew install tealdeer

# Use like man
tldr node

htop #

A terminal based process/task manager for unix systems.

# Install htop
brew install htop

git #

Git comes on macOS by default but it isn’t updated very frequently. You can install the latest git with brew:

# Install git
brew install git
Mark Text>

Mark Text #

Mark Text is a markdown based notes application. I like having my markdown notes separate from my VSCode instances.

I used Mark Text to write this article. :D

# Install Mark Text
brew cask install mark-text