Development Setup

Terminal

I am a very big fan of tmux and oh-my-zsh, which allow me to navigate around my computers with minimal fuss. For tmux, I have a hacked script for fuzzy finding project directories. The following two lines in my zshrc configure the directories to be searched (separated by colons) and set up a custom keybinding for me to activate the script:

export WORKSPACES=$HOME/Documents:$HOME/docs/programming:$WORKSPACES
bindkey -s "^f" "tmuxs -d 4\n"

Editor Configuration

I use a custom neovim setup with LSP, Telescope, and all the other goodies baked in. Uses the catppuccin color scheme.

I’ve also written a set of vimrc’s with my favorite settings and features that one would expect from a modern editor. They’re meant to be dropped onto newly minted servers or containers for immediate use.

# Full-featured LSP version (requires git)
curl -LJ https://git.junickim.me/junikimm717/vim2023/raw/branch/master/lsp.vimrc -o $HOME/.vimrc
# Version with minimal plugins (requires git)
curl -LJ https://git.junickim.me/junikimm717/vim2023/raw/branch/master/minimal.vimrc -o $HOME/.vimrc
# No plugins required (good for bare minimal container or vps instances)
curl -LJ https://git.junickim.me/junikimm717/vim2023/raw/branch/master/noplug.vimrc -o $HOME/.vimrc

Preferences

Everything here is just my opinion, and you can theoretically build anything in any Turing-complete language. That being said, I do find certain frameworks and languages nicer to work with than others. If I had to start a new project right now, I would probably choose a subset of the following technologies given they end up being useful:

  • Golang; it’s the Python of compiled languages; very easy to work with (cough cough Rust >_<), the module system is dead-simple, and it’s quite performant.
  • Django; good for any web project of sufficiently large complexity. There’s no magic (a big plus for me), and the docs are very helpful.
  • Docker; the default way to containerize applications. It works seamlessly and is quite intuitive to use.
  • Nix Flakes; reproducible builds ♥ only downsides are that docs are kinda bad and bug fixes on nixpkgs take forever to be pushed.
  • TypeScript; I often have to do nontrivial frontend work, and I’m not moving away from the sweet sweet LSP completions anytime soon.
  • TailwindCSS or SimpleCSS; I am never moving back to semantic styles ever again.
  • Astro; I first used this when writing up PureMOOt documentation. It is now my best friend for any content-rich website, including this one!
  • React; First JavaScript framework I learned, used it ever since.