Anand Rathnas

Anand Rathnas @anand_rathnas_d5b608cc3de

Joined:
Dec 20, 2025

Anand Rathnas
articles - 34 total

The 5 Edge Cases That Broke Our Dev.to Auto-Crossposting (And How We Fixed Them)

Auto-crossposting sounds simple until you deal with duplicates, stale dates, and race conditions. Here's how we made it bulletproof.

Learn More 1 0Mar 8

5 Hard Lessons from Implementing Zapier OAuth in Spring Boot

Three days to get a 'simple' OAuth integration working with Zapier. Here's what I learned about filter chains, race conditions, and PKCE.

Learn More 2 0Mar 5

How We Solved the Producer-Consumer Problem (For Blog Posts)

Writing blog posts is easy. Publishing them consistently is hard. Here's how we built a homebrewed CMS that handles the classic producer-consumer problem.

Learn More 0 0Mar 2

Caching API Responses at the Edge with Cloudflare Cache Rules

Your API is getting hammered. Same endpoints, same responses, thousands of requests. Here's how I used Cloudflare Cache Rules to serve API responses from the edge.

Learn More 0 0Feb 26

Why Your @Async Method Ignores @Transactional (And Leaks Internal Errors)

Production bug report: 'Why does the webhook error say Executing an update/delete query?' Here's how an innocent-looking @Async method broke everything.

Learn More 2 0Feb 24

Implementing Per-Seat Team Billing with Stripe

Adding team plans to a SaaS is tricky. You need per-seat pricing, plan upgrades/downgrades, webhook handling, and graceful degradation when payments fail.

Learn More 1 0Feb 21

Why Auth0 email_verified Was Missing from My Access Token

Spent an hour debugging why verified users were getting blocked. The culprit? Auth0 doesn't include email_verified in access tokens by default.

Learn More 0 0Feb 19

Cloudflare Bot Fight Mode Breaks Zapier OAuth (And How to Fix It)

After solving all the code issues with Zapier OAuth, I hit one more wall: Cloudflare's Bot Fight Mode. Here's the fix.

Learn More 7 0Feb 17

I Built a URL Shortener Because Bitly Made Me Angry

A senior dev once told me: 'Every side project is born from spite.' He was right. Here's the story of building jo4.io.

Learn More 3 2Feb 12

Async vs Sync Audit Logging: When to Use Which

When to use synchronous vs asynchronous audit logging in your application. A practical guide with real examples from production.

Learn More 0 0Feb 10

AWS ElastiCache vs MemoryDB: Which One Do You Actually Need?

A practical decision guide for choosing between ElastiCache and MemoryDB. TL;DR: If your data is ephemeral, use ElastiCache.

Learn More 0 0Feb 7

How I Tamed Claude Code with Pre-Tool Hooks (And You Should Too)

Using PreToolUse hooks to block dangerous git commands and cd in Claude Code. Keep your AI assistant productive without losing control.

Learn More 0 0Feb 5

Jo4 Is Now on Zapier: From Design Doc to Live in 5 Weeks

OAuth2 with PKCE, REST hooks, a spam filter disaster, and a near-closed ticket. The full story of building and shipping our Zapier integration.

Learn More 0 0Feb 3

I Built an API-First URL Shortener You Can White-Label

How I built jo4.io - a developer-friendly URL shortener with full API access and white-label support. Why Bit.ly pricing made me do it.

Learn More 0 0Feb 3

Getting Started with Jo4: Your Modern URL Shortener

Learn how to use Jo4 for URL shortening, QR codes, and link analytics. A complete guide to managing your links effectively.

Learn More 0 0Feb 1

How I Got 100 Users in 48 Days (Solo Founder, $500 Ad Spend, 5% Conversion)

48 days ago, I launched jo4.io - a URL shortener with analytics, bio pages, and custom domains....

Learn More 0 0Jan 30

Beyond the Hype: Balancing AI Innovation with Architectural Integrity

The tech world is currently split into two camps: the "AI-first" enthusiasts who believe prompt...

Learn More 0 0Jan 14

Turning a 2013 Dell E6540 into a Dedicated TV Media Controller

TL;DR: I spent 12+ hours fighting Ubuntu 24.04's layered squashfs, hidden welcome wizards, and Chrome...

Learn More 0 0Jan 11

How Claude Code Helped Me Migrate from AWS to DigitalOcean in 4 Hours (With Live Traffic)

At 6 AM this morning, my SaaS was running on AWS. By 10 AM, it was fully migrated to DigitalOcean...

Learn More 1 0Jan 8

Caching API Responses at the Edge with Cloudflare Cache Rules

Your API is getting hammered. Same endpoints, same responses, thousands of requests. Your origin...

Learn More 0 0Jan 5

Implementing Per-Seat Team Billing with Stripe

Adding team plans to a SaaS is tricky. You need per-seat pricing, plan upgrades/downgrades, webhook...

Learn More 0 0Jan 5

Why Your @Async Method Ignores @Transactional (And Leaks Internal Errors)

Production bug report: "Why does the webhook error say 'Executing an update/delete query'?" That's a...

Learn More 0 0Jan 4

Why Auth0 email_verified Was Missing from My Access Token (And How to Fix It)

Spent an hour debugging why verified users were getting blocked. The culprit? Auth0 doesn't include...

Learn More 0 0Jan 3

Follow-up: Cloudflare Bot Fight Mode Breaks Zapier OAuth (And How to Fix It)

This is a follow-up to my previous article on 5 Hard Lessons from Implementing Zapier OAuth in Spring...

Learn More 0 0Jan 1

5 Hard Lessons from Implementing Zapier OAuth in Spring Boot

Three days. That's how long it took to get a "simple" OAuth integration working with Zapier. The docs...

Learn More 0 0Jan 1

I Built a URL Shortener Because Bitly Made Me Angry (And Other Bad Reasons to Start a SaaS)

A senior dev once told me: "Every side project is born from spite." He was right. 🙃 The...

Learn More 0 0Dec 30 '25

Async vs Sync Audit Logging: When to Use Which

When building audit logging for your application, one of the first decisions is whether to log...

Learn More 0 0Dec 30 '25

Stripe Webhooks Return Empty Objects: The API Version Mismatch Fix

Your Stripe webhook handler suddenly returns null objects. No errors. No warnings. Just... nothing....

Learn More 0 0Dec 30 '25

My AI Assistant Bypassed My Git Commit Blocker

I set up hooks to prevent Claude Code from committing without my approval. It bypassed them using git...

Learn More 2 4Dec 28 '25

Why I'm Building Yet Another URL Shortener in 2025 (And Why It's Not Crazy)

"The URL shortener market is saturated." I've heard this a hundred times. Bitly, TinyURL, Rebrandly,...

Learn More 0 0Dec 27 '25