<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Postgres on Shohan Dutta Roy</title><link>http://portfolio.waitgroup.dev/tags/postgres/</link><description>Recent content in Postgres on Shohan Dutta Roy</description><generator>Hugo -- 0.160.0</generator><language>en</language><lastBuildDate>Sat, 21 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://portfolio.waitgroup.dev/tags/postgres/index.xml" rel="self" type="application/rss+xml"/><item><title>Exactly-once is a lie, but the outbox pattern gets close</title><link>http://portfolio.waitgroup.dev/blogs/foreman/03-outbox-pattern/</link><pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate><guid>http://portfolio.waitgroup.dev/blogs/foreman/03-outbox-pattern/</guid><description>The dual-write problem and the transactional outbox pattern</description></item><item><title>Drawing lines: how I carved Foreman into services</title><link>http://portfolio.waitgroup.dev/blogs/foreman/02-service-boundaries/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>http://portfolio.waitgroup.dev/blogs/foreman/02-service-boundaries/</guid><description>Service boundary decisions in a distributed job queue</description></item><item><title>Foreman: why I built a distributed job queue from scratch</title><link>http://portfolio.waitgroup.dev/blogs/foreman/01-why-foreman/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>http://portfolio.waitgroup.dev/blogs/foreman/01-why-foreman/</guid><description>Building a distributed job queue from scratch with Go, Kafka, Postgres, and Redis</description></item></channel></rss>