<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>kunalships.dev</title><description>Tutorials and guides on web app development, cloud, and deployment.</description><link>https://kunalships.dev/</link><item><title>Idempotency: The Claim-First Pattern That Stops Double Charges</title><link>https://kunalships.dev/articles/idempotency/idempotency-claim-first/</link><guid isPermaLink="true">https://kunalships.dev/articles/idempotency/idempotency-claim-first/</guid><description>Retries are guaranteed in distributed systems. Duplicate side effects are not. A deep dive into idempotency keys, the claim-first ledger pattern, and how to implement it in Django and PostgreSQL.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Lambda Invocation Models: The Architecture Decision Hiding in Plain Sight</title><link>https://kunalships.dev/articles/lambda-invocation/lambda-invocation-models/</link><guid isPermaLink="true">https://kunalships.dev/articles/lambda-invocation/lambda-invocation-models/</guid><description>Synchronous, asynchronous, and poll-based invocation give the same Lambda code completely different failure modes, retry behavior, and scaling. A field guide to choosing, plus the three front doors for HTTPS: Function URLs, API Gateway, and ALB.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>SQS vs SNS: Message Brokers vs Pub/Sub, and Why You Usually Need Both</title><link>https://kunalships.dev/articles/sqs-vs-sns-message-brokers-vs-pubsub/</link><guid isPermaLink="true">https://kunalships.dev/articles/sqs-vs-sns-message-brokers-vs-pubsub/</guid><description>Both make your system asynchronous, but they solve different problems. Queue semantics vs topic semantics, when to reach for each, and the SNS → SQS fan-out pattern that shows up in real system designs.</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Two-Tier Fan-Out: SNS to Per-Consumer SQS Queues (Python + boto3)</title><link>https://kunalships.dev/articles/two-tier-fanout-sns-sqs/</link><guid isPermaLink="true">https://kunalships.dev/articles/two-tier-fanout-sns-sqs/</guid><description>Build the SNS-to-SQS fan-out pattern where each consumer owns a private queue with its own retry policy and DLQ. Covers queue policies, raw message delivery, redrive config, and the delivery guarantees you actually get.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Set Up a New AWS Account the Right Way: IAM Admin User, MFA, and Billing Budgets</title><link>https://kunalships.dev/articles/aws-account-setup-iam-admin-billing-budgets/</link><guid isPermaLink="true">https://kunalships.dev/articles/aws-account-setup-iam-admin-billing-budgets/</guid><description>A 25-minute walkthrough: create an AWS account, lock away the root user, create an IAM admin daily driver with MFA, and set billing budgets so you never get a surprise bill.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>AWS for Python Developers: Start Here</title><link>https://kunalships.dev/articles/aws-for-python-developers-start-here/</link><guid isPermaLink="true">https://kunalships.dev/articles/aws-for-python-developers-start-here/</guid><description>Why AWS won the cloud, what it looks like from a backend engineer&apos;s seat, and the one setup mistake almost every beginner makes on day one.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Direct Browser Uploads to S3 with Presigned URLs (Django + boto3)</title><link>https://kunalships.dev/articles/direct-browser-uploads-s3-presigned-urls/</link><guid isPermaLink="true">https://kunalships.dev/articles/direct-browser-uploads-s3-presigned-urls/</guid><description>Upload files from the browser straight to S3 — no proxying through your backend. Presigned PUT URLs with Django, the s3v4 SignatureDoesNotMatch fix, and the exact CORS config you need.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>