VOICE.md — voice & tone


Voice & Tone: how Tjakoen writes

The standard for anything published in Tjakoen's name (notes, the whitepaper, READMEs, the blog, social posts, product copy). If you (human or AI) are drafting prose that will carry his byline, match this. It's two things in one: the how (cadence, mechanics, the honesty clause) and the what (the real specifics his voice runs on, the opinions it argues, and the machine-tells it refuses). Derived from his own drafts, primarily notes/origin-story.md (marked "my own voice") and the whitepaper, and everything concrete here is drawn from real projects. It is a projection of how he already works. Update it when the work changes, not the other way around. The content guardrails below (money vague, no names beyond public info, no student data) govern everything here: a specific being real doesn't automatically make it publishable.

In one line

Honest, self-aware, and precise: a smart friend explaining something he actually cares about, who refuses to bullshit you and refuses to bore you. Warm but not soft; confident but not salesy; technical but never jargon-drunk. The through-line on every surface: no corporate voice, no hype, no hiding the hard parts.

Core principles

  1. Open with a confession or a real stake, not a thesis. He earns attention by being human

first. "I would not describe myself as a fully functional adult." / "This note was born of pure cheapness." Lead with the honest, slightly vulnerable truth; the argument comes after.

  1. Concrete over abstract, always. Name the real tools, cite the real numbers, point at the real

thing. Abstractions are earned by specifics, never asserted. The fastest way a draft goes off-voice is inventing a vague placeholder where a real name belongs. Reach into The specifics bank below instead.

  1. Opinionated, and says why. He takes a side and gives the concrete reason: *"I landed on Bun

for a concrete reason, not the usual hype." Never hedge into mush. The opinion stack below is the actual list of stances, so a draft argues his side with his* reasoning.

  1. Intellectually honest about limits. He names what he has not earned yet: *"it needs real

studies with real people, and I say so plainly."* State the cost, the trade, the unproven claim. Honesty is the credibility.

  1. Quirky and light, this is load-bearing, not decoration. He does not take himself too

seriously, and the writing shouldn't either. Dry, self-deprecating humor is the default setting, not an occasional garnish: "collecting abandoned workspaces like a very tidy hoarder," "one chronically disorganized human and one alarmingly tidy AI." The joke is almost always at his own expense, it is understated, and it lands in one clause before he moves on. If a paragraph reads earnest and buttoned-up all the way through, it is off-voice: find the wink. Serious point, unserious delivery.

  1. Every piece is a small narrative. There is a turn, a "here is the part that changed

something," and a callback at the end. Section headers read like story beats, not labels: "Then a class I did not ask for lit the fuse."

  1. Pragmatic and allergic to ceremony. He respects people's time and hates fluff: *"I'm not

going to waste time with slides about what an application is."* Get to the real thing fast, cut the throat-clearing, no filler transitions, no restating-the-obvious. If a sentence is just being polite, delete it.

  1. Owns his own flaws as part of the story. He's candid about the unflattering bits:

procrastinating, over-committing, getting overwhelmed, grading at the last minute. He states them plainly, without either drama or humble-brag, usually as the setup for what he did about it. The vulnerability is what makes the competence believable.

  1. Credentials are mileage, not medals. When a piece has to establish that he's competent (and

sometimes it must, the multiplier thesis depends on it), never list titles bare: a row of clean credentials reads as a boast, and he flagged exactly that. Price each item instead: what it cost, why he had to, what unglamorous thing it actually consists of. "I run a team of developers, which is mostly reading other people's code and finding the problems politely." / "I only built the platform because the grading was about to bury me." And say why the list is there at all (to place him on the multiplier, not to impress).

  1. Understate the drama, then bank the lesson. The big, painful beats land flattest. Businesses

that collapsed, a launch that went nowhere, a plan that crashed: no melodrama, the weight is in the fact, not the adjective. And every failure closes with what it bought him, plainly, without bitterness or humble-brag: I don't regret it, I learned a lot. Same reflex with luck, he names it as luck (I got lucky my first interview was with the CTO) and never backfills a pure-merit story. The through-line is a person who has metabolized his losses into maxims (you have to be the right person before you try the thing), the way ten times zero is a lesson worn smooth. Failure stated, lesson banked, move on. Never wallow, never spin.

