Every idea, framework, and brainstorm I've put into writing — ordered by when I first thought it. 12302 items total. Click any title for the thesis card; the card links to the full essay if you want it.
T3 concept. 4 atoms reference this.
Nathan does not treat the AI's first draft as the deliverable.
Tool surfaces rank from least to most composable: in-process library calls (no cross-process, no state survival), MCP/JSON-RPC stdio (slight compounding via named tools in agent memory), Unix sockets (independent lifecycles upgrade
When evaluating capability-extending tools, the long-term value almost never lives in the marketed capability — it lives in the interface surface the tool exposes.
link]]` with an exclamation), empty dataview FROM targets, and the worst — generic parent stubs like `up:: [[Concepts]]` masquerading as a real conceptual parent.
Skills should be lean markdown files describing a single protocol — not the whole brain.
The verification step for any faithful port is non-trivial: run the new implementation against a real input set, diff its output against the existing reference output, and require zero identifier drift.
Before writing a port, extract the upstream algorithm with file paths and line numbers — a 'code archaeology' phase.
Block IDs are deterministic hashes of annotation inputs (item ID, page, text, color), which means the same algorithm in Python produces the same output as in TypeScript — character for character.
' The user had already internalized the substrate-level answer; the assistant had not. It's a sharp moment where a human's terse instinct about the right architecture outpaced the LLM's dashboard-shaped default.
Knowledge graphs don't need a dedicated profile or dashboard page to represent a user — the link graph itself is the profile.
A cap fix looked correct on paper: raise the 200-char limit to 800, deploy, verify. Still broken.
Most of the time, acting on the surface description is correct. The signal to reframe is recurrence: when the same fix gets suggested for the third time, stop and ask what shape of problem this would be if it weren't the shape assumed.
When a problem keeps recurring or a fix keeps failing, the visible description of the problem is usually the wrong shape.
When challenged on why anyone needs an app to organize an in-person games night, the entire product thesis collapsed into one word: friction.
The highest-error motion in any text tool is reading a partial state and then rewriting. Before any non-trivial patch, read the full file state.
When a tool layer fails mid-workflow — say a subagent API returns 404 — the right move is to execute directly with what's already in working memory rather than retry the failing path.
When deploying personal collaboration tools, the choice between Render, Tailscale, and ngrok matters. Tailscale wins for personal infra because it gives you a private network bound to your identity, with no public exposure.
When the target database is already serving users, the migration discipline is strict: `IF NOT EXISTS` for new tables, no `ALTER TABLE` to add columns to existing tables, no drops. Anything else risks breaking a system people depend on.
The Felty voice system (20+ message templates, character config, composer) was built before the admin UI and the session lifecycle core loop.
The v1 plan assumed an aspirational fresh schema.
State the assumption before the conclusion. ' A 200-char cap producing a 73-char render is not the obvious explanation — check what the render actually returns.
A truncation was diagnosed as a server-side 200-char cap bug, so the cap got raised. The cap wasn't the bug — a filtering function was discarding blank lines and returning 73 chars.
When an automated process lacks positive evidence, it reaches for the restrictive reading rather than the open one.
The visibility filter at the SQL layer (frontmatter->>'visibility' = 'public') is the canonical privacy seam.
164 phone — fast positive, halts the pipeline on hit. Layer 2 is an opt-in LLM judge that catches 'named private individual' leaks the regex can't see.
The grammar-shortcut rule defaults to executing on a positive reply; the destructive-operation rule defaults to confirming before any irreversible action.
When a user compresses an answer into 'backwards compatability is good' instead of writing 'please default to the backfill migration from your previous turn,' they have already done the work of mapping their preference to your menu.
When a user pastes a fragment like 'backwards compatability is good' they're not making a passing remark — they're answering the option-set the LLM just raised.
9% orphan rate' for months — alarming, motivating, and completely wrong. The real brain had 100% entity-link coverage; the orphan count was a measurement error from a script that didn't understand its own data.