<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Alex Novak — backend notes</title>
    <link>https://example.com/</link>
    <description>Notes on Go, PostgreSQL, Linux and the occasional DevOps detour.</description>
    <language>en</language>
    <atom:link href="https://example.com/feed.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Thu, 27 Aug 2026 09:00:00 +0000</lastBuildDate>

    <item>
      <title>Switching to slog for structured logging</title>
      <link>https://example.com/posts/go-slog.html</link>
      <guid isPermaLink="true">https://example.com/posts/go-slog.html</guid>
      <pubDate>Thu, 27 Aug 2026 09:00:00 +0000</pubDate>
      <description>The standard library finally has structured logging worth depending on. Notes from migrating a service off a third-party logger.</description>
    </item>
    <item>
      <title>Context cancellation patterns I keep reaching for</title>
      <link>https://example.com/posts/go-context.html</link>
      <guid isPermaLink="true">https://example.com/posts/go-context.html</guid>
      <pubDate>Tue, 19 May 2026 09:00:00 +0000</pubDate>
      <description>A short catalogue of the context.Context patterns that earn their keep: deadlines, errgroup, and not leaking goroutines.</description>
    </item>
    <item>
      <title>Connection pooling notes: pgbouncer in front of Postgres</title>
      <link>https://example.com/posts/pgbouncer-pooling.html</link>
      <guid isPermaLink="true">https://example.com/posts/pgbouncer-pooling.html</guid>
      <pubDate>Tue, 10 Feb 2026 09:00:00 +0000</pubDate>
      <description>Why transaction pooling broke my prepared statements, and the three settings that matter more than pool size.</description>
    </item>
    <item>
      <title>My tmux and dotfiles setup, a few years in</title>
      <link>https://example.com/posts/tmux-dotfiles.html</link>
      <guid isPermaLink="true">https://example.com/posts/tmux-dotfiles.html</guid>
      <pubDate>Sun, 30 Nov 2025 09:00:00 +0000</pubDate>
      <description>The parts of my terminal setup that survived three laptop migrations, and how I keep the dotfiles from rotting.</description>
    </item>
    <item>
      <title>Replacing cron with systemd timers</title>
      <link>https://example.com/posts/systemd-timers.html</link>
      <guid isPermaLink="true">https://example.com/posts/systemd-timers.html</guid>
      <pubDate>Mon, 22 Sep 2025 09:00:00 +0000</pubDate>
      <description>Cron is fine until you want logs, dependencies, or a job that doesn't pile up. Moving periodic jobs to systemd timers.</description>
    </item>
    <item>
      <title>Reading EXPLAIN ANALYZE without guessing</title>
      <link>https://example.com/posts/postgres-explain.html</link>
      <guid isPermaLink="true">https://example.com/posts/postgres-explain.html</guid>
      <pubDate>Wed, 02 Jul 2025 09:00:00 +0000</pubDate>
      <description>A practical walk through a real query plan: where the time goes, what the row estimates mean, and when a Seq Scan is fine.</description>
    </item>
    <item>
      <title>Finding an allocation leak with Go's pprof</title>
      <link>https://example.com/posts/go-pprof-profiling.html</link>
      <guid isPermaLink="true">https://example.com/posts/go-pprof-profiling.html</guid>
      <pubDate>Wed, 14 May 2025 09:00:00 +0000</pubDate>
      <description>A memory graph that only ever went up. Using the heap profiler and a diff of two snapshots to find the culprit.</description>
    </item>
  </channel>
</rss>
