<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Compliance Engineering · Faiz Ahmed Farooqui</title><description>Posts in the Compliance Engineering series.</description><link>https://faizahmed.in/</link><item><title>Three Error Shapes, One API: Adopting RFC 9457 Problem Details</title><link>https://faizahmed.in/rfc-9457-problem-details-api-errors/</link><guid isPermaLink="true">https://faizahmed.in/rfc-9457-problem-details-api-errors/</guid><pubDate>Fri, 21 Aug 2026 07:30:00 GMT</pubDate><category>api</category><category>rest</category><category>nestjs</category><category>nodejs</category><category>http</category></item><item><title>Key Rotation Without Downtime: Never Generate a Key in a Migration</title><link>https://faizahmed.in/jwt-key-rotation-without-downtime/</link><guid isPermaLink="true">https://faizahmed.in/jwt-key-rotation-without-downtime/</guid><pubDate>Fri, 21 Aug 2026 04:00:00 GMT</pubDate><category>postgresql</category><category>key-management</category><category>jwks</category><category>security</category><category>nodejs</category></item><item><title>Append-Only Audit Logs in Postgres: Your Trigger Misses TRUNCATE</title><link>https://faizahmed.in/append-only-audit-log-postgres-hash-chain/</link><guid isPermaLink="true">https://faizahmed.in/append-only-audit-log-postgres-hash-chain/</guid><pubDate>Thu, 20 Aug 2026 10:00:00 GMT</pubDate><category>postgresql</category><category>audit-log</category><category>security</category><category>compliance</category><category>nodejs</category></item><item><title>Nested JWTs in Node.js: Decrypting a Token Is Not Verifying It</title><link>https://faizahmed.in/nested-jwts-nodejs-decrypt-is-not-verify/</link><guid isPermaLink="true">https://faizahmed.in/nested-jwts-nodejs-decrypt-is-not-verify/</guid><pubDate>Tue, 11 Aug 2026 09:30:00 GMT</pubDate><category>jwt</category><category>jwe</category><category>jose</category><category>nodejs</category><category>nestjs</category><category>security</category></item></channel></rss>