Even when I’m not using Claude Code, most of my chatting with LLMs happens in the terminal. I use my fork of mods, the (now sunsetted) LLM CLI client from Charm, to which I’ve added an interactive mode and a handful of other niceties for the majority of my day-to-day LLM interactions.
I released kitcat a while back: a matplotlib backend that draws plots directly into your terminal instead of opening a GUI window. The original release was barely a hundred lines and dead simple, and I’ve ended up reaching for it almost every day since.
One thing I do constantly as I read an academic paper is click citation links to see the work being referenced. The page jumps to the bibliography section — but with 10–20 entries crammed together on the page, it’s difficult to spot the specific entry you landed on.
I have been using Roam Research for taking notes for years. One of the crucial features I like in Roam is linked references, also known as “backlinks”: you create links to new or existing pages as you write by wrapping the page name in [[ ]], and along with creating the forward link, you get references back to your writing on each of those pages. This frees your mind from the “Where should I file…
Last year I wrote about my simple set up for running mods CLI in a loop and turning it into a little windowed program I can invoke quickly for interacting with LLMs. I vastly prefer this to going to a website to interact with LLM chatbots. Having it instantly available with a simple keybinding (Super+g in my case) makes all the difference — I use it all day, every day.
I wrote previously about vibe-coding a slide navigator into marp-cli — a thumbnail overview for the default template that lets you jump to any slide without cycling through them one by one. My initial version worked, but it was hacky and slow.
On X11 I was using Polybar for my status bar and modules. One thing I liked about it was how easy it was to have modules that only appear when relevant. There are certain bar modules that I don’t need visible at all times — for example, I have a script that lets me quickly record a section of my screen. I don’t use this often enough to justify a permanent module for it. I can easily invoke the…
One of the core FOSS principles is the freedom to study how software works and adapt it to your needs. In practice, though, diving into a large, unfamiliar codebase in a domain you’re not an expert in, using a programming language you’re not necessarily proficient with, is hard.
I’ve been slowly self-hosting more and more services on my home server. I have a non-boot partition that stores all the persistent data, mostly used by various docker containers. I’d never bothered encrypting this partition, mostly out of laziness, but when I recently had to upgrade to a larger disk, I thought it was a good opportunity to encrypt it with LUKS.