Some people have complex development processes and flows - making use of tools such as heavy editors and IDEs, Docker for running and building locally in development, or even develop entirely remotely over SSH connections. Other people use simpler combinations of tools.
I thought I'd write briefly about what I use on a daily basis. I have a relatively simple development tech stack:
- Terminal application (I use the
Terminal.appapplication that ships with my Mac, since this works best for me)
- tmux - for handling multiple windows and panes
- tmuxinator - for managing complex tmux sessions (I recently wrote more about this)
- vim - a simple yet powerful text editor
- git - for source control
I also use a small number of Vim plugins - installed via Vundle - to add nice quality-of-life features to my editor:
mxw/vim-jsx- JSX syntax highlighting
dart-lang/dart-vim-plugin- Dart language syntax highlighting
rust-lang/rust.vim- Rust language syntax highlighting
morhetz/gruvbox- Attractive Vim colour scheme
airblade/vim-gitgutter- In-editor Git indicators
ctrlpvim/ctrlp.vim- Awesome and quick file searching
scrooloose/nerdtree- Easy file/directory tree navigation
I backup and sync my dotfiles (e.g. my
.tmux.conf) by symlinking from my Nextcloud sync directory.
yarn and for Python projects I use
virtualenvs and Poetry for handling dependencies.
It'd be nice to have an elegant cross-platform approach to provisioning new machines with this setup, but given its relative simplicity it isn't too much of a headache to get things back up and running again when I switch machines!