scalable/craft cph / /

the workshop

craft

the engineer's daily craft — typescript's type system, the editor as a force multiplier, debugging as a discipline, refactoring under tests. ai amplifies craft. it doesn't replace it.

what /craft/ is

the /craft/ pillar is for engineers who write code every day and want the muscle memory of the people who appear faster than everyone else on the team — not because they type faster, but because their tools fit their hand and their feedback loop is seconds, not minutes. we cover what the craft actually is in 2026: typescript types as documentation, the editor (vim, emacs, and increasingly claude code) as a force multiplier, debugging as a discipline with named techniques, and refactoring with tests as a safety net.

how the lessons work

the courses here are short, specific, and reproducible. each lesson teaches one technique with a runnable example you can edit in the browser, and a "rebuild from memory" exercise to check that the idea actually stuck. the writing index below complements the courses with one-problem-per-post articles — no intros, no conclusions, just the answer to the specific thing that broke.

what makes this different

ai-assisted coding tools have not replaced craft; they have raised the floor on the basics and put a much higher premium on the engineer who can read, evaluate, and shape what the machine produces. the courses here are written from that position: claude code, copilot, and cursor are assumed parts of the workflow, not novelties. the throughline is taste under pressure — the ability to recognize the right shape of code when the model offers four wrong ones first.

  1. 01

    ts types in anger

    branded types, template literals, conditional types. make illegal states unrepresentable, not just inconvenient.

    6 lessons ~68m typescript 5.7

writing

  1. what i learned shipping an oauth-protected mcp serverthe protocol was the easy part. the oauth flow around it wasn't
  2. template literal types, in practicethe route string and the params object should not be allowed to disagree
  3. agentic chat over synthetic bank datamock api, n8n, ollama. natural-language chat over synthetic data. cpu-only homelab stack
  4. ollama and n8n on a proxmox homelablocal ai, async by design, on hardware you already own
see all 9 craft posts
scalable labs·cvr 30091604·github·linkedin·hello@scalable.dk