Superstack: CLI Guidelines, Tiny City Homelab, Blockchain Chicken Farm
An open source guide for making delightful command-line apps
Hi! It’s been almost a year since I sent a newsletter. So, let me reintroduce myself. I’m Carl Tashian and this is Superstack, a nerdy newsletter about engineering and leadership and other things I think you might like! You probably signed up on my website. Not into it? You can unsubscribe at the bottom of this note.
CLI Guidelines
Last fall I collaborated with Ben Firshman and Aanand Prasad (co-creators of Docker Compose) and Eva Parish (a technical writer at Squarespace) on CLI Guidelines: an open-source guide for designing CLI applications.
This project came about when Ben found a silly blog post I wrote called The Poetics of CLI Command Names, and he asked me if I’d be interested in making something more comprehensive about CLI application design. Being a UX nerd and CLI lover, I said yes. We dug into design manuals from the 1980s and 90s (like the original Apple Human Interface Guidelines) and drew upon our experiences as software engineers. We’re very happy with how it turned out.
Big City, Tiny Homelab
During the pandemic, I have especially enjoyed (and have been delightfully distracted by) building a small homelab in our San Francisco apartment.
A homelab is a playground for learning about computers and trying out new technologies. I’m using mine to learn more about networks, operating systems, hardware, and resource provisioning and orchestration. This is a popular hobby among engineers and gamers—I was amazed to see that the /r/homelab subreddit has 375,000 members!
Even though I just have a few Raspberry Pis and an Intel NUC in my homelab, having physical hardware to play with gets me excited about computing and networks.
Here’s a quick rundown of some homelab projects:
I built a time server. The built-in clocks in computers are notoriously prone to drifting. I got a Uputronics GPS hat, which I’m using to run a local GPS-disciplined stratum-1 NTP server with NTPSec. GPS-disciplined means that the computer’s clock is continuously adjusted to match the radio pulses that are sent out every second by GPS satellites. Stratum-1 means that the clock gets its time from a Stratum-0 time source (in this case, GPS—but atomic clocks are also Stratum-0 sources).
I’m running two instances of Pi-Hole, which is a DNS sinkhole for network-wide ad blocking. It’s a great piece of software, despite the unfortunate name.
Downstream from Pi-Hole, I’m running dual CoreDNS instances for local DNS. CoreDNS has been super easy to configure and it just feels like a really well built piece of software (written in Go).
I’m running step-ca as a Certificate Authority for the network. In my role as a Developer Advocate at Smallstep (the company behind step-ca), I’ve learned a lot about public key infrastructure this year. Certificates are everywhere, and it’s been nice to have a tiny CA to play with.
Finally, Prometheus and Grafana have been crucial for monitoring the infrastructure.
Compared to the homelab, cloud computing just feels comparatively cold to me. I like engaging with the actual circuits. Maybe because that’s what I grew up doing, working at an ISP as a teenager, with my desk as close to the server room as I could get it.
Blockchain Chicken Farm
In September my dear friend Xiaowei Wang published a book called Blockchain Chicken Farm (And Other Stories of Tech in China's Countryside). It’s a whirlwind tour of China’s rural tech world, which is so different from what we think of as “technology” in the West. I just love Xiaowei’s unique lens and engaging writing style, and it was a pleasure to help them out with reviewing early drafts and giving them moral support through the long journey of writing a book. This is the perfect quarantine book for anyone who wants to travel right now but can’t.
As always, I love hearing your feedback on this newsletter. Thanks for reading!