<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Natnael Alemayehu · Writing</title><description>Notes on backend engineering, Go, and the infrastructure that runs it.</description><link>https://natnaelalemayehu.com/</link><language>en</language><atom:link href="https://natnaelalemayehu.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Authorization: scoping data to the right user</title><link>https://natnaelalemayehu.com/writing/authorization-and-ownership/</link><guid isPermaLink="true">https://natnaelalemayehu.com/writing/authorization-and-ownership/</guid><description>Authentication vs. authorization in a Go API: check ownership inside the SQL query, and why someone else&apos;s note should return 404, not 403.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>go</category><category>auth</category><category>testing</category></item><item><title>Password authentication and server-side sessions</title><link>https://natnaelalemayehu.com/writing/password-auth-and-sessions/</link><guid isPermaLink="true">https://natnaelalemayehu.com/writing/password-auth-and-sessions/</guid><description>Hash passwords with Argon2id, keep sessions in a Postgres table, and turn a cookie into a logged-in user with a small piece of Go middleware.</description><pubDate>Mon, 26 Oct 2026 00:00:00 GMT</pubDate><category>go</category><category>auth</category><category>postgres</category></item><item><title>Testing against real Postgres and shipping with Docker</title><link>https://natnaelalemayehu.com/writing/testing-postgres-shipping-docker/</link><guid isPermaLink="true">https://natnaelalemayehu.com/writing/testing-postgres-shipping-docker/</guid><description>Embed migrations in the Go binary, test against a real Postgres with Testcontainers, check sqlc output in CI, and shut down gracefully.</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate><category>go</category><category>testing</category><category>docker</category></item><item><title>Type-safe database code with sqlc and goose</title><link>https://natnaelalemayehu.com/writing/sqlc-goose-type-safe-database/</link><guid isPermaLink="true">https://natnaelalemayehu.com/writing/sqlc-goose-type-safe-database/</guid><description>Schema migrations with goose and a type-safe data layer generated by sqlc, including Postgres error handling and transactions with pgx.</description><pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate><category>go</category><category>sqlc</category><category>postgres</category></item><item><title>Setting up Go and Postgres with Docker Compose</title><link>https://natnaelalemayehu.com/writing/go-postgres-docker-compose/</link><guid isPermaLink="true">https://natnaelalemayehu.com/writing/go-postgres-docker-compose/</guid><description>Run a Go service and a pinned Postgres version together in Docker Compose, connect them with pgx, and build it all into a small production image.</description><pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate><category>go</category><category>docker</category><category>postgres</category></item></channel></rss>