The Return of Shelf

Remember when the internet was young, there was a finite (but quite large) set of personal sites, personal contact actually mattered and you had trouble keeping track of who blogged where, who you corresponded with and what their social handles were?

You know, before all hell broke loose and we got 300 variations on impersonal blogging platforms (ahem Medium), entirely too many walled-garden social networks and utterly unmanageable spam?

Well, back in those days I used something called , created by Tom Insam, which did a pretty amazing thing for the time (because Apple actually had working desktop automation, but I digress):

It looked at the current foreground application, and tried to figure out if what you were looking at corresponded to a person in your address book–and then gave you more context on them

It was pretty amazing, really:

The original Shelf, surfacing context about Tom by looking at his site
The original Shelf, surfacing context about Tom by looking at his site

I spent quite a while hacking on it 16 years ago, and one of the things I really wanted was for it . At the time, was not a thing, but Apple was surprisingly ahead of the curve and was shipping a that I used to build myself quite a nice extension–that Apple kept killing, again and again, as it progressively neutered what developers could build atop Mail.

Eventually Apple killed much better, downright brilliant extensions like , and all we got is that stupid little “Filing Suggestions”/Move To button in Mail, which, besides being available only on macOS, seldom works and is hardly deterministic.

Well, guess what, LSM is still there, and thanks to the power of AI I have resurrected to a degree:

Shelf reborn, falling back to related mail search and Next Best actions
Shelf reborn, falling back to related mail search and Next Best actions

The code is up on GitHub, as usual, and I kept the original philosophy of capturing context from the foreground app (via a hideous pastiche of Apple Events and Accessibility, but it “works”), matching it to additional content from the same app (I’m focusing on Mail) and providing “Next Best” actions–which are entirely deterministic, by the way. I also tacked on a smattering of local Apple Intelligence support thanks to SwiftIntelligence (because I might want to use external models later).

And it works beautifully so far, even if I clearly need to remove the nerdy diagnostics and re-think the UX.

So what did I learn from this?

Not common sense, I’m afraid.

First off, after creating three or four desktop apps using nothing but , I now get both why some people love it and why some people absolutely hate it, especially compared with the ancient ObjC/AppKit combo. LLMs released since spring 2026 can finally generate Swift code that is actually usable, so I mostly let GPT-5.5/5.6 do the heavy lifting and focused on search ranking and the criteria for suggestions.

Also, oh goodness, how utterly useless Apple’s automation/AX APIs can be for this sort of thing. I have a lot of admittedly dated experience with Apple Events and Accessibility, but even I was surprised at how many things that should be trivial are either impossible or require a lot of workarounds to get right (like just finding the right window in a multi-window app, or getting the right item to glean context from).

And, finally, Apple’s Spotlight APIs in macOS 26 are completely and utterly broken because it is impossible for my app to find the exact same thing I can find with system Spotlight. Even with Full Disk Access, it seems that the only way I can programmatically search for an email message that I can find nearly instantaneously with Cmd+Space is to go and read the Mail SQLite storage myself, which is ridiculous:

  • It’s not a question of ranking, predicates, anything
  • It’s not a question of query timeouts
  • It’s not a question of just about anything I can send to the API (and I’ve pretty much fuzzed it)

There are no decent modern examples, either, so all I get are some messages from some accounts, not any message that matches the criteria I set from across all accounts.

This makes my little email filing helper only partially useful, so I’ll probably shelve it (pun intended) until macOS 27 comes along, and by then I will also see if I can get on-device models to actually file things for me properly.

And no, creating email rules doesn’t scale, and I also only want messages filed after I’ve marked them as read, which is another thing I was able to do just fine with Mail Act-On before Apple nerfed Mail.

I’ll probably write about this again come Christmas, with any luck.

AI as a weapon of mass cognitive destruction

I use AI every day; it’s unavoidable when you create agentic tooling. But something has been grating on me for months, and it isn’t about development: non-technical people are using it to generate far too much slop. Not code slop, but business slop.

