<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Satheez Vettivel — Writing</title><description>Technical notes on backend engineering, mobile development, and software craft.</description><link>https://satheez.dev/</link><item><title>When Your Message Broker Has No Idea What You&apos;re Sending</title><link>https://satheez.dev/writing/laravel-message-contracts/</link><guid isPermaLink="true">https://satheez.dev/writing/laravel-message-contracts/</guid><description>RabbitMQ, SQS, and Kafka will deliver a malformed payload just as faithfully as a valid one. Here is why message contracts belong in the application layer and how I built a package to enforce them in Laravel.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Laravel Package Doctor: Composer Tells You What Changed, Not What It Means</title><link>https://satheez.dev/writing/laravel-package-doctor/</link><guid isPermaLink="true">https://satheez.dev/writing/laravel-package-doctor/</guid><description>Before a Laravel upgrade you need to know which dependencies are safe, which are abandoned, which are blocked by your constraints, and which will break on the new version. composer outdated tells you none of that. Here is why I built Laravel Package Doctor and how to use it.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate></item><item><title>Privacy-First Development: Lessons from Building Tuniri for Children</title><link>https://satheez.dev/writing/privacy-first-development-tuniri-children/</link><guid isPermaLink="true">https://satheez.dev/writing/privacy-first-development-tuniri-children/</guid><description>Building for children changes the privacy conversation. For Tuniri, the strongest privacy feature was not a setting or policy page, but the decision to avoid collecting data in the first place.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Four Tools That Keep Every Laravel Project Clean</title><link>https://satheez.dev/writing/laravel-code-quality-toolkit/</link><guid isPermaLink="true">https://satheez.dev/writing/laravel-code-quality-toolkit/</guid><description>Style fixes, automated refactors, static analysis, and tests that read like specifications. Pint, Rector, Larastan, and Pest are the four tools I install before writing the first feature, and they pay for themselves on every commit.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AI Impact on Developers: Work With It, Not Against It</title><link>https://satheez.dev/writing/ai-impact-on-developers/</link><guid isPermaLink="true">https://satheez.dev/writing/ai-impact-on-developers/</guid><description>AI is changing the shape of software work, but the useful response is not panic or blind trust. Developers still own judgment, architecture, debugging, testing, and product decisions.</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Prompt Engineering for Software Developers</title><link>https://satheez.dev/writing/prompt-engineering-for-developers/</link><guid isPermaLink="true">https://satheez.dev/writing/prompt-engineering-for-developers/</guid><description>Prompt engineering for developers is not about clever phrases. A useful prompt works like a small technical brief: role, task, context, issue, constraints, examples, output format, and done criteria.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Claude Code for Development: The Basics</title><link>https://satheez.dev/writing/claude-code-for-development-basics/</link><guid isPermaLink="true">https://satheez.dev/writing/claude-code-for-development-basics/</guid><description>Claude Code is most useful when treated as a development partner inside the repo. Start with setup, repo exploration, plans before edits, tests, diffs, settings, and reusable skills.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate></item><item><title>When to Split a Laravel Monolith</title><link>https://satheez.dev/writing/when-to-split-a-laravel-monolith/</link><guid isPermaLink="true">https://satheez.dev/writing/when-to-split-a-laravel-monolith/</guid><description>A monolith is not a mistake by default. Split a Laravel application when boundaries, data ownership, scaling pressure, and failure isolation are clear enough to survive the cost of distributed systems.</description><pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate></item><item><title>Workplace Security Starts with Boring Habits</title><link>https://satheez.dev/writing/workplace-security-starts-with-boring-habits/</link><guid isPermaLink="true">https://satheez.dev/writing/workplace-security-starts-with-boring-habits/</guid><description>Most workplace security failures do not start with a sophisticated breach. They start with an unlocked device, a convincing message, a shared password, or software installed from the wrong place.</description><pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate></item><item><title>GDPR for Product Teams: What Actually Changes How You Build</title><link>https://satheez.dev/writing/gdpr-for-product-teams/</link><guid isPermaLink="true">https://satheez.dev/writing/gdpr-for-product-teams/</guid><description>GDPR is not just a privacy policy problem. It changes what data you collect, which defaults you ship, which vendors you trust, and how deletion, exports, and notices work in the product.</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate></item><item><title>COPPA for App Teams: The Product Decisions That Create Risk</title><link>https://satheez.dev/writing/coppa-for-app-teams/</link><guid isPermaLink="true">https://satheez.dev/writing/coppa-for-app-teams/</guid><description>COPPA is not just a policy problem for obvious kids&apos; apps. It changes how child-directed and mixed-audience products handle age, parental consent, third-party SDKs, retention, and basic product scope.</description><pubDate>Thu, 27 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Structuring Laravel API Responses at Scale</title><link>https://satheez.dev/writing/structuring-laravel-api-responses/</link><guid isPermaLink="true">https://satheez.dev/writing/structuring-laravel-api-responses/</guid><description>Every Laravel project reinvents the same JSON envelope. Here is why that happens, what a consistent response layer looks like, and how to stop making the decision twice.</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Offline-First Architecture in Flutter</title><link>https://satheez.dev/writing/offline-first-flutter/</link><guid isPermaLink="true">https://satheez.dev/writing/offline-first-flutter/</guid><description>Most apps treat offline as an edge case. For Tuniri, offline was the architecture. What that means in practice — data layer, encryption, sync avoidance, and what I learned shipping it.</description><pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Why I Reach for Astro on Static Sites</title><link>https://satheez.dev/writing/why-astro-for-static-sites/</link><guid isPermaLink="true">https://satheez.dev/writing/why-astro-for-static-sites/</guid><description>After years of reaching for React or Next.js by default, Astro changed the calculation for static sites. What it does differently, where it still has rough edges, and when I&apos;d use something else.</description><pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate></item></channel></rss>