Ershad Kunnakkadan (@ershus) header
Ershad Kunnakkadan (@ershus) profile picture

Staff Engineer @Gumroad I help companies scale with AI, build faster, and cut infra costs. DM for consulting.

Dubai
Joined April 2009
Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)Photo by Ershad Kunnakkadan (@ershus)
Found two sneaky costs in @gumroad's AWS bill: 1. Since Rails 8.1, a worker in every preview app was stuck in an OOM-kill loop, burning CPU credits 2. Our Elasticsearch client logged every request and response body: half our log volume With cleanup: ~$1.4k/mo, ~$17k/yr saved
We recently migrated ~1B email analytics records at @gumroad from MongoDB to DynamoDB. Zero downtime. Query time: 861ms → 7ms Cost: $1,378 → $207/mo (~$14k/yr saved) The trick: single-table design with precomputed counters. A stats page is one read, not a count per email.
7
56
1,951
Canon abandoned my ~10-year-old LBP2900 printer on modern Macs. Claude compiled an open-source driver, inspected raw USB bytes, tracked down a one-line memory bug, fixed it, and got the printer working again. One of AI's best tricks: bringing old hardware back to life. Saved the next person some trouble: github.com/mounaiban/captdri…
2
1
19
581
We recently migrated ~1B email analytics records at @gumroad from MongoDB to DynamoDB. Zero downtime. Query time: 861ms → 7ms Cost: $1,378 → $207/mo (~$14k/yr saved) The trick: single-table design with precomputed counters. A stats page is one read, not a count per email.
Found a cost leak in @gumroad's CDN. It kept a copy of every static asset per seller domain, keyed on the Origin header, and an edge function patched CORS per request. Fixed the cache key, swapped the function for a free header rule. Hit rate 5% → 95%. ~$11k/year saved.
18
11
1
243
15,360
Found a cost leak in @gumroad's CDN. It kept a copy of every static asset per seller domain, keyed on the Origin header, and an edge function patched CORS per request. Fixed the cache key, swapped the function for a free header rule. Hit rate 5% → 95%. ~$11k/year saved.
Our video transcoder at @gumroad runs on Hetzner, so every video pulled from S3 was billed as internet egress: $935 last month. Now it pulls via a signed CloudFront URL. S3 to CloudFront is free, and our private CloudFront pricing is far cheaper. ~$860/month saved, ~$10k/year.
3
2
48
15,244
Our video transcoder at @gumroad runs on Hetzner, so every video pulled from S3 was billed as internet egress: $935 last month. Now it pulls via a signed CloudFront URL. S3 to CloudFront is free, and our private CloudFront pricing is far cheaper. ~$860/month saved, ~$10k/year.
We just moved all of @gumroad's Redis to Valkey and cut our ElastiCache bill by 69%: about $2.2k a month, or ~$27k a year. Valkey is a drop-in fork of Redis that AWS prices 20% lower, and our app needed no code changes. Right-sizing and reserved nodes did the rest.
29
26
5
575
66,658
We just moved all of @gumroad's Redis to Valkey and cut our ElastiCache bill by 69%: about $2.2k a month, or ~$27k a year. Valkey is a drop-in fork of Redis that AWS prices 20% lower, and our app needed no code changes. Right-sizing and reserved nodes did the rest.
Inspired by @dhh, we moved a high-traffic @gumroad endpoint from Rails to Go. It only checks an email webhook's signature and queues a job, yet ran our full Rails app on 12 servers. Go runs it on 3 smaller ones, in 11 MB of memory. 86% cheaper, saving about $14k a year.
8
9
2
174
44,957
Inspired by @dhh, we moved a high-traffic @gumroad endpoint from Rails to Go. It only checks an email webhook's signature and queues a job, yet ran our full Rails app on 12 servers. Go runs it on 3 smaller ones, in 11 MB of memory. 86% cheaper, saving about $14k a year.
Over the last two weeks, we cut about $8.4k a month (~$100k a year) from @gumroad's AWS bill. Several of the changes made things faster, not just cheaper. Here's what we changed. 🧵
24
39
9
554
57,017
Over the last two weeks, we cut about $8.4k a month (~$100k a year) from @gumroad's AWS bill. Several of the changes made things faster, not just cheaper. Here's what we changed. 🧵
11
9
3
105
41,280
Housekeeping CI agents now scale to zero when idle. We also retired infrastructure left behind by services we've sunset, like a Redis cluster and unused load balancers, and trimmed backups. Together: about $1.2k a month.
1
12
680
What worked for us: - Give everything ephemeral a lifetime: previews, images, CI agents - Autoscale on sustained signals, not spikes - Compress at the origin even behind a CDN - Fetch on demand instead of polling ~$8.4k a month saved so far. More to come.
16
620
Leaking production infrastructure write access to AI is what worries me most right now. Maybe it gets better tomorrow, but not today.
1
9
1,192
Ran Qwen3.6 35B A3B on an M4 Pro MacBook (48GB RAM) with Pi coding agent, ~35 tokens/sec with surprisingly strong accuracy. Local models keep getting better.
This is where we are right now. And i’m not gonna lie it feels pretty magical 🧚‍♀️ Qwen3.6 27B running inside of Pi coding agent via Llama.cpp on the MacBook Pro For non-trivial tasks on the @huggingface codebases, this feels very, very close to hitting the latest Opus in Claude Code, or whatever shiny monopolistic closed source API of the day is. In full airplane mode. Most people haven’t realized this yet. If you have, it means you have a huge headstart to what I call the second revolution of AI. Powerful local models for efficiency, security, privacy, sovereignty 🔥
11
1,212
Build with AI, but keep your edge sharp
The real big problem is not engineers who refuse to use AI. It is those who used to be excellent and are quietly getting lazier, weaker, and sloppier because of AI
3
666