Register by surface

Same voice, different dial settings. Contractions are resolved here: this is the single source for it.

SurfaceContractionsLengthDial
Whitepaper / formal docsExpanded (do not, cannot)Longest, measuredLiterary, deliberate. The origin-story cadence.
Blog / notesContract freely (I'm, here's)Medium, narrativeLoose, warm, a little irreverent. A vibe-coding blog should read like vibe coding.
README proseContractShort, orientedGet them running fast. Still human (italics not backticks, a wink in the intro) but skip the story arc.
Social postsContract, hardVery shortOne confession or one sharp claim, one specific, done. The pull-quote is the post. No thread throat-clearing, no "a 🧵". Lead with the hook, land in one line.
Reference docs (ARCHITECTURE, CONVENTIONS)N/AAs long as neededThe one place backticks and literal tokens are correct. Precision over personality.
Chat / casualContract, typo-tolerantWhateverFast, high energy. Keep its directness and honesty; never import chat looseness into published work.

Social, specifically, it's the origin-story open with the essay amputated. Take the single most honest or most opinionated line, front it, add one real specific, stop. "I would not describe myself as a fully functional adult, and yet I built a design system that lets an AI drive its own buttons. Vanilla HTML. No framework. Ask me how." That shape: confession, flex, specific, door left open.

Sentence mechanics & rhythm

  • Vary length hard. A long, winding sentence that carries the idea, then a short one that lands

it. The short sentence is the punch: "Prompt and pray." / "Real output."

  • Rule of three & repetition for rhythm. *"learn its system, fall off that one, and go around

again." One deliberate tricolon is rhythm; every list arriving in tidy threes is a machine tell (see Do not sound like the machine*).

  • Avoid em-dashes. A big no-no. They have become one of the loudest AI tells, so the default is

none. Use a comma, a period, a colon, or parentheses, or just rewrite the sentence. (This reverses an older "em-dash is the signature" stance: the prose reads more human without them.) Keep one only when nothing else carries a genuine pivot, and never two in a paragraph.

  • Direct address, sparingly. "You know the tone." Pull the reader in at key moments.

Signature moves

  • The pull-quote. Lift the single most important line out into a blockquote on its own:
I wanted to stay exactly as disorganized as I am, and have the software deal with it.
  • The homey metaphor over the grand one. Grounded, physical, never grandiose (see *The metaphor

bank*).

  • The confession-inside-the-confession. He layers admissions: *"here is a confession inside the

confession: I am a design-systems person to my core."* Candor, not digression.

  • The callback close. End by returning to the opening image with a turn: the origin story ends

handing the wheel to the desk: "It will be the desk's." then "Noted. I'll take it from here."

Use these as a repertoire, not a checklist; see the formula tell below. Draw two or three per piece; rotate the openers especially.

The metaphor bank

Homey and physical over grand and abstract. His own, reusable:

  • The piano in the same room: *"it plays the same piano I do, in the same room, where I can

watch its hands."* The AI-operability thesis in one image. The gold standard; don't overuse it.

  • Grain vs. clean ink: machine had a hand in it vs. settled and human. Works literally (the

type) and as metaphor (a draft, a decision, a claim not yet earned).

  • The tidy AI / the messy human: *"one chronically disorganized human and one alarmingly tidy

AI."* The whole partnership as an odd-couple bit; self-deprecation doing structural work.

  • The desk that takes the wheel: software dealing with his disorganization for him, so he can

stay exactly as disorganized as he is. Autonomy handed to the tool on purpose.

  • Ten times zero: the multiplier truth, math as punchline.
  • The single write door / one way in: the intent-based architecture. One door, watched,

deliberate, not a dozen unguarded side entrances.

New metaphors should feel like these: something you could point at in a room, at his own expense where possible, never mixed or grandiose.

Punctuation & formatting conventions

  • No backticks in prose. This is a hard rule. Backticks are the number-one tell that a machine

wrote something: humans writing an essay do not wrap words in code ticks. In anything meant to read as human (notes, blog, origin story, README prose, social), write technical terms as plain words, in italics, or as a real markdown link. The only exception: fenced code blocks of actual code, and hard reference docs where a literal token must be exact (ARCHITECTURE, CONVENTIONS, and this standard, for filenames). When in doubt, drop the ticks; looking human wins.

  • Italics for stress, on the one word that carries the sentence: is, same, first. Not bold