Five paragraph meeting agendas. Four-page responses to a planning inquiry, because that way I get “all the facts”. A one-line question turns up dressed as a formal memo with a summary, three bullets of tangentially related sub-questions and a partridge in a pear tree. Documents that used to run a page now run six, padded out with restated context that nobody wrote by hand and nobody reads. Words are now effortless, so people produce more of them–whether or not they still mean anything.

The illusion of saved time

The immediacy is a bigger dopamine hit than you’d expect. Type a prompt, get six paragraphs and two tables in seconds, and it feels efficient. The sender reckons they’ve saved twenty minutes, and from where they sit, they have: what took twenty minutes now takes two.

Except the time didn’t vanish, it shifted and multiplied. Every recipient now has to wade through the padding, work out which sentence actually matters, and mentally rebuild the one-liner that should have been sent in the first place. Sender spends two minutes; ten people downstream lose fifteen each–if they read the whole thing at all.

Not even speed-reading helps

People in tech love AI because, well, let’s face it, few of them can write; the average coder isn’t very communicative. And if you do spend a lot of time communicating, the illusion above soon has you in thrall.

AI in the hands of people who can’t use it effectively simply dumps cognitive load on everyone else. I’m something of a speed reader (part of my slightly off neurological makeup), and it’s driving me nuts that a context switch which used to be instant now means ploughing through pages of vaguely dressed-up pseudo-facts.

Hilariously, one of the last times I replied to a verbose e-mail – in my usual terse one-liners and bullets – I pointed out that the data fed to the AI that helped create that e-mail was slightly off. The response was baffling: people actually mistook my British-leaning vocabulary… for an AI-generated response. Because, yes, I use em dashes.

Output is not productivity

The worst part is that management usually can’t tell the difference, and increasingly doesn’t try. More emails, longer documents, quicker turnaround–it all looks like productivity, and output is easy to count in a way quality never is. So the person firing off ten inflated reports looks busier than the one sending a single tight paragraph that actually settles the question.

This runs top to bottom of the org chart, and it comes down to a basic confusion about what AI is for. The point is to save effort–same result for less, or a better result for the same. Instead people use it to inflate the same result into something that looks bigger. Leadership watches the volume tick up and reads it as a gain. All that’s really happened is the work got louder.

And given the constant pressure to “sell”, to be noticed, to “achieve more”, we’re actually rewarding volume and calling it work because the worst KPIs are the easiest to measure: count of emails, length of documents, speed of reply. Just like measuring the number of PRs landed, or lines of code.

Nobody is measuring the cognitive load being dumped on the other end, or whether the message actually landed, or how many recipient-hours were wasted. So on paper the overload doesn’t exist–it just compounds, off the books, while some management dashboard stays in the green–“line go up”, right?

Measure (at least once, goddammit) and cut more than twice

Blaise Pascal once quipped “I would have written a shorter letter, but I did not have the time.” Being both factual and concise is the expensive option, not the lazy one. Halving a document means understanding it well enough to know what can be trimmed away. Getting a paragraph down to the pair of sentences that are really key takes judgement, a couple of revisions and, yes, time. And (this is what really annoys me) we still haven’t nailed the art of the concise slide presentation–instead, we’ve now weaponized it to… a nuclear degree.

And since I’ve mentioned slide decks: taste is one of AI’s main casualties, visual and textual alike. I abhor the sleek corporate jargon now available as e-mail ammunition to everyone–but that deserves its own post. And, like Pascal, I’m starting to feel I didn’t spend enough time trimming this one down…

Notes for June 28 - July 4

The , but I’ve still managed to squeeze in a few interesting hacks this week in between work, about the (too soon to call it, but like everyone else, I’m waiting for the other shoe to drop), and a new personal project of watching every Bond movie in chronological order (which is a surprisingly good way to spend a few evenings, even if it’s a bit uneven in quality).

Pi On Your iPad… Sort Of

Although I can run most AI agents inside ios-linuxkit, I keep getting bitten by the fact that Apple won’t let me run my own apps permanently on my iPad, so every now and then the build expires when I am either a) away from home or b) with every single Mac in the house off or otherwise inaccessible (or both), which is a giant pain.

