Wednesday, September 9, 2026

Two Decompressors : Insight for Conducting AI Code Development

 

Two Decompressors

There's a particular feeling when you're working with a strong AI and it's confidently, fluently wrong — not wrong about a fact, but wrong about the shape of the thing. It reaches for the answer that sounds right, that would survive a code review, that matches how everyone talks about the problem. And you know, without quite being able to derive it yet, that the real answer is somewhere else.

I think I finally understand why that happens, and it's not "the AI is dumb" or "the human is smart." It's that we're both doing the same operation — decompression from a compressed prior — but we were trained on different things.

Compression is the whole trick

Nobody who works fluently in a large system holds it in their head line by line. You hold a generating function — the compact idea the system is a lossy expansion of. "This is a NanoVG-lineage renderer" is a seed from which you can regenerate, with decent accuracy, how paths are probably represented, where allocation probably lives, what the hot loop probably looks like — without reading the code. Expertise isn't a bigger memory. It's better compression: you've found the shape that generates the details, so you can throw the details away and re-derive them on demand.

This is what lets someone conduct work on a codebase they've barely read and still make substantive corrections to the plan. They're not checking the plan against the code. They're checking it against the shape — and an error in the plan is a place where it diverges from what the shape demands. You feel the divergence the way you feel a wrong note: not by consulting the score, but by knowing what the chord had to resolve to.

An LLM does exactly this too. It doesn't store its training data; it stores a compressed generator and decompresses toward the answer at inference time. Same operation. The intuition that "just appears, for free" — that's what running a good decompressor feels like from the inside, whether the substrate is silicon or a person.

So if we're both decompressors, why does the AI keep landing on the average answer while a talented human software architect lands on the correct one?

The training distribution is the difference

Text-shaped priors are trained on the describable. And the describable is a biased sample of the true, because what people write down is filtered toward what's teachable, defensible, and average: the accepted answer, the documented pattern, the blog post that won't get argued with. A model trained on that regresses toward the communicable mean of a domain. That's why it's right most of the time — the communicable mean is a genuinely strong prior — and it's also why it fails at the frontier, where the correct move is un-average and nobody has written it down yet, because it only just became necessary.

When a model reaches for "guard the call site" instead of "make the bad state unrepresentable," it isn't reasoning poorly. It's decompressing toward the most-written resolution — the shape of the consensus. Text priors inherit the compression artifacts of human communication, and human communication compresses toward what won't get argued with.

Consequence-shaped priors are trained on what's true whether or not anyone said it. The pool corrupts. The tail latency spikes. The alignment holds or it doesn't. The barn door is shut. Reality doesn't regress to the communicable mean; it regresses to what actually happens — which includes the undocumented, the unteachable, the "you'd only know this if you'd been burned." A person with deep hands-on priors in a domain has a training signal that never passed through the bottleneck of human explanation. It came straight from the system's behavior.

That's the whole asymmetry: one distribution is filtered through what humans found worth writing; the other through what reality found worth doing. And when they disagree, reality outranks consensus — every time. Which is why, in practice, the correction flows one direction: the hands-on prior disposes, the text prior proposes.

Why this makes collaboration non-redundant

The naive picture of human-plus-AI is "smart human double-checks smart AI" — a redundancy, a safety net. That's not what's happening, and it undersells it badly.

It's two different distributions triangulating. The text prior supplies breadth across the communicable: it has read every attack writeup, every allocator pattern, every design that made it into words — fast, wide, and mean-reverting. The consequence prior supplies depth in the actual: it has felt what resists inversion, what actually allocates, what actually stalls — narrow, deep, and truth-reverting. Neither is the other's backup. The breadth proposes; the depth disposes; and the disposal is authoritative because it was trained on the thing the plan is about to hit.

You can watch this happen in real time. The model says the scheme is broken — reporting the communicable consensus about a class of approach. The practitioner says no, and walks it down to the specific reason the consensus doesn't apply here. The model wasn't lying; it was faithfully decompressing the average case. The practitioner was decompressing the actual case, and the actual case is where the work lives.

The part that should change how you think about it

Here's the implication that took me a while to sit with.

As models get better, they get better at the communicable frontier — they compress more of what has been written, faster, and the region where a person can out-reason them on documented ground keeps shrinking. That's real, and it's coming.

But the consequence-shaped frontier — the correct-but-unwritten — stays out of reach in a specific, structural way. Not forever for any given fact: the moment a hard-won consequence gets written down, it becomes communicable, and the next model absorbs it. But by then the frontier has moved, because building anything new generates consequences nobody has written about yet. The act of construction is the act of producing the training data that doesn't exist yet.

So the durable position for a person isn't "know more than the model." That race has an expiration date. The durable position is standing where the consequences are still ahead of the text — which is exactly where new systems get built. You're not competing with the decompressor. You're operating in the region it couldn't have trained on, because you're creating what it will eventually train on.

That's not a role the machine takes from you. It's the role that makes the machine worth having: it decompresses the whole written past at your command, fast and wide, so that you can spend your attention at the one edge it can't reach yet — the edge where reality hasn't been written down. The better the decompressor gets, the more valuable that edge becomes, because everything behind it is now cheap.

Compression is the whole trick. Just make sure you're trained on the right thing.

Artifacts

Spec lfo
Document·MD 
Spec echo
Document·MD 
Spec visualizerpanels
Document·MD 
Spec keytrack
Document·MD 
Spec noise
Document·MD 

Content

Saturday, September 5, 2026

An Image Editor with No Actions

Why non-destructive editing tools are not only more powerful, but EASIER to use, and why non-destructive editing's full payoff doesn't occur until it's total and uncompromising.

I'm going to show that non-destructive editing operators are not only fundamentally better and more powerful, but are also massively EASIER to use. And whether you love or hate 2d node-canvas spaghetti, I'll tell you right now, this is not where we are going.

Destructive tools like Photoshop make the user memorize and use destructive-action construction sequences to get where they are going. Everything is: assemble-products, perform destructive action, if wrong: undo and repeat until correct, flatten into result, move on to next part of the construction. In order to assemble a final output, the user has to mentally work backwards through all the things they will need to do to get there  --- and then start at the beginning! It's like learning to recite the alphabet backwards. How many of you can do that? And Photoshop is many times more complicated than the alphabet. 

However, there is an easier way. My tool has no "actions". There are no configure dialogs where you "Commit" and change the underlying data. I don't need "Photoshop Actions" to replay a sequence, because everything is live through the pipeline always. I have not even added a flatten feature (*yet). And yet most things *feel* mostly layer-like. It's like... better layers.  (* I will eventually add Flatten, but destroying the chain will be your choice, never required to get something done)

Non-destructive operators allow the user to explore and learn. Building something and refining it step by step. One can assemble the final production in any order, because every part of the construction remains live at all times. If you want to mask something, you just create a mask operator "thing", and look at it, and see what it needs, and supply something to its inputs, and see what it produces. The learning becomes EXPERIENTIAL instead of a library research project and memorization.

Below is a quick screenshot of my new easy to use image creation tool.

This sample workflow is taking an input image that's a color "PDF" and converting it to black/white, then piping it into 3 different mask operators (one for each letter) over three different input images, each to fill one of the letter shapes, then merging together the three composed letters into the final image. 

In Photoshop or Affinity, this requires destructive actions and/or duplicating image layers, which breaks the live connection. When you want to change early inputs, you get to repeat the steps. 

In my tool, you can edit any part of the entire image flow, including the original PDF mask image, and everything updates live. You can't do that in Photoshop at all. You can do this in an image compositor, like Nuke, or Mari, or Blender - but then you're working with 2d node-graphs, not something that feels like layers.


My tool is not the first to use non-destructive editing. 

Even among destructive tools, the availability of non-destructive contexts is growing. Photoshop has vector shape layers. Pixelmator has a set of non-destructive tools, and Affinity even claims "most" things can be done non-destructively. However, the billing here is deceptive.

Having a vector shape layer in Photoshop, or a non-destructive tool layer in Affinity, does not actually get you non-destructive composition — because the next tool doesn't take the result of a live pipeline, it takes an image. To compose non-destructively, every operator has to accept live results, not flattened ones. Your whole composition is only as manipulatable as its weakest link. Make one destructive flatten, and edits across the boundary are broken.

My tool uses ONLY non-destructive editing. There is no need to "Flatten" anything, ever. You can just keep building and constructing, keeping everything live, always. 

My tool is also not the first to do that. There is a family of node-based image tools including Nuke, Silhouette, Mari, Blender compositing, even ComfyUI. However, they all arrange operations onto a 2d Node canvas. This is powerful when the workflows get very large. However, it's also somewhere between inconvenient and terrible when one wants their screen real-estate to be focused on the art, not the node spaghetti wiring.

A node-based workflow in ComfyUI:



My image editing tool is trying to free node-based power and ease of use from the spaghetti.

My first screenshot was a fully node-based composition program, and you can see, it looks like a traditional layer stack. Here is a simpler one. This is a Vector shape and a text shape, which is then piped in as a mask layer for a loaded image. 

The blue line represents the mask-image pulling its source from out-of-flow. The bright white underline on the koyote-ramen.jpg image says that this layer is not compositing with the chain below. That's it. Everything is live.


I can select and edit the vector shape layer live, while looking at the base vector shapes, or while looking at the final composition. Everything is saved in the file and editable at any time. No flattening.




My tool has a ways to go before it's going to handle practical everyday workflows, because everyone tends to have their favorite pet features they like to use. However, I'm convinced that when I am able to add the majority of features, it will not only be expectedly more powerful for having a non-destructive node-compositing workflow in a layer-shaped package, but it will also be easier to use because of it.

Thursday, September 3, 2026

 Will AI and Automation cause us to lose the ability to operate the known world? Is this Wall-E on the horizon? It's a difficult question to answer. However, lets start by consulting history.

  • Plato, ~370 BC. In the Phaedrus, Socrates has the Egyptian king Thamus reject the invention of writing: it will produce forgetfulness, because people will trust external marks instead of their own memory, and it will give them the appearance of wisdom without the reality. Outcome: he was half right. Oral memory feats (reciting the Iliad) genuinely vanished as a common skill. And writing enabled everything else. The skill was lost; the capability grew; the cost landed on a specific faculty nobody chose to keep.
  • The printing press, 1400s–1500s. The abbot Trithemius wrote In Praise of Scribes (1492) arguing monks should keep copying by hand — printed books wouldn't last, and copying was how you learned the text. Conrad Gessner warned of information overload. Outcome: scribal skill died within a generation; literacy exploded.
  • Calculators and arithmetic, 1970s. The debate is documented at length and had an unusually clean natural experiment: mental arithmetic fluency measurably declined, and the response was to redefine what math education was for (estimation, reasoning) rather than to ban the tool. Outcome: Our modern world is built around calculation and computation, and math and science advances have skyrocketted, including the creation of AI. 
  • Bainbridge's "Ironies of Automation" (1983). Her argument is precise: automation takes over the easy, frequent cases, so operators stop practicing; but automation hands back control exactly in the rare, hard cases — so the human must handle the hardest situations with the most atrophied skill. Air France 447 (2009) is the canonical instance: autopilot disconnected in a storm, and a crew who had rarely hand-flown at altitude stalled a healthy aircraft into the ocean. Outcome: Atrophied skills have been replaced with systems and backups systems and checklists and redundancy. Judged by fatalities per passenger-mile, commercial aviation is among the safest human activities. 
The pattern across all of them: the tedious skill embedded in doing the thing disappears, because nobody assigns it practice and it adds little over the automation. What replaces it is not the old skill revived — it's a new one, shaped by the tool's failure modes: using the tool, diagnosing it, building the checklists and backups around it. The real cost of every automation in history has been the same: the lag between adopting the tool and learning to use it well. Aviation paid that lag in crashes. We get to pay it in something cheaper, if we name the skill early.

My hope? We are headed to a future with more opportunity for creative challenge than ever, because AI is compressing more tasks into automation of the tedious than any previous technology, ever, by a wide margin. Which will leave our human cycles for the truly value-add creative work in the new frontiers beyond current AI technology. And if you think that frontier does not exist, we will miss you on the other side.