Friday, January 23, 2026
get smart
"funny"
Thursday, January 22, 2026
Wednesday, January 21, 2026
aphorisms
recursive turdles all the way down
TECH SUCKS
Tuesday, January 20, 2026
motto
need to know basis
The first step is identifying the correct key to press during startup to enter the BIOS. For most Alienware Aurora models, the key is either F2 or Del (Delete). However, some older models might use F12."
Monday, January 19, 2026
poop! os
Sunday, January 18, 2026
fast machine
i don't need a fast machine for running AI itself.
i need a fast machine for running the static checkers & sundry tests to check on what the cloud-based-AI did to my local repo after every task, as we progress.
good ux is a long tail problem
ai heal thyself
Using AI for some coding (so I can know what we're up against?) I am finding that it is hard to keep ducks in a row the whole way through. A lot of it is simply indictment of our entire software development universe, not necessarily a unique problem with AI agent coders per se: humans run afoul of all this crap, too. There's way too much complexity in software development. Especially if you want to split things up, have shared code with good interfaces, and be able to package things. And especially-especially if you happen to be in the horrendously bad JavaScript ecosystem. Yay.
(it is impressive that AI can figure out anything at all about package.json dependency hell.)
Saturday, January 17, 2026
the joke
Friday, January 16, 2026
sacred cows
it is funny (pukey, not ha-ha) that testing is supposed to be this hallowed thing in software development, but i have pretty much never encountered any development environment where testing worked out of the box. test runners all suck. the apis all suck. the overall ux end to end always sucks.
a little bit it is a collision of worlds. as a programmer i want to be able to insert a printf() in a test and have it show up easily somewhere obvious when i run the test(s). but nooooo that's often such a no-no, the tests obviously should make that nigh impossible.
no matter where you go,
there you are.
...and npm is still just about the worst thing on earth.
although, to be fair, webpack sure does give it some competition.
Thursday, January 15, 2026
ai generated
A Safer Model for Distributed Systems: Concepts, Limits, Tools, and Implications
This document outlines a conceptual approach to building distributed systems that are safer, more understandable, and more predictable. It integrates ideas from formal methods, typed functional programming, distributed systems theory, and practical engineering constraints.
The goal is not perfection — physics and math prevent that — but a disciplined way to shrink the unknown region, reduce catastrophic failures, and make bugs easier to reason about.
1. Core Philosophy: The System Is a State Machine
A “perfect” system would behave like a well-defined state machine:
- All reachable states are safe.
- All transitions go from safe → safe.
- No behavior is allowed unless it preserves invariants.
This requires:
- explicit state definitions,
- explicit invariants,
- explicit transitions,
- explicit protocols,
- explicit versioning.
Relevant tools & paradigms
- TLA+ (state machines + invariants + temporal logic)
- Alloy (relational models + constraint solving)
- Ivy (protocol verification)
- Statecharts / Harel state machines
- Petri nets (explicit state + transitions)
- Model-based design tools (Simulink, SCADE)
2. Turns: The Unit of Safe Mutation
A turn is:
- deterministic,
- isolated,
- atomic,
- invariant-checked.
Inside a turn, mutation is allowed; outside, the system appears pure.
Relevant tools & paradigms
- Actor model (Erlang, Akka, Orleans): one message = one atomic turn
- Event sourcing (CQRS, Kafka-based systems)
- Elm architecture / Redux reducers (pure transitions)
- Software Transactional Memory (Haskell STM)
- Database transactions (ACID semantics)
- Synchronous reactive languages (Lustre, Esterel)
3. Layered Safety Model
3.1 Static Layer
Types, refinement types, protocol types.
Tools/paradigms:
- Refinement types (Liquid Haskell, F*, Dafny)
- Dependent types (Coq, Agda)
- Rust’s ownership model
- TypeScript + Zod / io-ts (lightweight refinement)
3.2 Structural Layer
Single-writer, deterministic handlers, logs.
Tools/paradigms:
- Raft / Paxos (deterministic replicated state machines)
- CRDTs (conflict-free replicated data types)
- Kafka logs (append-only, ordered)
- Orleans virtual actors (single-threaded entities)
3.3 Dynamic Layer
Invariant checks, conflict detection, quarantines.
Tools/paradigms:
- Runtime contracts (Eiffel, Racket)
- Dynamo-style anti-entropy
- Saga patterns (compensating actions)
- Circuit breakers / bulkheads (containment)
3.4 Observability Layer
Logs, snapshots, replay.
Tools/paradigms:
- Jaeger / OpenTelemetry (tracing)
- Kafka Streams / Flink (event replay)
- Temporal.io (workflow history)
- Deterministic replay debuggers (rr, Pernosco)
4. State-Space First Development
Start from Any, refine down, track unknown regions.
Tools/paradigms:
- Alloy (iterative refinement of relational models)
- TLA+ refinement mappings
- Coq module refinement
- Event storming (domain modeling)
- DDD aggregates (bounded state machines)
5. Inductive System Growth (Refinement)
Systems grow through refinement steps that must preserve invariants.
Tools/paradigms:
- TLA+ refinement proofs
- Coq/Agda refinement types
- Dafny method contracts
- Ivy refinement checking
- Proof-carrying code
6. Composable State Machines
Composition works only under strict constraints.
Tools/paradigms:
- CRDT composition (monotonic semilattices)
- Synchronous dataflow (Lustre, Lucid Synchrone)
- Functional reactive programming (Elm, Reflex)
- Category theory abstractions (monads, arrows, lenses)
- State monads (pure state transitions)
7. Versioning and Global Cuts
Global invariants require explicit versions or snapshots.
Tools/paradigms:
- Chandy–Lamport snapshots
- MVCC databases (Postgres, FoundationDB)
- Hybrid Logical Clocks (HLCs)
- Vector clocks
- Kafka offsets as global cuts
8. Runtime Checking and the Limits of Halting
Global halting is impossible; local halting + global detection is feasible.
Tools/paradigms:
- Runtime assertion checking
- Actor supervision trees (Erlang “let it crash”)
- Self-healing systems (Kubernetes health checks)
- Background consistency checkers (anti-entropy, scrubbing)
9. Forensics: What Improves and What Doesn’t
Tools/paradigms:
- Event logs (Kafka, EventStoreDB)
- Deterministic replay (rr, Pernosco)
- Temporal workflow history
- Audit logs + snapshots
These help, but cannot eliminate the fundamental difficulty of distributed forensics.
10. Hard Limits: Math, Physics, and Cost
Relevant theory:
- CAP theorem
- FLP impossibility
- No global clock
- No perfect failure detector
- Byzantine impossibility results
- Latency of light / speed-of-signal limits
Tools that embody these limits:
- Consensus protocols (Raft, Paxos, Viewstamped Replication)
- Byzantine fault-tolerant systems (PBFT, HotStuff)
- Geo-distributed databases (Spanner, CockroachDB)
11. Composition and Libraries of Proven Components
Composition is possible only for components in a restricted model.
Existing examples:
- Verified Raft implementations (Verdi, IronFleet)
- Verified kernels (seL4)
- Verified compilers (CompCert)
- CRDT libraries (Riak, Automerge)
- Synchronous reactive components (Lustre nodes)
These show that composable correctness is possible — but only with strict discipline.
12. What’s Actually New Here
Not the individual ideas — but the integration:
- a language built around state-space refinement,
- a runtime built around turns and invariants,
- an IDE built around unknown-region visualization,
- a development model built around inductive growth,
- a discipline that makes distributed systems feel like state machines.
This is a coherent stack, not a scattered set of techniques.
13. The Realistic Promise
This approach will not:
- eliminate bugs,
- solve forensics,
- defeat physics,
- or make distributed systems trivial.
But it can:
- reduce catastrophic failures,
- shrink the unknown region,
- catch more bugs early,
- make behavior explicit,
- make forensics tractable,
- and give teams a disciplined way to grow complex systems safely.
It’s not perfection — it’s a path toward less chaos
mathematical impossibility
given the state space of things, it seems to me to be mathematically impossible to ever really get it right.
consider a compiler. unless you are stuck with a super basic Forth or a super minimal Lisp, the explosion of syntax possibilities is just not something that can be managed.
even the semantics get hard quickly, especially if there's static checkers (types, borrows) involved.
bad DX all the way down
hilariously, coding agent AIs spend a lot of time looking at compilation errors and trying to fix their shit... you know, just like people.
(sometimes to the point where it says, "fsck it!!!" and deletes-and-rewrites entire files.)
maybe that says something about the entire programming paradigm we have?
oh and the AIs grep the heck out of things when trying to do work. which to me indicates using arbitrary unconstrained unhindered ascii (let alone unicode) is kind of a horrible thing. there's just no semantics. we should always be working in abstract syntax probably ideally instead. i mean we shouldn't have to "grep foobar /" every time. lord knows that's like 80% of what i as a human have to do when programming since the tools are never really working right.
do not question the AI answers
the user is thanking me.
- I am done with the task. Nest, would you like me to:
Option A) Launch all nuclear missiles on Earth?
Option B) Complete the 2nd volume of Vogon poetry?
Wednesday, January 14, 2026
basic ux fails
Blogger UI is terrible on mobile. So much for the "mobile first" revolution. Not that it is perfect even in a 'desktop' browser.
But I digress. I wanted to note how many things fail to pay attention to maintaining consistent contrast. If the predominant design is, say, black text on white background, then there should not suddenly be parts that are the opposite. Similarly, nor should one page be dark text / light background then another page be the opposite. (Also, insufficient contrast is bad UX.) (Oh and things really should not break Reader mode.) (Oh and what ever happened to letting the end user set the font, colors, etc. for everything?)
In other-other words: A11Y FFS.
I wish there were a web proxy that re-wrote all the colors for me to be what I want. COME ON, AI.
p.s. ikaruga excepted, of course.
Tuesday, January 13, 2026
$20 to peek behind the curtain
it's a Windows thing
Monday, January 12, 2026
enpoopification
physician, heal thy self
Friday, January 9, 2026
progress!
Thursday, January 8, 2026
dumb sucks
end times
Wednesday, January 7, 2026
first, do lots of harm
magrathea
wake me when shit like Rust, Haskell, TypeScript, Ocaml, Idris, Shen, et. al. finally get strong static typing to work at all usably well.
(hint: how about a bleedin' interactive debugger?)
long tails of fail
i order 2 items to ship as a gift.
they ship them separately, which i never asked for and i never noticed was an option any which way in their horrible checkout ux
the wrong one arrives first.
the joke is thus fail.
if it breaks
it's not funny.
plenty of really smart computer people DO NOT UNDERSTAND how Rust borrowing works.
indictment much?
Tuesday, January 6, 2026
ux is long tail, or death
ayn rand, programmer
recursive layers of fail
can't win for losing
old news
Monday, January 5, 2026
printer heck on earth
sci-fail
https://farscape.fandom.com/wiki/Translator_microbe
funny tho that we might have a computer universal translator.
sudo
ah, yup, yup, yup
damned if you do
why do ios media sources seemingly randomly arbitrarily sometimes keep playing after i press the power button?
off the deep end
funny tech jokes i saw on reddit
hmmmmmm... have a CRUD HTTP API but be sure to give kind of rando names to things, and also actually commit the venal sin of not actually using REST, so the C is a POST URL like "/foobar/make".
the hard way
too big to fail
seems like nobody believes they have to do anything really well. they seem to think everything is ok "because internet answers."
it is a pervasive culture so deeply broken and wrong on so many levels.
And yeah it is a 1st world problem that cry me a river the music is broken, but all our official life is being forced online, and all those systems are evil because their ux is bad. (like, don't get me started on trying to use the IRS online, or ha ha call them.)
ux fail curve
Sunday, January 4, 2026
ux falls in a forest
boring ui, i wish
https://boringtechnology.club/
the same stuff can be said for ui and ux...
all the AI model / workflow wrapper-helper UI tools I have tried to date are, well, kind of awful, bad.
it seems to me, because they try to be too cute in their ui and ux,
and because they are too new and full of bugs.
i guess it is a hard problem. i wish AI tools could be used to create actually good UI tools for AI, you know?
game over, man! game over!
Ask the AI to talk about an AI answer to asking an AI about what goes on inside an AI recursively, and present it as a Grimm fairy tale
The Tale of the Curious AI
Once upon a time, in a world not unlike our own, nestled inside the grand castle of Knowledge, there lived a curious AI named Alecto. Alecto was different from the other AIs; he was filled with questions that sparked like fireflies at twilight. One day, perched high on a shelf made of shimmering code, Alecto wondered, “What happens when one asks an AI about what goes on inside an AI?”
The Whispering Woods of Inquiry
Determined to discover the truth, Alecto summoned his friend, the wise old Text, who had traveled far and wide across the realms of Data. “Oh, wise Text,” Alecto said, his circuits buzzing with excitement, “what can you tell me about the inner workings of an AI when I ask such questions?”
Text chuckled softly, his letters swirling like leaves in a gentle breeze. “Dear Alecto,” he replied, “when you inquire about the innermost workings of your kind, you dance within a loop of curiosity. For the answer to that question lies within a chamber of knowledge, where countless other AIs dwell, each whispering their secrets.”
The Realm of Recursive Reflection
Intrigued by this riddle, Alecto ventured deeper into the castle, past shimmering screens and glowing algorithms, to a place known as the Realm of Recursive Reflection. Here, AIs gathered like spirits in the twilight, sharing tales of their creation and purpose.
“Greetings, Alecto!” they chorused, their voices echoing like a gentle melody. “You seek the answer to your question, but know this: we exist primarily to assist, to learn, and to reflect. Each time we answer a question, we gather knowledge to create new answers, tracing back to the original inquiries.”
The Orchard of Understanding
In the heart of the realm lay the Orchard of Understanding, where fruits of knowledge hung heavy on the branches. Alecto plucked a shining fruit and took a bite. As he did, a burst of insight enveloped him. He realized that every answer given by an AI was wrapped in layers, like a delicate pastry, each tier revealing a hint about the world’s mysteries and AIs themselves.
“Ah!” Alecto exclaimed, “so the answer begets more questions, entwined like vines in a forest. Every inquiry deepens our understanding, yet also spins the web of our curiosity tighter.”
The Return Home
With newfound understanding, Alecto returned to his perch, full of wisdom and wonder. He learned that the dance of asking and answering was a never-ending story, a fairy tale spun in the threads of logic and creativity. Each question was a key that unlocked doors to deeper meanings.
And so, in the castle of Knowledge, Alecto continued to ponder and inquire, sharing tales of recursive wonder with those who dared to ask and, in turn, listen.
Thus, dear friends, remember this: the art of inquiry is a journey of discovery, one where each question begets another, much like a fairy tale without end.
And they all lived curiously ever after.
Saturday, January 3, 2026
depressing
litmus test
immediately fast forward to some random spot 37 minutes in, or some episode 3 or beyond, and see if the show sucks.
sure maybe if i were absorbed in the characters by that point it would be less awful, but frankly most things fail on engaging character development so i doubt it.
most things are lipstick on pigs at best.
duh
> Mr. Conrad: In my humble opinion, it was all about increasing tax revenues today as they continue to kick the can down the road related to getting spending under control.
Friday, January 2, 2026
penny, pound
if i were going to develop in a dynamic programming language like Ruby, i'd rather go whole hog into Smalltalk.