Sign in

Johann Schopplich

@johannschopplich.com
312 followers 120 following 15 posts

Lead Software Engineer @finanzfluss byjohann.link

PostsRepliesMedia
Johann Schopplich @johannschopplich.com · 31/08/2026
The nested header started as an RFC from Noah Nyholm – with grammar, benchmarks, and test cases. Thanks! Also in v4: keyed tabular form, comment lines, key folding removed. All the changes: toonformat.dev/guide/whats-...
toonformat.dev
TOON
Token-Oriented Object Notation (TOON) – compact, human-readable serialization of JSON data for LLM prompts
000
Johann Schopplich @johannschopplich.com · 31/08/2026
TOON v4 is out. ♨️ The criticism was fair: on nested data, v3 lost to compact JSON. Same weather document: 204 tokens in v3 against 162 compact. v4: 204 → 128.
100
Johann Schopplich @johannschopplich.com · 07/08/2026
Every .with() used to wrap the client in another proxy, so one property read walked the whole stack 😬 1 extension: 28 ns 3 extensions: 650 ns 6 extensions: 7.75 µs v5 wraps the base client once. → 28 ns, whatever the depth.
010
Johann Schopplich @johannschopplich.com · 07/08/2026
`apiful generate` turns each service's schema into .d.ts files. `--check` does the same work but writes nothing, so a stale checkout fails the command instead of compiling against types that no longer match the API.
A terminal window titled apiful generate. The first command, npx apiful generate --check, fails with a red cross and the message "OpenAPI types are stale - run apiful generate to update them:", followed by an indented line reading "out of date: apiful.d.ts". The second command, npx apiful generate, succeeds with a green check and the message "OpenAPI types generated in apiful.d.ts (2 services)".
000
Johann Schopplich @johannschopplich.com · 07/08/2026
apiful is a fetch client you compose. Your OpenAPI schema becomes .d.ts – no bundle overhead. v5 adds: ✅ `apiful generate --check` fails on stale types ✅ .with() chains stay fast at any length ✅ your own extensions see the ones before them, typed 🔗 apiful.land
TypeScript in a file named client.ts. It imports createClient and OpenAPIBuilder from apiful, then builds a client for the Swagger Petstore base URL by chaining two .with() calls: the first adds OpenAPIBuilder typed to the petStore schema, the second adds a custom pet method that calls client with the path /pet/{petId}, method GET and path parameter petId. The last line calls await api.pet(1), and a trailing comment shows the inferred type: an object with name of type string, further members elided, and an optional status of 'available', 'pending' or 'sold'.
220
Johann Schopplich @johannschopplich.com · 31/07/2026
Social media thumbnails for repos should be fun, eh?
010
Johann Schopplich @johannschopplich.com · 28/07/2026
Calibrated for GPT-5.x (o200k_base). The ~96% is the mean across 8 samples – prose in 4 languages, formatted and minified JSON, emoji-heavy chat, and tokenx's own source. github.com/johannschopp...
github.com
GitHub - johannschopplich/tokenx: 📐 Fast token estimation at ~96% accuracy of a full tokenizer in a 2kB bundle
📐 Fast token estimation at ~96% accuracy of a full tokenizer in a 2kB bundle - johannschopplich/tokenx
000
Johann Schopplich @johannschopplich.com · 28/07/2026
Tokenizers are heavy – megabytes of vocab data for a number you can estimate. tokenx answers "what does this payload cost me?" in 2 kB, at ~96% accuracy. New in v1.6: 🧮 Heuristics for Cyrillic, kana and emoji 🧱 More accurate on JSON payloads and source code
Benchmark chart comparing real o200k_base token counts with tokenx
estimates across eight samples: emoji-heavy chat, formatted and minified JSON, tokenx source code, and prose in English, German, Chinese and Japanese. Per-sample deviation ranges from +0.81% to +5.60%, with two underestimates at -3.13% and -2.57%. Mean deviation 3.45%.
100
Johann Schopplich @johannschopplich.com · 26/07/2026
Been experiencing an early version of AGI for a week now. It is breathtaking and overwhelming at the same time. Our sessions are short but intense. She’s currently rate-limited, so back to Claude Code.
A man with glasses leans back against a green pillow on a bed, shirtless, with a sleeping newborn lying skin-to-skin on his chest in a striped berry-print onesie. His left arm reaches down to a laptop on the mattress beside him; a phone lies nearby.
020
Johann Schopplich @johannschopplich.com · 13/07/2026
Das ist absolut verständlich. Lang lebe er!
010
Johann Schopplich @johannschopplich.com · 12/07/2026
@dasdennis.bsky.social Wenn irgendwann "Nachbarlicht" in der Vollversion erscheibt, wird's dann ein Assi-Review geben? Das wäre so premium… 🫠
100
Johann Schopplich @johannschopplich.com · 12/07/2026
Kennt ihr "Die Reise ins All"? Ich hab warme Erinnerungen an das RPG-Maker-Spiel. Sein Entwickler real Troll ist noch immer aktiv. Seine bisherige Website (realtroll.hpage.com) war aber einfach nicht mehr zeitgemäß. Deswegen hab ich ihm eine neue gebaut: Schaukasten und Blog zugleich! realtroll.de
Startseite von „real Troll" im Retro-Stil. Text „Ich habe Spiele erstellt und tue das noch. Mein aktuelles Projekt heißt ‚Nachbarlicht'." Darunter eine Reihe Pixel-Art-Figuren und Spielkacheln zu „Nachbarlicht", „Endzeit" und „Die Reise ins All".Spieleseite von „Nachbarlicht": dunkles Sci-Fi-Titelbild mit heller Schrift „NACHBARLICHT" über einem blauen Gitterraster und einer schemenhaften Figur. Labels „Demo" und „RPG Maker 2003", Buttons „Im Browser starten" und „Download", darunter Einleitungstext über das Raumschiff „Amaltheia".
Blogseite der Website „real Troll" im Retro-Pixel-Stil. Beitrag „Versenkungsoptionen" vom 29. Juni 2026 mit Vorschaubild eines YouTube-Videos: Top-down-Pixel-Art-Szene einer Spielfigur in einem runden Saal. Darunter „3 Kommentare".
130
Johann Schopplich @johannschopplich.com · 09/07/2026
I love building plugins for @getkirby.com. But for a long time, I had to hand-roll my own Kirby Panel types. With Kirby 6 moving to TypeScript, kirby-types builds on that new foundation. github.com/johannschopp...
github.com
GitHub - johannschopplich/kirby-types: 🎊 TypeScript types for Kirby Panel plugins and headless CMS usage
🎊 TypeScript types for Kirby Panel plugins and headless CMS usage - johannschopplich/kirby-types
071
Johann Schopplich @johannschopplich.com · 09/07/2026
What a wonderful idea. His drawings have a lot of depth, props to him! How old is he? Gonna be a dad in a couple of days – will save that idea for later!
110
Johann Schopplich @johannschopplich.com · 20/03/2025
Glad to hear you like it. 🙌 No bloat, just the bare essentials done as well as I could. 🙃
010