21 - Thorsten Ball
Hey! This is Adib. I hope you’re enjoying this newsletter as much as I do!
If you would like to share your dotfiles, check Dotfile’s about page.
Also, consider joining our Discord community! ❤️
Thorsten Ball is a software engineer working remotely for Sourcegraph. He worked on many things there and right now he’s the engineering manager and his official title is Head of Source.
He wrote and self-published Writing An Interpreter In Go and its sequel Writing A Compiler in Go.
For many years now he’s been interested in interpreters and compilers, which led to these two books. In the last 2 years, He’s also been hacking on an optimizing compiler, written in Rust and called tucan
. It's still unpublished but maybe he’ll someday do something with it.
He also writes a weekly newsletter called Register Spill (registerspill.thorstenball.com) and maintains a blog at thorstenball.com.
Neovim and Terminal
Love my Neovim setup and am pretty happy with it nowadays. I rarely change stuff.
My Neovim setup can be divided into two eras: pre and post LSPs in Neovim.
Pre-LSPs everything was still very much like the old Vim experience. Now I have multiple LSPs setup, I have diagnostics, I use tree-sitter for semantic highlighting. It's very, very nice.
It looks like I use a ton of plugins, but those are mainly for completion/snippets/... I have never used completions in my life until 2 years ago and now I use it all the time.
One thing I can't live without: using
neoterm
andvim-term
to very quickly and easily run the tests closest to cursor in terminal window. See config here. This is so handy. — Thorsten
Favorite Tools
Thorsten spends 90% of his dev life in a terminal or in the browser. He doesn’t use a lot of GUI apps.
CLI
He can't live without a terminal and Tmux inside of it, so top 3:
Neovim: Best Editor Ever.
tmux: Terminal multiplexer
Kitty: Terminal emulator
Lately, He’s been using Mitchell's terminal emulator which is still in a private beta.
Other favorite tools:
ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore.
zsh: Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added.
fzf for fuzzy
Ctrl+r
to search backward in shell history.z to jump to any directory.
direnv:
direnv
is an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
That, plus git
and language-specific tools are basically all he needs on a daily basis.
GUI
Alfred: Search your Mac and the web, and be more productive with custom actions to control your Mac.
Postico2: The native Mac app for PostgreSQL
Postgres.app: Postgres.app is a full-featured PostgreSQL installation packaged as a standard Mac app.
CleanShot X: Screenshot tool for MacOS
Flameshot: Powerful, yet simple to use open-source screenshot software. (On Linux)
Fonts
He’s been using Berkeley Mono for a while now and he loves it.
https://berkeleygraphics.com/typefaces/berkeley-mono/
Dotfiles
He has two repositories:
mrnugget/dotfiles, which contains non-Vim dotfiles
mrnugget/vimconfig, which contains my Vim config
He set them up years ago and now doesn't have to do anything but follow the instructions in the READMEs when he gets a new machine.
The most important files to look at are probably the
.vimrc
and the.zshrc
.His
zsh
prompt changes color depending on whether there's a background job running. See code here. That means he can see if he put Vim into the background withCtrl+z
, which he does very often. It's like minimizing the program in the terminal.He also has an OS-specific env configuration, see here
He can change Kitty theme from inside the terminal: here
Fuzzy checkout of pull requests: here
Nr 1 shell tip: use a large history file and a tool to fuzzy-search through it. See config here. He uses
fzf
to fuzzy-search through it.He also can't live without my
git
shortcuts and helpers: hereHis
tmux
config has also grown over the years. He especially like that he can navigate between tmux splits and Vim splits with the same keybindings, thanks to vim-tmux-navigator
Desk Setup
You can find details of Thorsten’s setup here https://thorstenball.com/my-setup/
Favorite Books
Check his Goodreads profile!
Technical:
Pragmatic Programmer, The: Your journey to mastery by David Thomas (Author), Andrew Hunt (Author)
A Philosophy of Software Design, 2nd Editing by John K. Ousterhout (Author)
Non-technical: