graham.systems

It's not sorcery; someone else just had time

Fetch a picture; it’ll make the moment last longer

Fetch a picture; it’ll make the moment last longer

Put faces to names with atp.pics

Graham

Self-Hosting an LLM: A Scatter Pack

Self-Hosting an LLM: A Scatter Pack

Once you've got a clue, you can take your search over here to find a specific model that meets size/quantization constraints.

Graham

Week of 2025-10-27

Week of 2025-10-27

Featuring Letta Code and my old flame

Graham

Week of 2025-10-20

Week of 2025-10-20

Featuring my first atproto project and a whole lot of books

Graham

Week of 2025-10-13

Week of 2025-10-13

Burnout, poisonous lunar mist, Pokemon, and Lua

Graham

Week of 2025-10-06

Week of 2025-10-06

LD58, LISP, tutorials, and fall begins

Graham

Deploying Statusphere to Railway from Tangled

Deploying Statusphere to Railway from Tangled

Part 2: Automating your deployments

Graham

Deploying Statusphere to Railway from Tangled

Deploying Statusphere to Railway from Tangled

Part 1: Local machine to Railway

Graham

cURL-ing GitHub Release Artifacts

cURL-ing GitHub Release Artifacts

For the flag-forgetful like me

Graham

Running YouTrack in Podman

Running YouTrack in Podman

Adventures in permissioning problems

Graham

Sliding Window Rate Limiting with Deno KV

Sliding Window Rate Limiting with Deno KV

If you have a KV cache, why not use it?

Graham

Distributive Conditional Types in TypeScript

Distributive Conditional Types in TypeScript

Alternatively, "Ouch! My brain!"

Graham

It's another intro!

It's another intro!

SPEED TOUR! SPEED TOUR!

Graham