random thoughts a journey to somewhere

random thoughts — a journey to somewhere

Migrating from GitLab CE to Forgejo

Why we moved 300+ repos off a struggling self-hosted GitLab CE onto Forgejo, how the migration went, and how it performs on 1.5GB of RAM. Read more

AI Coding Tools: My Experience and Practical Tips

What I learned using Cursor and Claude day to day — planning with AI, staying in control of the diff, leaning on git, and why the language you pick matters. Read more

Understanding HTTP/1.1: Redirects in Go (Part 3)

301 vs 302 vs 307 vs 308 — which HTTP redirect to use, which ones browsers cache, which preserve the request method, tested against a small Go server. Read more

Understanding HTTP/1.1: Content-Type in Go (Part 2)

How the Content-Type header decides what a browser does with your response, plus a hand-rolled http.ResponseWriter implementation in Go. Read more

Understanding HTTP/1.1: TCP Server in Go (Part 1)

Build a raw TCP server in Go, inspect what curl and a browser actually send over the wire, and hand-craft a valid HTTP/1.1 response. Read more