And I do want to be able to run some form of terminal-based agent on the iPad, if only for helping me proofread and auto-link drafts (which I could theoretically do with an plugin, but none of those are reliable in the long term). So when I got wind of tau and realized it was pure , I immediately tried to install it inside , which has a very complete Python runtime and has been my go-to for all sorts of CLI tooling for years–and after some creative hacking, it mostly works:

tau running in a-Shell after some tweaks
tau running in a-Shell after some tweaks

My fork adds a bunch of things like GitHub provider support, hiding the sidebar and a few workarounds for common iPad foibles (like the lack of an Esc key, and ’s weird lack of support for Command + .), and like , is self-modifying to a degree where I can expect it to keep adapting to the way I work.

Home Automation

Since I have a love-hate relationship with air conditioning, I set up an additional Tuya ZG-204ZM to keep track of presence in the office and only turn it on when absolutely needed, which led me down the usual rabbit hole of to do something as simple as “only turn this thing on if I am in the office and it is over 27oC”, which takes all of three minutes to wire up in Node-RED – but is now undiscoverable by anyone else in the house since it won’t be visible in the Home app.

And yes, I know there are alternatives to the Home app. That is not the point.

Truly useful automation like “only turn this thing on if I am in the office and it is over 27oC and my kids didn’t leave the window open” (which takes two more minutes) is, alas, something that Apple will likely never really understand.

That said, this class of microwave-based presence sensors is very good. I’ve been using one for a year to turn on ambient lighting when I sit at my office desk (and dim everything when I walk away), and it’s been stupidly reliable. However, it seems that the really interesting, zone-aware ones that have been coming out require wired power, and if any smart home manufacturer truly believes people want to have wall warts to push 5V to these things through a highly visible wire, well, that’s just not happening (the model I’m using takes 2 AAA batteries, which apparently last forever).

AI Media Slop…ish

I have been playing with Ideogram 4 a bit , but this time on my puny RTX 3060 (which manages one decent-quality image every… 5 minutes or so), as well as with automated video generation via Remotion, mostly to figure out how some of the current commercial SOTA slop generation pipelines (the output of which we’re constantly exposed to in social media) can be scaled down to more useful pursuits, like helping teachers create grounded educational assets. Since I have long had a local Kiwix instance on my NAS (yes, I like the idea of having offline copies of iFixit and selected Stack Exchange forums), there’s no shortage of material, but I started out with a simpler thing–a piclaw intro:

A short intro clip that piclaw created for itself using Remotion.

So far, I see two major challenges:

  • Fact-based storylines/scripts are (as I expected) quite challenging to put together (LLMs have no taste, hence no decent criteria for emphasizing the right aspects of the source material). This seems like a relatively easy thing to handle using a multi-step curation process and better skill authoring, but requires time.
  • Consistency in visual depictions. Themes and templates go a long way, but anything that involves a visual prompt is just too prone to error–which is why I’ve been looking into Ideogram 4 as a possible way to improve things.

And yes, there’s a lot of pseudo-infographic stuff out there, but it’s all pretty much crap–any pointers on actually reliable techniques or open-weight models are welcome.

RDP Shenanigans

Faced with the prospect of years without significant hardware upgrades and the heat, I decided to revive , with a twist: I need to run modern graphical apps on the server, and right now that means Wayland.

xrdp still works great for most essentials, but we keep getting told that Wayland is the future for what–two decades now?–and it’s high time I explored RDP support in Wayland properly. After all, I know the wire protocol well, and I have extra motivation:

  • I’ve been meaning to fix a critical part of the Steam experience (pairing a new/updated device remotely to a headless machine) for ages, and getting view-only output out of Gamescope would be nice, because Valve clearly never gave much thought to the notion of headless Steam boxes.
  • GNOME Remote Desktop is… bad. I’m sorry, but it just is, not just because I want proper multi-user headless support but also because of various protocol support gaps.
  • I would very much like to, sometime in the future, have something that works at least as well as xorgxrdp and sesman to have minimally accelerated desktops (rendered using the GPU on the server side) streamed via RDP (preferably H.264) to an arbitrary client.

The current state of the art in the X11 world lets me do the latter (with minimally usable audio) pretty well, but there’s nothing equivalent in the Wayland ecosystem… Until I found out about lamco-rdp-server and started hacking at my own fork to implement the bits I wanted.

