Commit Graph

19 Commits

Author SHA1 Message Date
Ken 2abb181790 feat: publish "50% Less Bandwidth Per Deploy" (Cloudpack series #4) 2026-05-27 07:11:58 +00:00
Ken 1805a870c9 feat: publish "A Compromised Server Can't Inject Code" (Cloudpack series #6) 2026-05-27 07:10:19 +00:00
Ken a7990c283a feat: publish "604ms Rebuilds at 50,000 Modules" (Cloudpack series #1) 2026-05-27 07:05:29 +00:00
Ken 6871f3f852 feat: publish "We Shipped 40% Less JavaScript" (Cloudpack series #3) 2026-05-27 07:00:20 +00:00
Ken d81b868246 feat: publish "50KB Down to 2KB" (Cloudpack series #2) 2026-05-27 06:56:53 +00:00
Ken a0bebd8a60 fix: retitle rage posts to outcomes-first framing 2026-05-27 06:51:26 +00:00
Ken 8fab0c1952 feat: publish "What I Learned Maintaining Lage and Why I Rewrote It" (Rage series #6) 2026-05-27 05:45:56 +00:00
Ken e178f02abe feat: publish "node_modules in a Content-Addressed Store" (Rage series #5) 2026-05-27 05:37:08 +00:00
Ken ba575005cf fix: remove blank lines inside SVGs that broke markdown rendering
Markdown treats blank lines as paragraph separators, which splits
inline SVGs apart mid-element. The text and rect elements after
the first blank line leaked out as raw HTML instead of rendering
as part of the diagram.

Fixed in:
- two-phase-fingerprinting (ABI Early-Cutoff diagram - 34 blank lines removed)
- typescript-7 (Parallelism Stack + tsgo comparison - 19 blank lines removed)

Also: replaced clipart SVG hero with generated concept art image,
fixed hero illustration CSS for img element.

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-27 05:26:13 +00:00
Ken 7f0453949e feat: publish "TypeScript 7 Makes the Build Harness More Important" (Rage series #4) 2026-05-27 04:09:32 +00:00
Ken 72ee90daca feat: publish "Hooking Syscalls Without a Kernel Driver" (Rage series #3) 2026-05-27 04:08:39 +00:00
Ken 2de78e3f3c feat: publish "Two-Phase Fingerprinting" (Rage series #2) 2026-05-27 04:08:17 +00:00
Ken 84bf9e706b feat: add inline SVG diagrams to judgment essay
Two diagrams in the warm palette (paper bg, terracotta accent):

1. Floor and Ceiling: before/after comparison showing AI raises the
   floor (what's functional) while the ceiling (excellence, judgment)
   stays where it is. The gap between them IS the argument.

2. Lagged Failure Timeline: decision → invisible degradation →
   failure surfaces 12-18 months later → misattributed to market
   conditions. Makes the delay visible as a four-node flow.

Both use SVG primitives (rect, line, text, circle) following the
diagram design spec: warm palette, Inter for labels, Source Serif
for descriptions, terracotta for accents.

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-27 03:53:02 +00:00
Ken b0960ec71c feat: publish "Your Build Cache Is Lying to You" (Rage series #1) 2026-05-27 01:32:39 +00:00
Ken 69390e319b fix: add unnecessary negative contrast detection to voice linting
- New lint check: 'doesn't just X. They Y' pattern (Claude rhetorical crutch)
- Fixed last instance in judgment essay: 'doesn't just lose income. They lose'
  → 'loses the acknowledgment... The income is secondary.'
- Updated voice-check skill dimension 2 with the pattern description
- Updated AGENTS.md with the new check
- Tightened regex to avoid false positives on legitimate 'isn't only' framing

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-27 00:46:21 +00:00
Ken a951c00e35 fix: purge AI slop from judgment essay, add voice linting pipeline
- Killed 16 em-dashes (Claude fingerprint, 15.9/1000 words -> 0)
- Replaced all clause-dash-elaboration patterns with periods, colons, restructuring
- Removed 'The One-Sentence Version' section (restated the intro, voice anti-pattern)
- Broke tricolon at lines 56-58 (too-clean parallel structure)
- Collapsed 'How to Actually Help' listicle into connective prose
- Added receipt link for ~100x inference cost claim
- Heading dashes replaced with colons (Tradesman Analogy, Excellence vs Functional)

New tooling:
- scripts/lint-voice.sh: mechanical anti-slop linter (em-dashes, trigger words,
  hedging, filler, receipts, sentence uniformity)
- .amplifier/skills/voice-check/SKILL.md: LLM-as-judge voice authenticity check
  (8 dimensions against VOICE.md profile)
- .amplifier/AGENTS.md: standing rule requiring both checks before any publish

🤖 Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-27 00:42:18 +00:00
Ken 917c78a6b3 feat: publish "AI Commoditizes Features, But Judgment Compounds" 2026-05-27 00:13:09 +00:00
Ken 62fe16623b feat: migrate existing posts to Astro content collection
Copy two existing blog posts from content/posts/ (old Gatsby location)
to src/content/posts/ with updated frontmatter:

- localize-react-without-bloating-the-bundle.md
- speeding-up-webpack-typescript-incremental-builds-by-7x.md (was .mdx)

Frontmatter changes: removed path/heroImage fields, added type/tags/summary,
simplified date to YYYY-MM-DD format. Body content preserved verbatim.
2026-05-26 23:11:49 +00:00
Ken 2597afd472 feat: add content collection with schema and reading-time utility
- Created src/content.config.ts with Astro defineCollection using glob loader, pattern '**/*.{md,mdx}', base './src/content/posts', and Zod schema with 5 fields (title, date, type, tags, summary)
- Created src/content/posts/ directory for content storage
- Created src/utils/reading-time.ts with getReadingTime function (split whitespace, 200 WPM, Math.max(1, Math.ceil))
- All 23 new tests pass, all 61 total tests pass, npm run build succeeds

Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-26 23:03:44 +00:00