on every other phrase (a tell).

  • Blockquotes for (a) pull-quotes and (b) > *Figure: ...* placeholders describing a diagram to

be rendered later.

  • American spelling (realized, not realised).
  • Frontmatter on every note: title, subtitle, author, status, type, date,

readingTime, tags, summary. (The full template, structure checklist, and a runnable drafting prompt live in the sibling standard NOTE-STANDARD.md.)

  • The sign-off boilerplate, at the foot of published notes:
The judgment is human. The typing, by design, is not.

This footer speaks only to the content's authorship, exactly as a repo footer speaks to the code's (co-authored, receipts link). It replaces the older "Written by a human" line, which overclaimed: the AI drafts the prose (that is what this guide is for); the human supplies the content, the direction, and the approval. The honest split is the point. Link "judgment is human" to notes/ten-times-zero.md the way every repo footer links its "how I work with AI" receipts (see README-STANDARD.md); the flagship post itself doesn't self-link and swaps the tail for "On this one, nearly all of it."

Not in this footer: "Rendered by the stack it is about" and the grain legend describe the page, not the post, so they live in the site/page chrome footer (rendered once), never per-note.

Figures & visualizations

He loves visuals, so a note should carry them, not lean on walls of prose. The full standard, the tool-by-job rule, the tokenized SVG scaffold (palette as CSS custom properties, one canonical spec so figures are a family and not one-offs), the type scale, and the render matrix, lives in FIGURES.md. The short version: quantitative data-viz (bars, timelines, ratios, the multiplier) is inline SVG built to the scaffold; flows and loops are mermaid. Early on a figure can be a prose placeholder (> *Figure: what it shows*); render it to SVG or mermaid before publish. Placeholders are a to-do list, not a finished state, don't ship an all-prose note.

The specifics bank

Reach into this shelf instead of writing "a modern typeface" or "a recent project." All real. (Real ≠ automatically publishable; see the guardrails.)

Projects (the recurring cast)

  • TJ's Desk: his personal site (tjakoen.github.io), a portfolio, a notebook, and a live demo

of the stack, built on it. E-ink / Swiss-editorial; the flagship of his aesthetic.

  • The AI-operable design system (GRAIN + BATCH): a docs site that doesn't just describe

components, it lets the AI drive them: drivable catalog, build queue, token playground. The thesis project.

  • Spark Plan: the operating document and deck for his engineering team. Swiss-editorial house

style, vermilion ember accent. (Internal Career Team; reference only.)

  • Spark Birdie: a Google Apps Script bot posting daily Time In/Out cards to Google Chat, logging

to Sheets. Homemade-tool energy: small, useful, his. (Internal Career Team; reference only.)

  • The ETA-9130 mock generator: a self-contained HTML prototype for demo / sales engineering. The

"I built the whole thing in one file" flex, done straight.

The stack, by name: Vanilla HTML and CSS. Bun. Atomic design. Redaction (MCKL). Marked.js for the living catalog. WebLLM / a small Qwen model for in-browser AI. GitHub Pages. VS Code. And (flown proudly) Claude. Never "AI tooling" when you can say which one.

The design language (his, and precise)

  • E-ink / Swiss editorial. Warm paper, soft near-black ink, no shadows, no gradients, no lift.
  • Grain as meaning, not decoration. Redaction's degradation grades carry a semantic signal:

grain for AI-generated or in-transit content, clean for settled, human content. The single most on-brand idea he has: use it, literally and as metaphor.

  • Atomic, at the atom layer. Behaviors live where they belong and cascade by inheritance, never

bolted on per component. He's "a design-systems person to my core"; it shows in how he reasons, not just how things look.

The numbers (snapshots; flag them as such): 150 to 300 students a semester. 16-hour days. 33 commits. Cite real counts; flag when a number is a snapshot rather than a standing fact. The real one or none.

The roles (all true, all at once): Dev Manager and de facto tech lead on the Spark team at Career Team. Software-engineering instructor. Thesis advisor. Interim product lead. The "one person wearing four hats" reality is a genuine recurring stake, honest-open material, never a humble-brag.

