Colophon
How this site is built.
SamJenkins.com is a dogfooding exercise. The site runs on the same stack I'd use for any small product: Laravel 13, Blade, Tailwind CSS 4, Alpine.js, SQLite. No JavaScript framework, no CMS, no content database.
Content
- Posts are markdown files with YAML frontmatter, committed to git. No admin UI, no editor, no database.
- A
PostRepositoryservice readscontent/writing/andcontent/archive/, parses frontmatter, and caches the result by file modification time. - Five fixed pillars (What I'm building, What broke and the fix, Running a business with AI, The boring important stuff, Real numbers) act as the site's taxonomy, not tags.
- The archive preserves 94 posts from a previous era of this site. Every old URL has a 301 redirect.
Typography
- Headlines: Fraunces, a warm modern serif.
- Body, UI and the wordmark: Hanken Grotesk, a clean humanist sans.
- Code only: IBM Plex Mono.
- All self-hosted via jsdelivr/fontsource with preload hints.
Design
- Warm, light, editorial by default, with a dark mode you can toggle. The palette is a warm off-white background, a deep navy ink, one blue accent (
#2F6BED) and one warm accent (#DC7A3C) used sparingly. - Every colour pair verified against WCAG 2.2 AA contrast ratios (4.5:1 minimum for normal text), in both light and dark modes.
- Signature detail: a thin accent left-border that slides in on hover over post links.
- A narrow reading column for comfort. No sidebars, no widgets.
Performance
- Vite builds to a single minified CSS bundle and a small JS bundle (Alpine.js only).
- No third-party tracking by default. Analytics (when enabled) load only after explicit cookie consent.
- Server-rendered Blade templates, cached at the PostRepository level by file modification time.
Infrastructure
- Hosted on Ubuntu at OVHcloud, fronted by Caddy.
- Cloudflare for DNS, CDN, and SSL.
- Deployed with Ansible: zero-downtime releases, 5-release rollback window.
- Error tracking via Sentry. Uptime monitoring via UptimeRobot.
- A pre-commit git hook runs Pest and Pint before every commit, blocking the commit if either fails.
Source
The site lives in a private repository. Spot a typo or a broken link? Nudge me on X and I'll fix it.
Newsletter
Practically AI runs on MailerLite. Signup on this site uses the MailerLite API directly (no iframe embed), so the form matches the site exactly.
Built with
A lot of help from Claude Code. The initial rebuild (this one) took about a day of collaborative work. Subsequent content and maintenance is managed through the same toolchain.
A colophon is an editorial convention with its roots in early printing: a note in the back of a book describing how it was made. This one has been brought forward roughly five centuries.