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 today
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 3 days 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 5 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
-
SNP005
List all users and groups on linux
Simple way to check your user list with your groups.
3 lines of sh in 3 blocks, 3 lines of explanation.
#962 -
SNP019
Kill the process that is using a port
Find out what is squatting on port 3000 and get rid of it.
5 lines of sh in 4 blocks, 6 lines of explanation.
#395 -
SNP035
Trim a video without re-encoding with ffmpeg
Cut a clip out of a long recording in a second, with no quality loss.
2 lines of sh in 2 blocks, 4 lines of explanation.
#397 -
SNP068
Exhaustive switch in TypeScript
Make the compiler complain when you add a case to a union and forget to handle it.
14 lines of ts in 1 block, 3 lines of explanation.
#B26 -
SNP067
Redirect from a route middleware in Nuxt
Send people who aren't logged in to the login page before the page even renders.
10 lines of js and vue in 2 blocks, 6 lines of explanation.
#694
Fig. 3
- Code · 34 lines in 12 blocks
- Explanation · 22 lines
- Notes · 0