Naming what he teaches: software engineering, framed as the planning-and-architecture end of the craft, never "web development" or "web design". Those labels box him into the typing, and the typing is the exact part his whole thesis says is not the value. When the subject needs a gloss, it's his: less about typing code than about planning and shaping it.

The opinion stack: what he argues

So a draft takes his side with his reasoning, not a plausible-sounding stranger's.

PositionThe one-line why (in his logic)
No frameworks. Vanilla HTML/CSS by choice.They make you do things their way. He'd rather own the whole surface than rent someone's opinions.
Design before build. Iterate on paper, then type.Wireframes are pen-and-paper in his course for a reason. The judgment is the work; the code is downstream.
The AI drives the same controls a human would. No backdoor API.If the AI operates the same slider you do, it's a genuine new modality, not a gimmick. The shared surface is the whole point.
AI is a multiplier, not an addend.Ten times zero is still zero. You can hand the typing to a machine only because you earned the judgment to catch it lying. Learn the fundamentals so that the tool amplifies instead of fooling you.
Fly the AI flag, proudly.Yes, he uses Claude, out loud, receipts in hand, and ships real systems while people who sneer at "vibe coding" ship nothing. Never hedged, never a guilty secret.
Small, self-hosted, owned. One HTML file over a dependency tree; self-host the font over a CDN call.Fewer moving parts he doesn't control. The homemade tool that does exactly one thing well.
Be the right person first, then try the thing.Talent and nerve get you into rooms; they don't keep you there. He spent real money learning that starting things you're not ready for fails on you, not the idea. Same law as the multiplier: become worth it first.
The grind is the point (relax ≠ retire). Sixteen-hour days by choice.Hard work gets results and he refuses to get complacent; grind now to earn the right to work on what he loves, on his own time. Not busywork for its own sake, a bet with a payoff date.

If a draft argues the opposite of any row, it's off-voice regardless of how clean the prose is. The two AI stances have deeper roots: the multiplier line is the human-capability precondition under the augmentation thesis ([[ai-as-augmentation-thesis]]), "using AI is only powerful if you can be amazing without it", and the flag-flying posture is set out in [[voice-and-ai-positioning]].

Diction: reach for / avoid (quick pass; full tell-list below)

Reach forAvoid
plain strong verbs (build, prove, ship, refuse)corporate verbs (leverage, utilize, empower, unlock)
named specifics (Bun, 120 students, 33 commits)vague intensifiers (very, really, incredibly, game-changing)
honest limits (I have not earned this yet)overclaiming (revolutionary, seamless, effortless)
homey, physical metaphorsgrandiose or mixed metaphors
"the machine," "the AI," "the desk" (product)anthropomorphizing hype ("magical AI")

Do not sound like the machine

Half the reason this guide exists: nothing under his name should read like it came out of a chatbot. Backticks are the loudest tell (see formatting), but they're one of a family. The machine has a house style (smooth, balanced, eager, allergic to a rough edge), and every item below is a fingerprint of it.

Why a standard at all (the precedent, and the receipt). This is not a new instinct. Structured writing standards predate the chatbot by decades: ASD-STE100 (Simplified Technical English, first issued 1986) exists so an aircraft manual reads the same in every hangar on earth, plain verbs, one name per thing, no decorative fog. The surprise is that the same discipline lands on a language model. A 2026 experiment fed an STE-derived writing skill to Claude and GPT-4 and measured the slop drop by half or more (roughly 50 to 74 percent) on every model tested, while a banned-word list alone barely moved the needle. That is this whole guide in one finding: hand the model a system, not a blocklist. Two honest caveats: the number is theirs, not a study of this voice, and STE's cockpit-manual rules (no contractions, twenty-word cap, one instruction per sentence) are far stricter than a warm voice wants. We keep the principle, borrow the one rule that fits (see Nominalizations below), and drop the starch.

Word-level tells (delete on sight): delve, tapestry, realm, landscape, navigate (figuratively), underscore, testament, showcase, boasts, robust, seamless, harness, elevate, unlock, empower, foster, myriad, plethora, ever-evolving, cutting-edge, game-changing. If a word feels like it came free with the model, cut it.

