loop + lowdown, field notes from an engineer who writes.
Short, sharp technical lessons pulled from real projects (Doori, kmp-toolkit, PaymentsLab-KMP, Gaddi, Dice), each written once and adapted to LinkedIn, dev.to, Hashnode, and Medium, plus an archive of everything I've written before.
Case study: The Loopdown (also at cv-siddharth.vercel.app)
This repo does three jobs at once:
- π Archive: my complete writing corpus, consolidated and versioned. Nothing lost.
- π‘ Engine: a pipeline that turns a project war-story into a multi-channel post + branded graphic.
- π§± Wall: public proof of consistency. The registry below is the track record.
The Loopdown isn't a content calendar, it's a world. An engineer stuck in a time loop (52 iterations of the same Wednesday), filing field notes on the same bugs and lying systems each pass. Because seniority is the loop: you don't know more code, you've just run the same failure enough times to name it on sight.
Posts share a recurring cast, The Concussed Witness (GPS that lies with
total confidence), Doze the Jailer, The Messenger
(CancellationException, forever mistaken for an assassin), grouped into
series you can binge. Continuity is tracked automatically (see Cast
Appearances below). The world is in lore/; the voice is in
voice/.
Separate universe, same author. Four seasons, forty-eight entries, grown out of a single 2021 story in the archive that turned out to have a whole series folded inside it.
A field correspondent visits worlds that cannot yet leave them and writes down the story each one tells about its own weather. Every world independently reports fourteen gods and fourteen monsters. Nobody anywhere can name the fourteenth.
- Read it on the site β (also at cv-siddharth.vercel.app): all four seasons, every entry, the plates, the tellers and the starmap
- Canon: S1 bible Β· S2 bible Β· S3 bible Β· S4 bible
- Seasons One and Two were audited by multi-lens councils plus cross-family ensembles: S1 Β· S2 ownership audit. Season Three's ownership test is recorded inline in s3-bible.md.
- Sibling series, same universe, no shared cast: The Dark Directory (entry count in the registry table below)
node scripts/morkinstar-plates.mjs # 49 field plates, all four seasons + cover
node scripts/morkinstar-site.mjs # β site.htmlThis is not The Loopdown's cosmology and does not cross over with the cast above. They rhyme. The rhyme is the reward.
| Character | Appearances | In |
|---|---|---|
the-concussed-witness |
5 | Every filter needs a documented exception, When two sensors disagree, rank them, One global threshold is how you delete valid data, Filtered should never mean deleted, Teaching a phone to disbelieve its own GPS |
the-archivist |
4 | Your thresholds do not belong in constants, Invariants are cheap. Silent corruption is not., Never silently change a number someone gets paid on, Your data model is where uncertainty goes to die |
the-recomposer |
2 | collectAsState is quietly leaking your work, Your LazyColumn recomposes on every scroll |
the-fleet |
1 | The captain routes. The captain never rows. |
the-ferryman |
1 | I audited my own migrations. It was not fine. |
the-borrowed-hand |
1 | Plausible is worse than wrong |
the-second-witness |
1 | When two sensors disagree, rank them |
the-understudy |
1 | expect/actual is the wrong default in KMP |
doze-the-jailer |
1 | The 5-second window that crashes your service |
the-messenger |
1 | CancellationException is not an assassin |
| Title | Form | Era | Words | Tags |
|---|---|---|---|---|
| Chronicles Of An NRE Kid | essay | personal-essay | 1966 | memoir identity growing-up |
| CTC: Cost To Company | short-fiction | 2069 (written 2020) | 1628 | dystopia satire world-building corporate |
| Deadline | short-fiction | 2018 | 3164 | memento-mori sci-fi diary philosophy |
| Honest College Fests | humor | humor | 978 | satire college listicle |
| It's A Doggone Life | essay | personal-essay | 1371 | memoir dogs heart |
| Pointer Games | short-fiction | campus-lore | 1739 | campus-lore mystery hinglish world-building |
| Prophecy #201112003 | short-fiction | campus-lore | 1761 | campus-lore mystery world-building |
| The Legend Of K'âæluæ's Scales | short-fiction | 2021 | 1804 | world-building mythology sci-fi framed-narrative |
| The Loopdown | short-fiction | 2020 | 1973 | time-loop sci-fi world-building diary |
| The Pun Force | humor | humor | 627 | puns meta comedy world-building |
| Series | Entries |
|---|---|
| The Dark Directory | 10 |
idea β new-lesson.mjs β lesson.md (source of truth, written ONCE)
β
βββββββββββββββββΌββββββββββββββββ
βΌ βΌ βΌ
linkedin.md article.md assets/card.yaml
(β€1300, punchy) (long-form) β render.mjs β card.png
β β β
βββββββββ you review ββββββββββββ
β
export β Buffer (LinkedIn) Β· dev.to/Hashnode API Β· Medium (manual)
β
meta.yaml logs urls + metrics
β
build-registry.mjs β this README updates
Every draft is checked against voice/voice-profile.md
the style contract distilled from the archive so new posts sound like me, not
generic LinkedIn.
cd scripts && npm install # once (pulls @resvg/resvg-js for SVGβPNG)
node new-lesson.mjs "dead reckoning" --pillar location --project Doori --date 2026-07-19
node render.mjs lessons/2026-07-19-dead-reckoning # card.yaml β card.png
node build-registry.mjs # regenerate registry + this README
node check-setup.mjs # pipeline readiness dashboard
node export.mjs lessons/<dir> # dry-run: plan + paste files (safe)
node export.mjs lessons/<dir> --draft # dev.to drafts, reviewable on-platformAccounts, tokens, and the publish flow: SETUP.md.
| Path | What |
|---|---|
archive/ |
Existing writing, converted to clean Markdown + frontmatter. |
voice/voice-profile.md |
The style contract every post is checked against. |
lore/ |
The universe: bible, cast, pantheon, series. |
lore/bestiary.md Β· docs/bestiary.png |
Generated. Every entity, its sigil, its dead Aspect, and every post it has appeared in. Rebuilds with the registry. |
series/ |
Generated bingeable hub page per arc (cross-post "read the series" target). |
profile.yaml |
Cross-platform identity, handles + canonical strategy; threads into every footer. |
lessons/<date>-<slug>/ |
One folder per lesson: source + per-channel adapts + assets + metrics. |
scripts/design-kit.mjs |
The visual identity: textures, diagram figures, and the cast drawn as specimen plates. |
scripts/slide-css.mjs |
Carousel stylesheet. Slides are HTML, screenshotted through Chromium, so body copy wraps itself. |
templates/copy/ |
Hook formulas + per-channel skeletons. |
scripts/ |
new-lesson Β· render Β· build-registry Β· check-setup Β· export. |
data/backlog.md |
Idea queue mined from projects. |
data/registry.json |
Machine-readable source of truth (generated). |
docs/DESIGN.md Β· SETUP.md |
Why it's built this way Β· how to wire the accounts. |
.env |
Gitignored. Your API tokens. Copy from .env.example. |
private/ |
Gitignored. Personal/admin docs + original binaries. Never pushed. |
Hook you with a scene, teach you something real, land a payload you didn't see coming, while clearly having fun. See
voice/voice-profile.md.
Each lesson goes out as a coordinated cross-platform drop (SETUP.md):
- dev.to + Hashnode + Medium β native APIs (draft-first, per-post approval). Medium uses the legacy token if your account has one, else a one-click import from the canonical URL.
- LinkedIn β paste-ready file with the full-write-up link auto-embedded (optional Buffer queue). No tool touches the account directly.
- One canonical home so cross-posts don't compete in search, the rest declare
canonical β it. - Consistent branded footer on every article: series, featured cast, "previously in this
series," follow links, all generated from
profile.yaml. Edit once, threads everywhere. - Series hubs (
series/), a bingeable index page per arc, linked from every post in it.
- Repo + archive + voice profile + visual engine + first lesson
- Lore layer, universe bible, cast, series, continuity index
-
export.mjs, dev.to/Hashnode/Buffer + paste files;check-setup.mjsdashboard - Tokens filled, repo pushed: six lessons live across dev.to, LinkedIn, Medium and Hashnode
-
.github/workflows/pipeline.yml: lints voice, smoke-tests renders, fails the build on registry drift, on every push to main - Cadence: 2 to 3 posts/week from the backlog
Two licenses, because this repo holds two different kinds of work.
The engine is MIT. scripts/, templates/, voice/, launchd/ and the
dashboard are yours to take, fork and adapt. That is what they are for.
The writing is not. lessons/, fiction/, lore/, series/, archive/,
notes/ and docs/ are all rights reserved. Read them, quote them with
attribution and a link, but republishing or adapting them needs a yes from me
first. The pipeline is a tool. The field notes are the work.
See LICENSE for the exact terms.