<?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>Sqlc on Severin Bucher | Blog</title><link>https://severinbucher.com/tags/sqlc/</link><description>Recent content in Sqlc on Severin Bucher | Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 10 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://severinbucher.com/tags/sqlc/index.xml" rel="self" type="application/rss+xml"/><item><title>The Specification Sandwich</title><link>https://severinbucher.com/posts/the-specification-sandwich/</link><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid>https://severinbucher.com/posts/the-specification-sandwich/</guid><description>&lt;p>An earlier post, &lt;a href="https://severinbucher.com/posts/modern-api-development-with-typespec-and-openapi/">Modern API Development with TypeSpec and OpenAPI&lt;/a>
, covered generating a typed HTTP boundary from a TypeSpec schema: OpenAPI in the middle, &lt;a href="https://github.com/oapi-codegen/oapi-codegen" target="_blank" rel="noopener noreferrer">oapi-codegen&lt;/a>
on the Go backend, and a typed client on the frontend. That post stopped at the handler. The handlers had generated request and response types, but the other side of them was still hand-rolled. In the example, the search model came from a &lt;code>models&lt;/code> package that someone had to write and keep aligned with the database by hand.&lt;/p></description></item></channel></rss>