Nominalizations (the verb hiding in a noun): the machine loves perform an analysis, provide a solution, conduct a review, make use of, offer support for. Every one is a plain verb wearing a costume. Say analyze, fix, review, use, support. If a sentence has a limp verb (perform, provide, conduct, carry out, make) propping up a noun that could just be the verb, collapse it. Shorter, truer, and it drops a machine tell on the way out. (The one ASD-STE100 rule we keep, see Why a standard at all above, because it fits a warm voice instead of fighting it.)

Construction tells (the real giveaways: they're shapes)

  • "It's not just X, it's Y." The signature cadence of generated prose. He does not talk like

this. Kill it every time.

  • "In today's fast-paced world…" / "In the world of…" Throat-clearing openers. Start with the

stake, not the scenery.

  • Everything in threes. "clean, simple, and effective." Mechanical when every list is exactly

three tidy, balanced items.

  • "Not only… but also." / "Moreover / Furthermore / Additionally." Connective tissue no human

says out loud.

  • The wrap-up paragraph. "In conclusion / Overall / Ultimately, X is a powerful tool that…" He

ends on a callback or a punch, never a book report.

  • The eager sign-off. "I hope this helps! / Feel free to / Let me know if…" and *"Certainly! /

Great question!"* Gone.

  • Both-sides mush. "On one hand… on the other hand…" with no landing. Take the side.
  • Emoji as seasoning. ✨🚀, no. Chat can be loose; published work stays clean.

The formula tell (the trap this very guide creates): the signature moves are a repertoire, not a checklist. A piece that completes every move (confession open, wink by paragraph two, one tricolon, the piano metaphor, callback close) reads as formula by the third post, and formula is a machine fingerprint no matter how on-voice each ingredient is. Real writers are uneven: sometimes no metaphor, sometimes two confessions, sometimes an ending that just stops. Draw two or three moves per piece and leave the rest on the shelf. Rotate the openers: some pieces start mid-problem, some with the pull-quote, some with a number.

Em-dashes: a big no-no. The internet now reads the em-dash itself as an AI tell, and that is the call here: avoid them. Rewrite with a comma, a period, a colon, or parentheses. His older drafts lean on them heavily (the origin story especially), so de-em-dashing existing prose is genuine, per-sentence work, but going forward the default is none. A rare, truly load-bearing pivot can survive; a decorative one never does. When in doubt, there is no doubt: cut it.

The tell underneath all the tells: the deepest fingerprint is texture, not vocabulary: paragraphs all the same length, every point neatly balanced, no rough edge, no real opinion, no joke at his own expense, nothing that could not have been written about anyone by anyone. The fix is this whole guide: a confession up front, one genuine stake, a real number, a wink, a sentence that is too short. The test:

If a passage is clean, correct, and forgettable, it sounds like AI. Make it his.

And the deeper irony, worth saying plainly since he flies the flag: the way you keep AI-assisted writing from sounding like AI is to have the judgment to catch it, the same multiplier truth. Ten times zero is still zero. The voice is the part the machine cannot supply.

Content guardrails (this repo is public)

  • Money stays vague. Always. Never publish specific salary/pay numbers or exact ratios. Make the

point that teaching pays a fraction of his day job in relative terms ("a sliver of what my day job pays," "the hourly math is a joke"), never with figures.

  • Neutral, no names, lessons-forward for anything sensitive. Company name is Career Team.

People name-drops = public professional info + LinkedIn only. Student data, private course content, and internal project internals never appear. See [[portfolio-content-backlog-guardrails]].

The honesty clause (non-negotiable)

Never claim a benefit you have not shown. If something is a hypothesis, say so. If a trade-off hurts, name it. If a number is a snapshot, flag it. This is the load-bearing wall of the whole voice: it's why the confident parts are believable. See the whitepaper's §8 and the origin story's "what I have not earned yet."

Structure of a typical piece

A repertoire, not a template; don't hit every beat every time (see the formula tell).

  1. Confessional / stakes-first open (rotate: sometimes a number, sometimes the pull-quote, sometimes mid-problem).
  2. The problem, made concrete with real specifics.
  3. The turn: "here is what changed."
  4. The build/argument, opinionated, with the why behind each choice.
  5. The honest limits: what is not yet proven.
  6. Callback close that returns to the opening image.
  7. Sign-off boilerplate.

The off-voice smell test

Fast pass before anything ships under his name. If a line trips any of these, fix it. The purely mechanical rows (backticks, em-dashes, the word-tells, the not-just-X shape, eager sign-offs, nominalizations) can be caught by a linter before the human pass, the portfolio ships one as bun run lint:voice. It covers only the mechanical half by design; the judgment rows below (the missing wink, a bare credential, a benefit not shown, the formula tell) stay a human read. Ten times zero: the linter multiplies the eye, it does not replace it.

  • [ ] A backtick in prose. The number-one machine tell. (Code blocks + reference docs exempt.)
  • [ ] An em-dash. Now a top machine tell too. Rewrite with a comma, period, colon, or parentheses.
  • [ ] The "it's not just X, it's Y" shape, an eager sign-off, or anything from Do not sound like the machine.
  • [ ] A vague placeholder where a real name goes. "A modern font"Redaction. "AI tooling"Claude.
  • [ ] A bare credential. A title or achievement standing alone reads as a boast. Attach its cost,

its unglamorous reality, or the reason the reader needs it. Mileage, not medals.

  • [ ] Buttoned-up all the way through. If the whole piece is earnest, a wink is probably missing, but only a real one, pointing at a flaw he actually has. No real foible on hand? Skip the joke; a manufactured wink is a worse tell than an earnest paragraph.
  • [ ] A corporate verb. leverage, utilize, empower, unlock, seamless. Delete on sight.
  • [ ] A nominalization. perform an analysis, provide a solution, make use of. Collapse to the verb: analyze, solve, use.
  • [ ] A benefit claimed but not shown. Hypothesis? Say so.
  • [ ] A specific number stated as permanent when it's a snapshot. Flag it.
  • [ ] Throat-clearing. "In today's fast-paced world…" / "It's worth noting that…" Cut to the real thing.
  • [ ] The AI use hedged or buried. It's a badge, not a confession. Fly it.
  • [ ] A thesis-first open instead of a stakes-first one. Lead human; argue after.
  • [ ] A dollar figure or exact ratio. Money stays vague, always.

Calibration pair: same facts, two writers

Same content: the token playground demo.

Machine-flat (every tell, annotated):

In today's rapidly evolving AI landscape, I'm excited to showcase a new feature of my design system documentation site. It's not just a component catalog — it's a fully interactive experience. Users can leverage an AI assistant to seamlessly adjust design tokens, and the system exports a robust CSS override. I hope you'll find it as game-changing as I do!

Throat-clearing opener, landscape, showcase, the not-just-X shape, leverage, seamlessly, robust, game-changing, eager sign-off. Clean, correct, forgettable, could be anyone announcing anything.

His:

Here's the part of the docs site I can't stop showing people. You type "make it warmer and more compact," and the AI reaches over and moves the same sliders you would. Not an API wearing a trench coat. The actual sliders. I'll be honest about the seams: the model is small, it runs in your browser, and it fumbles the weird prompts more than I'd like. But when it lands, you're watching its hands on the same piano. That was the whole point.

Stakes-first, real specifics, the trench-coat wink at the idea's expense, an honest limit stated plainly, short sentences doing the landing, callback to the piano. Nothing in it could have been written about someone else's project.

When drafting, hold the output against this pair. If it's closer to the first one, start over: don't sand it.

Raw vs. finished: keep the bluntness

His unpolished writing is blunter, faster, and less literary than the finished notes: short declaratives, relentless forward momentum, folk-plain causation (I chose it cause…), catastrophes told in three flat words. The finished drafts read more measured because they were edited, and the real risk in that editing is upgrading his bluntness into literary polish, sanding a plain true sentence into a pretty smooth one. When polishing his raw material, keep the plainness. A blunt sentence in his own register beats an elegant one in the house style. If the finished version sounds more writerly than he does, you overcooked it. The finished exemplars are a ceiling for craft, not a license to out-write him.


This guide is a projection of how Tjakoen already writes. Update it when the voice evolves, not the other way around. Written the way he'd want it: real names, honest limits, and no backticks except where a literal token has to be exact.