Uses

What I build with.

The tools I actually reach for — the ones behind the things on this site, not a wishlist. Honest about what's load-bearing and what's just along for the ride.

This site

Static HTML, no framework soup, served from the edge.

Astro
Built to plain static HTML — real pages first, enhancements on top.
Cloudflare Pages
Hosting at the edge, plus two small serverless Functions for the only server-side bits.
TypeScript
Everywhere it can reach, including the build scripts.
Plain CSS + design tokens
One 4px scale, one type scale. No utility classes, no runtime CSS-in-JS.
Newsreader + IBM Plex Mono
Self-hosted through Astro's Fonts API, with metric-matched fallbacks so nothing shifts.

SpotifyScraper & Python

The library most people have actually used, and how it is built.

Python
The language most of my shipped libraries are written in.
httpx
Sync and async clients over one sans-io core — the same logic, two front doors.
Typed, frozen models
Fewer surprises at the edges; the shape of the data is the contract.
A typed API + a CLI
Import it, or run it from the terminal. Same engine underneath.
A real test suite
Because the verification habit has to start with my own code.

How I actually work

The quieter half — process, not packages.

Claude Code
An AI pair I trust with real edits, kept honest by guardrails and review. This site is partly built with it.
Git as the CMS
Words live in Markdown, in version control. Publishing is a commit, history included.
Verification first
Proving output is faithful to its source before anything is allowed to depend on it.

Out in the open

Where the work lives if you want to check my receipts.

GitHub
Where the code lives.
PyPI
Where the library ships.
Stack Overflow
Where I answer more than I ask — these days, anyway.

This is the stack I can vouch for, because it's shipped. Ask me about the editor and the keyboard — that's a longer, nerdier conversation. If you want the why behind the site itself, read the colophon.

boiler room — ali@aliakhtari.com