How I write software
In this post I am collecting techniques, languages, and tools that I use to
write and maintain software
My dotfiles are open source.
For version control I default to using
or Gitea (when I need to self-host, eg airgap).
GNU Bash is my shell,
Starship is my prompt,
tmux is my terminal multiplexer.
Vim is my editor.
I use Secretive for storing SSH keys
when using Mac OS, otherwise I use YubiKeys.
The standard library is excellent and makes it easy to write programs and
applications without many dependencies. The built in profiling tools are excellent.
When writing tests, I reach for ginkgo,
gopacket is an excellent library for
I don’t use a debugger as much as I should, when I do it is
I use Ruby for writing tests (eg for infrastructure configuration) and small
RSpec and friends for writing tests.
Mechanize for automating web
For simple web applications it is difficult to beat
curl is always useful, I’ve also written my own HTTP
In addition to the usual suspects:
dig, ss, netstat, ping, traceroute, tcpdump;
mtr is especially useful.
socat is an extremely versatile tool.
Grafana and Prometheus
is what I use for everything metrics related:
networks, applications, VMs,
my bank account,
and the weather.
I use kubernetes for my personal
cloud and for my homelab.
is the CI/CD tool with which I am most familiar, and is the
automation system which I use personally.
Cloudflare for DNS
and Cloudflare workers for a few projects.
I use a MacBook Air (M1) as my daily driver with Mac OS X. My Thinkpad X220
runs Arch and Void. My Linux
development VMs run Ubuntu.