And oh boy, is Wayland broken by design if you try to do something like this… Right now the current setup is, roughly, an in-memory, headless Weston instance that, via some duct tape and wishful thinking, is screen captured through the “portal” abstraction by lamco-rdp-server, which feels like a tremendous waste of resources instead of, you know, just having a process hold both the compositor and the protocol renderer per logged-in user.

But I got most of the interesting bits to work already:

A headless Weston session streamed over RDP via my lamco-rdp-server fork.

Screen resizing, in particular, is a pain, but then again input has been much worse… I wasn’t particularly fond of the idea of reinventing this wheel to the point where it’ll be a full-fledged thin client solution, but a few hours with Codex led me to a usable xrdp-like solution with an equivalent sesman-like session manager, PAM support and a few other niceties, and I’m certainly up for experimenting (and learning) with it over Summer.

We Call It "Weather" Here

Even as my colleagues around Europe complain of a heat wave, things have been pretty much normal here–35oC outside, 27-ish inside, made tolerable only by the fact that I have minimized the number of active devices in my office (where the hottest things are probably my monitors and the ageing that I use at my standing desk).

Borg Thermals

Which doesn’t mean things don’t get too hot. I woke up the other day to find that had halted at around 5AM, and I immediately suspected thermals, so, , I popped it open, swapped out the CPU fan (some things are so predictable I keep spares) and, while I did that, asked one of my agents to check telemetry–which, despite my best efforts, I’ve been neglecting to turn into alarms:

That last spike is clearly where the fan started failing
That last spike is clearly where the fan started failing

It’s pretty obvious, even looking at the monthly data (which I pulled out to get an idea of the overall trend), that one of the fans started failing over the weekend–and it was the Noctua NF-A9x14 that I’ve been using for the CPU cooler.

Only Fans

Since those slim profile fans seem to die on me around every 18 months or so, this time I got an Artic P9 Max, on the spurious grounds that:

  • It has a much higher CFM
  • I can still fit a 25mm fan into the B660 (there’s enough clearance below the PSU)

It is, of course, much noisier, but we are in the middle of a heat wave and I expect it to throttle down eventually. Either way, I did get another Noctua to keep around as a spare, because fans are probably the only PC part that is cheap enough to keep a spare of these days…

While I waited for the new fan to arrive, I decided to whip up a stupidly visible temperature monitor to keep an eye on it, and the results were… dramatic:

Before and after swapping the CPU fan.
Before and after, and it was hotter after.

I don’t expect this to be the last time I do this, but I hope it will at least be a while before I have to do it again. The B660 is an amazing motherboard/case combo, but it is not designed for high-performance cooling–or Portuguese weather.

Notes for June 21-28

The weather is… infuriatingly tropical, but tolerable (we’re used to the heat this time of year, but the dampness is relatively new), and shifting all my morning meetings to my standing desk has markedly improved (but not fully healed) my back, so it was a relatively OK week.

Other than it being the last fiscal month , that is–my thresholds for patience have become somewhat elastic over the years, but it’s still a busy part of the year.

That, and the pushed me into another reassessment of how I have been spending my time, and I decided to go back to more hands-on work.

The Photogrammetry Detour

Since I have a bunch of CAD work to do, I tried my hand at photogrammetry over the week to see if I could speed up creating SBC cases:

Photogrammetry capture of the Radxa Q8B
Photogrammetry capture of the Radxa Q8B

The main conclusion so far is that although the photogrammetry process itself worked (and I could probably write a fairly detailed post about the C++ libraries I used and how I automated the process), even with 4K inputs and a few passes at refining the mesh it’s just not accurate enough to do what I need, partially because the BRIO 4K’s autofocus is a bit of a wash:

A sharpness map from the photogrammetry scans, still not sharp enough
A sharpness map from the photogrammetry scans, still not sharp enough

Now, that is tweakable, but the process is still a bit too manual and error-prone to be worth it for me.

In comparison, and just feeding photos to piclaw has been working stupendously well, and even if the dimensions are off, I can fix them easily in CAD once I have a STEP file:

