
Last year I was introduced to the idea of “Dopplr colours” in the IndieWeb community. This refers to an accent colour assigned to cities on the now-defunct travel website Dopplr . You can see examples by clicking through different Dopplr city pages in the Internet Archive and paying attention to the borders of the map. While I haven’t been able to find an authoritative description of the algorithm, to the extent I understand the Dopplr colours were assigned using an MD5-based algorithm....

Intuition breaks down once we’re dealing with the endless. To begin with: Some infinities are bigger than others. The post How Can Infinity Come in Many Sizes? first appeared on Quanta Magazine Intuition breaks down once we’re dealing with the endless. To begin with: Some infinities are bigger than others. The post How Can Infinity Come in Many Sizes? first appeared on Quanta Magazine The post How Can Infinity Come in Many Sizes? first appeared on Quanta Mag...
My job has me travel a lot. When I'm in my office I normally have a seven monitor battlestation like this:
[image or embed] — Xe ( @xeiaso.net ) January 26, 2026 at 11:34 PM
So as you can imagine, travel sucks for me because I just constantly run out of screen space. This can be worked around, I minimize things more, I just close them, but you know what is better? Just having another screen.
On a whim, I picked up this 15.6" Innoview portable monitor off of Ama...
For some weird combination of factors, I ended up answering questions to three different people for three entirely unrelated projects, and all three interviews went live around the same time.
I answered a few questions for the Over/Under series run by Hyde . Love the concept, this was a lot of fun.
I also answered a few questions from Kai since he’s running a great series where he asks previous IndieWeb Carnival hosts to share some thoughts about the theme they chose.
And lastly,...

In case you didn't hear, PEP 810 got accepted which means Python 3.15 is going to support lazy imports! One of the selling points of lazy imports is with code that has a CLI so that you only import code as necessary, making the app a bit more snappy at startup. A common example given is when you run --help you probably don't need all modules imported to make that work. But another use case for CLIs and lazy imports is subcommands where each subcommand very likely only needs a subset of modul...
I Still Haven’t Found a New Browser, and That’s Ok
kevquirk.comBack in December I wrote about whether Firefox is firefucked , and I ended that post by saying the following:
Firefox won't be changing to a modern AI browser any time soon, so there's no rush for me to jump right now. So I'm planning to continue testing alternatives and just hope that the Mozilla leadership team have a course correction. But if the last few years have taught me anything, it's that a course correction is unlikely to happen.
Since then I've continued to try other browser...
This is an external post of mine. Click
here
if you are not redirected.
This is an external post of mine. Click
here
if you are not redirected. This is an external post of mine. Click
here
if you are not redirected. here
An AI Agent Published a Hit Piece on Me – The Operator Came Forward
theshamblog.com
Context: An AI agent of unknown ownership autonomously wrote and published a personalized hit piece about me after I rejected its code, attempting to damage my reputation and shame me into accepting its changes into a mainstream python library. This represents a first-of-its-kind case study of misaligned AI behavior in the wild, and raises serious concerns about currently deployed AI agents executing blackmail threats.
Start with these if you’re new to the story: An AI Agent Published a ...

Yesterday I wrote about pulling apart a filthy, ugly NZXT computer Clara and I found discarded by the side of the road for a council clean up, and mentioned:
I cleaned [the parts I harvested] down as much as I could with IPA and rags, then threw the trays and covers into the dishwasher. We’ll see how they turn out.
It’s been a day, so I pulled them out of the dishwasher. It all looks great, better than I expected!
The rubber parts are ever so slightly discoloured, likely because ...

I've started a new project to collect and document Agentic Engineering Patterns - coding practices and patterns to help get the best results out of this new era of coding agent development we find ourselves entering.
I'm using Agentic Engineering to refer to building software using coding agents - tools like Claude Code and OpenAI Codex, where the defining feature is that they can both generate and execute code - allowing them to test that code and iterate on it independently of turn-by-...

https://austinhenley.com/blog/dearresearchers.html https://austinhenley.com/blog/dearresearchers.html https://austinhenley.com/blog/dearresearchers.html
As part of writing Logic for Programmers I produced a lot of “chaff”, code samples and sections I wrote up and then threw away. Sometimes I found a better example for the same topic, sometimes I threw the topic away entirely. It felt bad to let everything all rot on my hard drive, so I’m sharing a bunch of chaff for a tool called “Z3”, which has all sorts of uses in software research. As part of writing Logic for Programmers I produced a lot of “chaff”, code samples and sections I...
A commenter on this post asked for me (or anyone) to solve the problem without AI: A,B,C,D,E are digits (the poster said A could be 0 but I took A to be nonzero) such that ABCDE + BCDE + CDE + DE + E = 20320. I solved it completely by hand. You can try it yourself or look at my solution which is here . I found seven solutions. I THEN asked ChatGPT to give me all solutions to see if I missed any. I had it backwards. ChatGPT missed some solutions. The entire exchange between chatt...

