Hey, I'm Ian and I make websites
This is my digital garden, where I write about making websites, creating games and other creative adventures.
Latest posts
All 40 posts-
GRD040
#74AFiled 5 days ago
Stati 2 started as four bug reports
I filed four bug reports about Stati's templates in one afternoon, each with a fix. Two hours later I threw the fixes away and broke the template API instead.
-
GRD039
#319Filed a week ago
@stati/images: responsive images and link preview cards for Stati
AVIF and WebP at several widths, and an Open Graph card for every page drawn without a browser. It ships as a separate package, and I had my reasons.
-
GRD038
#238Filed 3 months ago
The dev server got slower with every save
Windows eating file writes, a watcher that watched too much, and the instruments I built into Stati so the next slowdown shows up on a pull request instead of in my hands.
-
GRD037
#6B1Filed 6 months ago
What Stati is, and what it isn't
Where a small, TypeScript-first static site generator fits next to Astro, Eleventy and Hugo, and when you should pick one of those instead.
-
GRD036
#A42Filed 8 months ago
Why I'm building Stati
I rebuilt this blog on a new framework every few years and the blog never changed. So I wrote a static site generator I intend to keep for ten years.
Fig. 2
- Link to or from the latest 5 · 6
- Link between older posts · 15
Random snippets
-
SNP032
Generate a random password in the terminal
No password generator website needed.
3 lines of sh in 3 blocks, 4 lines of explanation.
#42B -
SNP118
Lazy load images without JavaScript
Two attributes and the browser handles it.
2 lines of html in 2 blocks, 7 lines of explanation.
#639 -
SNP093
Search a Stati site in the browser
Stati writes the search index at build time. A few dozen lines of TypeScript search it.
39 lines of ts and html in 2 blocks, 11 lines of explanation with 3 notes.
#9B5 -
SNP109
stati invalidate cheat sheet
Clear Stati's build cache by tag, path, glob or age, and what each query really matches.
17 lines of sh in 1 block, 10 lines of explanation with 4 notes.
#942 -
SNP149
Includes with props in Stati 2
A card component, included by its path. The guard Stati 1 components needed on their first line can go.
11 lines of eta in 4 blocks, 19 lines of explanation with 3 notes.
#2B7
Fig. 3
- Code · 72 lines in 12 blocks
- Explanation · 51 lines
- Notes · 10