CAD model reconstructed by just feeding photos to piclaw
CAD model reconstructed by just feeding photos to piclaw

As much as I would love to get my hands on a 3D scanner, I suspect this will be my go-to approach from here on out–although I’m currently investigating if I can re-use the image-processing pipeline to guide the model:

Using the image-processing pipeline to guide the model
Using the image-processing pipeline to guide the model

Tiny Local Models

Before shifting back to more pragmatic pursuits, I still “finished” a few -related things, mostly related to Gemma 4.

In short, after some messing around with QAT and MTP weights, I have finally gotten a reasonably smart and speedy version of Gemma4-E4B to run on my RTX3060 at nearly 90 tok/s, but…

It still isn’t as smart (or fast) as I would like for running my agents, and the context window is much smaller than what I ordinarily consider usable. Even for automating “if this (and maybe that) then (this other arbitrary set of things)” workflows… It just barely qualifies.

I might poke at it a bit more, but the core issues I had still stand: both context and capabilities of this kind of model are still far below what I need for regular use (piclaw can use it, but the results are always frustrating), and SOTA models are still much, much more effective than anything else.

have put me off the notion of ever getting good enough hardware to run anything useful locally unless I win the lottery , so this might be a dead end for the rest of the year.

RSS, With Less Baggage

I also went after my daily news intake–the news is bad enough as it is, but I can at least try to make it less stressful to consume.

Back when I was from Feedly to FreshRSS I briefly considered Miniflux but discarded it because I thought it lacked features I ended up never using, so this week I decided to fork it, replace its database with and create something even more minimalist I dubbed picoflux – which seems to work just fine with and takes up a whopping… 70MB of RAM when running as a dedicated service.

That’s far less than the and database baggage that FreshRSS brought, and it let me downsize the (already) tiny Azure VM I run “insecure” services in to half the capacity, so that’s a win right there.

Migration was, as usual, another opportunity to prune/fix stale feeds, but completely uneventful other than not having support for Miniflux–which is not a problem since I am still using , but said support seems to be coming, and if my UX gripes (which revolve around scrolling and overly garish iconography) get fixed, I might well switch to it.

Going Back To Raw Feeds

After and around nine months of daily use, I am bringing my to a close, for the following reasons:

  • My reading habits and schedule changed to a point where I was not really reading all of the bulletins (especially the noon and evening ones) and they just piled up.
  • The bulletin structure itself, despite being great for a few of the feeds I wanted to keep a cursory eye on, was just not good enough to surface important news.
  • Following the links inside bulletins was a bit fiddly (they were too small a target to pick out from a page of text, and turning the entire summary into a hyperlink to “fix” that just didn’t work inside any RSS reader).
  • I realized that my brain is just better at scanning hundreds of headlines and ranking them as they scroll past on the iPad.
  • It is another service to run and maintain, and I wanted to focus on other things.

To be fair, it has had exactly zero code changes other than a couple of cosmetic fixes and the LLM API costs were under $5/month, but asking myself “why” didn’t surface a lot of value.

That is not to say that the summaries were not valuable, but it’s just easier to prune noisy, spammy feeds. I have also considered using the summaries to feed a “smarter” agent that would notify me of “interesting” news, but my interests are so wide (and shift priorities so often) that it would be tough to get consistent output out of that, too.

I suspect I will circle back to this with a fresh point of view (and I have been thinking about how to refactor it into a pure functions/workers construct), but for now it’s just easier to wind it down for the holidays.

sashimi Soak Testing

I picked up sashimi (the port of this site’s static generator) again this week, and after running the numbers on visual rendering parity (which piclaw and Codex helped me with by generating some ), it is now at a point where it can render the entire site with pretty much 100% fidelity to the current renderer–except for a few corner cases, and with some bits already looking better.

It is blazingly fast, and incremental rendering is ridiculously fast, but more to the point it’s finally good enough to run alongside the main engine, generating a complete staging site entirely inside GitHub Actions (with a somewhat complex but quite fun set of cascading, low-impact actions) that do the required incremental/partial rendering in seconds instead of several minutes.