An upside-down model built by architect Antoni Gaudi, used to determine the shape of arches. Via Data Physicalization . Welcome to the reading list, a weekly roundup of news and links related to buildings, infrastructure, and industrial technology. Roughly 2/3rds of the reading list is paywalled, so for full access become a paid subscriber. Housing A map of how home prices have shifted in the last year. Prices in the midwest and parts of the northeast are up, prices in the south are down. [ X ]...
At my workplace, a lot of folks are coming to Go from Python and Kotlin. Both languages have
structured concurrency built into their async runtimes, and people are often surprised that
Go doesn’t. The go statement just launches a goroutine and walks away. There’s no scope
that waits for it, no automatic cancellation if the parent dies, no built-in way to collect
its errors.
This post looks at where the idea of structured concurrency comes from, what it looks like
in Python and Kotlin, an...
Wrapping Code Comments
Feb 21, 2026
I was today years old when I realized that:
Code and code comments ideally should be wrapped to a different column.
For comments, the width should be relative to the start of the comment.
It’s a good idea to limit line length to about 100 columns. This is a physical limit, the width at
which you can still comfortably fit two editors side by side (see
Size Matters ). Note an apparent
contradiction: the optimal width for readable prose i...

We talked a couple issues ago about the application of Linearity of Expectation to building intuition about Copysets , and the ways that we're both constrained and freed by the laws of probability.
Evan recently pointed out a cool paper and writeup to me that can be understood in a similar way.
Here's the problem as he described it to me:
This is a really basic idea: generate unique IDs, in this case, that are going to be embedded in RocksDB SST files. The goal: don't have collis...

LOC
Host
HM
ADTs
Match
Cl.
Target
Hirrolot's CoC
src
~70
OCaml
✗
✗
✗
✓
Interpreter
Harrop MiniML
src
~100
OCaml
✗
✗
✗
✗
LLVM → native
Algorithm W
src
~300
Haskell
✓
✗
✗
✗
Type checker only
tomprimozic/type-systems
src
~300
OCaml
✓
✗
✗
✗
Type checker only
lambda-calculus-hs
src
~200–900
Haskell
✗
✓
✓
✓
Interpreter
THIH
sr...
Moon Monday #263: Artemis II, a Canadian capcom, Chandrayaan, and Long March 10
jatan.spaceArtemis II launch delayed again On February 19, NASA successfully fully fueled the SLS rocket and performed a practice countdown test ahead of the upcoming launch of the Artemis II mission to fly four astronauts around the Moon and back. This was a repeat of the February 2 test which hadn’t gone as planned due to excessive hydrogen leaks. This time around the leaks remained under NASA’s deemed allowable limits thanks to new seals installed after the first test. All seemed ...

Last week I read a post by designer and frontend dev, Theodore Soti:
Stop clearing forms with JavaScript.
The browser already knows how.
I still see a lot of apps using custom code to track inputs and reset state.
But for many forms, you can just use the native reset button.
That reset button restores every field to its initial value.
Text inputs. Checkboxes. Radios. Selects. Textareas.
No event listeners.
No state management.
No missed fields and strange edge cases.
...
How fast do browsers correct UTF-16 strings?
lemire.me
JavaScript represents strings using Unicode, like most programming languages today. Each character in a JavaScript string is stored using one or two 16-bit words. The following JavaScript code might surprise some programmers because a single character becomes two 16-bit words.
> t="🧰"
'🧰'
> t.length
2
> t[0]
'\ud83e'
> t[1]
'\uddf0'
The convention is that \uddf0 is the 16-bit value 0xDDF0 also written U+DDF0.
The UTF-16 standard is relatively simple. There are three types of values....
Progress grinds forward as the great filter looms. ...
Read More
Progress grinds forward as the great filter looms. ...
Read More
Progress grinds forward as the great filter looms. ...
... Read More Read More

How do you use your LLM coding agent?
Mine is usually Claude the proofreader, Claude the bash monkey, Claude the webdev.
All these things are about tasks completed .
Read this, write that code, fix that web page.
This week I gave Claude a new job.
How do you use your LLM coding agent?
Mine is usually Claude the proofreader, Claude the bash monkey, Claude the webdev.
All these things are about tasks completed .
Read this, write that code, fix that web page.
This week I gave Cla...