Got some items to sell? Build out a tinylistings instance and send some more eyes to your eBay listings. Demo: https://listings.vandragt.com/. v1.0 just out #projects #tinylistings
Sander van Dragt's Notes
-
-
herdr-dash: a board for my agent sessions
I run several Claude sessions at the same time in herdr, usually one per repository, and some of them run on another machine. herdr already knows the state of each one (idle, working, blocked or done) because it reads the terminal output. But to see which session wanted something from me, I had to go through the workspaces one at a time.
So I made herdr-dash, a kanban board that shows every agent pane as a card in one of four columns: waiting for you, in progress, idle and done. Clicking a card focuses that pane in herdr. It is one Python file that uses only the standard library, so there's nothing to install (no venv, no build step!). It listens on herdr's socket and redraws the board whenever a pane changes.
A few things got added once I started using it all day:
- A card that changes while I'm not looking at its pane gets a purple outline, which stays until I focus the pane.
- The page title and the dock icon show how many sessions are waiting.
- Each remote herdr server gets its own tab.
- The board reloads itself when its connection goes quiet.
- A session whose title starts with a dot stays off the board unless it is blocked.
Today I tagged v0.1.0, the first release.
If you use herdr I'd be curious whether it works for your setup too.
-
Created a small script that allows you to save Windows groups so that when you focus one you focus all. Handy for companion apps.
-
Love these QOL oneshot prompts:
a small service now watches for the screen lock. When you lock, it pauses every media player that is playing. When you unlock, it resumes only the players it paused, so anything you had already paused stays paused.
-
Working on: Folio

-
Working a little bit recently on restoring Pantheon desktop on top of OpenSUSE Leap instead of Ubuntu 24.04. Out of date version for both, but it was the most stable fix. Ultimately I hope to get the desktop environment of elementaryOS running on top of the rolling Tumbleweed, and have a rolling system that works and looks the part.
Some photos:

At the start, the pantheon pattern couldn't be installed on Leap 16, and after a manual install the login screen crashed, so you could never reach a desktop.
-
viv 0.15 to 0.21
It's been a while since I last wrote about Vivace, my Composer alternative (a PHP package manager). There have been seven releases since, so let's get you up to speed.
The goalposts of the project have shifted a little. Viv started as a viability test to see if rewriting Composer in Rust would bring benefits. When that turned out to be the case, I wanted it to become a faster Composer with a few extra features. Viv 0.14 is the ultimate version of that, and it's very fast.
I'm now more interested in what else is possible: if we are not beholden to Composer's lock file and vendor setup, and just want to build a correct, working PHP application from the dependencies provided, what else can we do?
Using viv, you are no longer affected by these common developer gotchas:
Automatic conflict resolution (0.20)
If you've worked with Composer for any length of time with two or more coders, you've encountered lock merge conflicts.
I've analysed 355 merge conflicts from real projects I've been involved in, and all but 6 now merge automatically without losing compatibility with Composer. The remaining 6 mostly involve packages or commits that no longer exist.
viv lock mergeintroduces a git merge driver, and there's aviv.locklock file, versioned alongside Composer's, that adds the information needed to make this possible. Even without it, the majority of merges resolve cleanly.PHP versioned projects (0.19)
viv php installdownloads a self-contained PHP build and pins it to the project. This means you can run the installed tooling (viv run phpcs) and isolated external tools (viv x phpunit/phpunit:^11) on the project's PHP version with zero setup.A global PHP install is no longer needed.
Dependency isolation (0.21)
Many WordPress plugins ship their own copy of libraries like Guzzle or the AWS SDK. When the site installs a different version of the same library, Composer installs both without complaint, and whichever loads first wins; the other plugin breaks at runtime. Viv warns you when this happens, and also provides a solution:
viv isolate <package>.This prefixes the namespaces of the plugin's bundled libraries and updates the autoloader, so both versions can be used at the same time, with no manual changes needed.
The rest
There's a bunch of other things that have changed; have a look at the changelog.
You can try viv and stop using it without affecting your project: it's either Composer-compatible or it stops.
Constructive feedback requested, positive or critical.
-
Let’s see if we can help out eBay and get some items sold https://listings.vandragt.com/
-
Does Microsoft ever change? Learned today to install a UA switcher addon and switch to Edge for Windows and you get the new version of Teams with more background change/blur options on Edge for Linux
-
I can’t believe anyone just uses their phone as their main computing device. It’s so rubbish. Web page for insurance forms just reloads in the middle of it due to multitasking.