<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>sidlynx</title><description>Writing about software architecture, TypeScript patterns, and the small choices that make technical work feel sharper.</description><link>https://sidlynx.me/</link><language>en</language><item><title>Provenance accounting: every commit on the branch explained exactly once</title><link>https://sidlynx.me/blog/provenance-accounting/</link><guid isPermaLink="true">https://sidlynx.me/blog/provenance-accounting/</guid><description>Receipts prove that a commit was validated; they do not say where it came from. Closing a pass of coding agents only when every commit on the branch has exactly one recorded origin is what keeps unexplained work out.</description><pubDate>Wed, 28 Oct 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>git</category><category>ci</category><category>typescript</category><category>software-architecture</category></item><item><title>Validation receipts: making “tests passed” tamper-evident</title><link>https://sidlynx.me/blog/validation-receipts/</link><guid isPermaLink="true">https://sidlynx.me/blog/validation-receipts/</guid><description>An agent that says the tests passed is making a claim about work you did not watch. A receipt binds that claim to a commit, a command set and the logs, so a wrong one is refused instead of believed.</description><pubDate>Thu, 22 Oct 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>testing</category><category>ci</category><category>typescript</category><category>software-architecture</category></item><item><title>When tRPC is not enough</title><link>https://sidlynx.me/blog/when-trpc-is-not-enough/</link><guid isPermaLink="true">https://sidlynx.me/blog/when-trpc-is-not-enough/</guid><description>tRPC is excellent for first-party TypeScript clients, but Java, C#, mobile, partners, and public integrations need an explicit contract. That usually means REST plus OpenAPI.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>trpc</category><category>openapi</category><category>rest</category><category>typescript</category><category>api-design</category></item><item><title>tRPC as a driving adapter</title><link>https://sidlynx.me/blog/trpc-as-driving-adapter/</link><guid isPermaLink="true">https://sidlynx.me/blog/trpc-as-driving-adapter/</guid><description>tRPC can be a clean driving adapter when the domain and use cases stay plain TypeScript. The trick is to keep procedures thin: validate at the boundary, call the use case, and translate the result.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>trpc</category><category>clean-architecture</category><category>hexagonal-architecture</category><category>typescript</category><category>api-design</category></item><item><title>Why I stopped using NestJS for DDD and what I use instead</title><link>https://sidlynx.me/blog/why-i-stopped-using-nestjs-for-ddd/</link><guid isPermaLink="true">https://sidlynx.me/blog/why-i-stopped-using-nestjs-for-ddd/</guid><description>NestJS is productive, but its defaults can quietly turn a DDD codebase into framework-driven application code. Here is the boundary I use now: plain TypeScript in the core, NestJS at the edges.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><category>nestjs</category><category>ddd</category><category>hexagonal-architecture</category><category>typescript</category><category>architecture</category></item><item><title>What this blog is about</title><link>https://sidlynx.me/blog/hello-world/</link><guid isPermaLink="true">https://sidlynx.me/blog/hello-world/</guid><description>A short note on the kind of TypeScript, architecture, and engineering writing that belongs on sidlynx.me.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>meta</category></item></channel></rss>