Development Environment Opinions
Table of Contents
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 https://raw.githubusercontent.com/Homebrew/install/master/install)"
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 #
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- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
# Install fast-nvm-fish
# Only needed for fish
curl -sSL https://raw.githubusercontent.com/brigand/fast-nvm-fish/master/nvm.fish > ~/.config/fish/functions/nvm.fish
# 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/config.fish or ~/.zshrc or ~/.bashrc
nvm use 18
coreutils #
https://www.gnu.org/software/coreutils/coreutils.html
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/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 #
https://github.com/nvbn/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/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 #
https://github.com/starship/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/config.fish
starship init fish | source
# ~/.zshrc
eval "$(starship init zsh)"
# ~/.bashrc
eval "$(starship init bash)"
VSCodium #
https://github.com/VSCodium/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 #
https://github.com/tonsky/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/config.fish or ~/.zshrc or ~/.bashrc
alias ls='exa'
bat #
https://github.com/sharkdp/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/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/config.fish or ~/.zshrc or ~/.bashrc
alias find='fd'
tldr #
https://github.com/dbrgn/tealdeer
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 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