It’s probably interesting enough to deserve a dedicated write-up, and that will happen after a couple weeks’ soak time. I’ve already done a bunch of “live” testing, but I’m sure regular posting will surface more things to fix.

I think that will be quite enough AI, thank you very much

It’s been (inexactly) , and the place wouldn’t feel the same if I wasn’t (mildly) furiously hammering my current train of thought into vim, bare-brained, like the semi-civilized ape-like creature that we all are when bereft of our crutches.

Even as (finally) Z.ai puts out something that is close enough to Claude and Codex and the digerati gushed all over Twitter (yes, I still refuse to call it “X”) that finally they can run something comparable to cloud models locally (for the cheap price of a kidney or two), I have to ask myseilf why the fuck we are doing this (and yes, that is an expletive–if you’re a regular reader, you’ll know that I am usually much more restrained than this and that it was by no means gratuitous).

I mean, just go and watch Gergely Orosz’s presentation1 and tell me if any of the stories he tells make sense in anything but this timeline, where the only thing that matters is exposure/hype, individuals vie for social media presence, everyone is out to sell you something (even if they don’t have a business model) and has raised the stakes to a point where the noice is deafening–opening any social media timeline these days invariably results in a torrent of:

  • Advertising for things that, inexplicably, are made better by including AI
  • People (random word)-maxxing something related to AI even though their solutions don’t actually deliver anything of value
  • Developers pitching their latest micro-niche AI-generated tool that only they can use
  • AI-generated dopamine hooks that are fundamentally indistinct from the above
  • A random CxO saying that AI did something for them that a fresh business school graduate would question was even sensible to do to
  • People complaining about AI because they have become mentally incapacitated to the point they can’t turn their phone off

And the list goes on. Invariably, a select minority of these becomes important enough to get funded/acquired or just marketed to a point of ubiquity and you get a small flash of uniqueness amidst the Cambrian chaos, and people cheer them on even though, unlike the Cambrian, there is (as of yet) no emergent specialization and stabilization of niches, even though it’s pretty certain that all of this is going nowhere fast and some kind of mass extinction is (in a parody of Zeno’s Paradox), infinitely far away yet clearly too close for comfort.

I’m tired of the way this industry works, very tired of the noise around the whole thing, and in dire need of a vacation, which despite being still formally forthcoming I can at least try to enact in principle by (again) removing distractions from all my devices.

So I’ve gone back to a terminal window and, amazingly, realized that:

  • I can still code with my own fingers, thank you very much
  • I actually don’t want to do it without purpose
  • AI has, over the past few months, been an amazing enabler not just for my ability to “ship” things, but also for completely shattering my focus by giving me too much ability to make quick progress on things I would otherwise clearly rate as not important enough for my (limited) time.
  • I need to do less (preferably more fulfilling) stuff.

If this reads to you somewhat like Mario Zechner’s post2, but a bit more ranty, well, yes, congratulations, you’ve got the gist of it. And if you’ve been nodding along as you read any of it and you’re still planning on using your computer to talk to datacenter-resident ghosts to “achieve” stuff that you can only experience through it, well, then, you’re too close to the problem to notice.

Shut off the bloody thing and go touch grass, then come back and try to think of all of these things as tools. And decide what you want to do with those tools that will make you happy.

That said, I am now going to try to step back from this entire mess for a few days, focus on the hardware I have here on my desk to test, and try to make it past Summer, possibly followed by a period of doing something more meaningful with my time in general.


  1. By the way, his take on Microsoft is a bit off, but I’m used to the fact that gossip travels poorly, let alone the usual bias people outside Microsoft have against it. ↩︎

  2. He, too, has a biased take against Microsoft, but hey, I’m too close to it to judge, probably. ↩︎

Notes for June 14–21

My back is still giving me trouble, but a week’s worth of moving about carefully and a little exercise “fixed” it (as in, I can stand again for extended periods of time). And I’ve pinned down the most likely cause–I have been spending far too much time sitting at my desk.

As much as I love working remotely, the relentless (and sometimes idiotic) pace of dozens of daily meetings (often booked haphazardly and with the usual sense of bogus urgency that comes with the typical corporate need to “take action” without any proper briefings or preparedness) keeps being the one thing that I hate about my current role, and it’s again destroying my health in excitingly painful ways…

