Issue _02 - 6th May 2026
Thank you so much for all of you that joined! Welcome!
This week has been varied again. I did not keep to a single thread or theme. For this week’s random knowledge you didn’t know you didn’t need but definitely wanted, behold!
There are many ways to merge changes from multiple places
I wanted to create a state file with additional append-only log to make merging two versions together easy. Thought I’d ask AI if there’s prior art for what I want. Turns out the following all do the same thing and are standardised:
operation based CRDTs (conflict free replicated data types). The link is to a long series of posts
JSON Patch (RFC 6902)
Git’s object model would be overkill, I genuinely did not know about JSON Patch, but have heard of event sourcing and CRDTs (once, many moons ago).
I have an idea for a phone app, but a PWA won’t do
For the basic iteration, a static html site with JS bundled would be enough.
And then I want to add metronome, which would be a long running process that also makes sounds, and at that point both iOS and Android are going to agressively kill that when screen locks. So native app it is.
Speaking on native apps, the easiest way to get started for me is Flutter
It’s written in Dart. Dart is super similar to Go. I know Go. Dart plugins exist for Goland and VSCode, so yay.
Add play/app store requirements are $25 once (for Google) and $99/yr (for Apple). Given I don’t want to ask for money for this, this might just be an Android only app.
Or maybe I should be asking for money? Stay tuned!
The flutter dev environment is ridiculous
I’m in a Starbies at the moment. brew install —cask flutter told me it’s 2.1G. Nope.paintedvase
I’m redoing my home network, and Ubiquiti stuff is expensive
I already have an Omada router. Replacing my existing switches and WiFi access points would be half the cost than the Ubiquiti gear with the cheapest new stuff with the minimum requirements.
I have not looked at used Ubiquiti gear though.
An IKEA samla 22L box can take 4 filament reels
This thing. Strictly speaking I didn’t need to use AI for this, but had a wonderful conversation nevertheless. The basis for that calculation was Bambu’s reel dimensions: 7cm wide, 20cm diameter.
I still need to 3d print the innards: rollers or axle holders, dessicant holders, and maybe a TPU seal between box and lid, but glad I have a solution for keeping my currently–not–in–use reels in a controlled environment soon.
Back to Ubiquiti: they have a training program for installers
If you want to design and install systems for others, Ubiquiti has a bunch of training programs you can take that have a lot of perks:
There are also a few more if you want to install things for Internet Service Providers, but that’s way too advanced for me at this time.
TP-Link also has the equivalent for their Omada stack
At least in the UK, specifically. It’s called SolutionX. There are tiers, there are requirements (like sales volume per quarter), and there are certifications: OCNA for Omada, one for Wireless, one for Routing and Switching. There’s also training for VIGI things.
TP-Link’s VIGI is physical security things
Cameras and video recorders mostly, only for surveillance. UniFi has access control bits: door locks, pinpad entries, keycard entries, and the like. TP-Link doesn’t have similar.
Axial coordinate systems for hex grids is easy
Uh, it’s… kind of fun, but essentially if you have seen the game Townscaper, you will know what it is. There’s a really really long article on how to deal with it, read it here: https://www.redblobgames.com/grids/hexagons/#coordinates-axial.
I am considering building a game (using AI) that’s hex grid based.
Though Townscaper uses hex chunked randomly merged triangles with quad subdivision which is then relaxed
Slightly different, all tiles are quad-like, still very cool!
https://boristhebrave.com/docs/sylves/1/articles/tutorials/townscaper.htmlThe standard for mouse tracking in a terminal is the xterm SGR (mode 1006) protocol
When mouse tracking mode is enabled on the terminal, any time you move the mouse, the terminal will stream a bunch of characters in the form of <code>;<x>;<y>M, so a bunch of them will look like this:
51;11;16M51;11;18M51;11;20M51;11;21M51;12;22M51;12;24M51;12;25M51;12;26M51;13;27M51;13;28M35;13;29M35;13;28M35;12;28M35;12;27
M35;11;26M35;11;25M35;10;25M35;10;24M35;10;23M35;10;22M35;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21M64;10;21
M64;10;21M35;10;20M35;10;19M35;10;18M35;11;17M35;12;16M35;12;15M35;13;15M35;14;16M35;14;17M35;14;16M35;15;16M35;15;15M35;16;15M35;16;14M35;17;14M35;18;13M35;19;13M35;19;12M35;20;12M35;21;12M35;21;11M35;21;10M35;22;10M35;22;9M35;22;8M35;22;7M35;22;8M35;21;8M35;21;9M35;20;10M35;19;10M35;18;11M35;17;11M35;16;11M35;15;11M35;14;12M35;13;12M35;12;12M35;11;12M35;10;11M35;9;11M35;8;10M35;7;10M35;6;10M35;6;9M35;5;9M35;5;10M35;6;10M35;6;11M35;7;13M35;7;14M35;8;15M35;9;17M35;10;19M35;11;22M35;12;24M35;14;27M35;15;29M35;16;30M35;17;32M35;18;33M35;19;3
4M35;18;34M35;17;33M35;16;33M35;15;33M35;14;33M35;13;32M35;12;32M35;11;32M35;11;31M35;10;31M35;9;31M35;8;31M35;7;31M35;6;30M35;5;30M35;4;30M35;3;30M35;4;30M35;4;29M35;6;29M35;7;28M35;9;28M35;11;27M35;12;27M
It’s a pain to turn it off, but if you close the terminal, it goes away.
Reference for the protocol: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html.
Makerworld runs OpenSCAD official release 2021 as WASM in their customizer
So if you create your model in OpenSCAN 2021 version and do some more magic to customize the labels and form inputs for the parameters, your 3d print model can be customized on Makerworld for free!
All right, that’s it for today.
I will probably maybe open up this for community submissions. It makes me feel better if I am having conversations with readers rather than shouting into the void with a megaphone 🙂.
Oh, and if this has been forwarded to you, here’s how you can sign up:
Buttondown was asking me nicely to put that form in here 😁.
If you found it useful, forward it to a friend or 8, and see y’all next week!