Tombstone
wake
Mar 2014 โ Oct 2015 ยท age 32โ33
What it was
A static site generator, named as a pun on make, built because Jeff hated writing HTML and wanted a personal website on S3 without thinking about it. Pages in Markdown or HTML carried #!key=value headers. Everything was a Source, a lazy key/value document with no fixed set of keys, and every feature was one more wrapper around it: Markdown rendering, tags, a table of contents, cross-page links, Handlebars templates re-run until the output stopped changing. The last step produced a sitemap, a robots file, an audit page and a spelling report from LanguageTool, then wrote to disk or synced to S3, skipping every object whose MD5 already matched its ETag. It shipped at version 0.2.2, published the site for a year and a half, and received one pull request from a stranger.
Wins, for the age
- At thirty-two, Jeff built the first tool they actually depended on, and made every feature a decorator on an open-ended document, a design the code itself called "the real novel idea here."
- Templated to a fixpoint with a 128-round cap, so snippets could fill each other without a dependency graph.
- Deployed by content hash: an unchanged site cost one LIST call, rediscovering what s3cmd sync (2008) had already found.
- Made proofreading a page of the site itself, a URL to visit after deploy rather than a console log a tired ape would ignore.
What it taught
- A chain of lazy decorators is wonderful to grow and terrible to debug. A year later, the commit message was "I have no idea what any of this does."
- Fixpoint iteration can stand in for dependency ordering when the data is small and the loop is bounded.
- Delta syncs need content hashes, and for single-part uploads the ETag was enough.
- Quality reports only get used if they land where you already look. Shipping a word list means owning its politics, as one outside contributor kindly pointed out.
Genealogy
Ancestors: Career S3: intimate knowledge of buckets, ETags and deploying to them. ZenErd Dir Print: an early utility that turned a tree of files into HTML. Descendants: Adama Docs: hand-built generators for a book and a website, the same instinct. Farm Cron: its code carried in, 2014 headers intact, under a static-site CMS. Goat Bot: a one-operator tool deploying through S3.
Epitaph
Here lies wake. It published one website for a year and a half and taught its maker that a chain of lazy wrappers is a joy to extend and a mystery to come back to.