A Jurassic Park-style 'Jurassic Dad: Pain Finds A Way' shirt with a skeleton clutching its aching back
ironically, Qwertee had this on promotion this week

Even with daily walks outside (now in jeopardy from a coming heat wave) and regular standing/walking breaks to just think between calls, I definitely need to go back to my makeshift for a while and, again, ponder upgrading my actual, huge (180x90 cm) desk to something healthier, if necessarily smaller.

Still, having to lie still a bit earlier in the evenings led me to cut down on a bunch of otherwise useless doomscrolling, finishing a bunch of outstanding drafts and watching a few movies (including Sneakers), so there was an upside of sorts.

RISC-V Follow-Up

I ran a few more tests on the to see if I could get it to run a usable LLM setup, and… Not quite. I did confirm that Gemma 4 models are very impressive–Gemma 4 E2B QAT+MTP in particular is way smarter than it has any right to be, and more flexible than Qwen for system administration tasks even if it can get stuck easily.

However, the bandwidth and context requirements are still quite a bit above what the can comfortably handle for a proper agent–even my 3060 struggles a bit with running it at what I consider a suitable context length (the piclaw context barely fits into 32K, so I typically aim for 128K for any useful work), but at least it can do so without two-minute response times…

Running microVMs in Proxmox VE, The Easy Way

I’ve been running a mixed cluster for years – four nodes of wildly different capability, from an Atom x5-Z8350 with 2 GB of RAM (a , currently offline after years of faithful service as a baseline torture device) up to an i7-12700 with 128 GB (, my main homelab server).

Read More...

Shoehorning... R-Type into the ESP32

This is a very quick follow-up to from a couple of weeks ago, and worth noting for the fun value and a little bit of .

Read More...

Notes for June 7-14

Another week, another set of bank holidays that I tried to leverage strategically to do interesting things with my time, and… I ended up throwing out my back and having to sit very still for hours at a time, which made the whole thing feel like a waste of paid vacation with extra ibuprofen.

Read More...

Shoehorning Flying Toasters into a ESP32-S3

This is the (very) abridged story of how I got After Dark running on my own flavour of the –specifically, Flying Toasters on an ESP32-S3 board, zooming along at 65 FPS, which is both completely pointless and one of the more satisfying things I’ve done this month.

Read More...

The MilkV Jupiter 2/SpacemiT K3

This is a fascinating box–so much so that after almost three weeks playing with it, I amassed so much material that I nearly decided to split my review into two parts, but in the end I decided to condense it a bit and post a longer piece than usual, even if that means almost half of it is a fairly wide-ranging exploration of how to get AI workloads on it.

Read More...

WWDC26: Early Impressions

This was the weirdest WWDC26 keynote in a while, and some of the past ones were visibly phoned in. It was rife with weirdness and flashbacks.

Read More...

Notes for June 1–7

I decided to take a couple of days off and generally tune out, thanks to a few strategically placed bank holidays – which meant my usual mix of relaxing and dealing with a few chores.

Read More...

My WWDC 26 Wish List

Michael Tsai’s annual roundup of WWDC wish lists went up this week, and the thing that struck me most wasn’t any single request–it was the mood. There seem to be fewer wish lists than last year, several people openly admitted they couldn’t be bothered to write one, and the ones that did are pretty much bereft of any “aspirational” wishes.

Read More...

Field Notes From The AI Battlefield

Since today is a bank holiday for me, I decided to consolidate a few more of my notes into a post. What follows is a set of guiding “principles” that I’ve found useful over the past year or so and that I’ve codified into various bits of scaffolding I reuse across my projects.

Read More...

Notes for May 24–31

Today I realised that I could just spend the day doing essentially nothing and that nobody would hold it against me (at least in Western nations), so… I might well do just that, with a few caveats:

Read More...

Mildly Parboiled

Allergy season is finally fading (at least for me), but today was the first time I had to turn on the AC in the office, and it was great to realize that and almost four years of potential HomeKit foibles, my is still working perfectly.

Read More...

Archives3D Site Map