Sign in

Adam McCrea

@adamlogic.com
2.8K followers 62 following 218 posts

I spend my days building @judoscale.com to help developers optimize their web hosting. Follow me to hear about... 💎 Ruby on Rails 🚀 Heroku & PaaS 💸 Independent SaaS Also on LinkedIn: www.linkedin.com/in/adamlogic

PostsRepliesMedia
Adam McCrea @adamlogic.com · 13/05/2026
Render made it SO EASY to connect logs and metrics to a third-party observability tool. Railway, as far as I can tell, doesn't support either. 😞 What am I missing?
000
Adam McCrea @adamlogic.com · 04/05/2026
Render might not be a great option for high-traffic apps using a separate hosted DB. (This is from our own prod app)
240
Adam McCrea @adamlogic.com · 06/04/2026
We REALLY want to know what's going on at Heroku ...so we wrote them a letter 🤷‍♂️
140
Adam McCrea @adamlogic.com · 23/03/2026
Heroku is doubling down on the "sustaining engineering" language and it really bothers me. For most devs, "sustaining engineering" == "maintenance mode" If they don't want customers to think they're in maintenance mode, they need clearer language.
150
Adam McCrea @adamlogic.com · 18/02/2026
Thoughts on env vars as I spend some time with Fly... I actually like that Fly separates env vars and secrets as distinct concepts. Confused me at first, but it makes sense. Secrets get extra protection, env vars are for config. Good semantic separation.
110
Adam McCrea @adamlogic.com · 18/02/2026
I love how Northflank's pricing page lets you choose the timeframe for the metered pricing. All metered pricing should have this.
000
Adam McCrea @adamlogic.com · 16/02/2026
I just updated our PaaS Pricing Comparison Calculator: - Added Amazon ECS Fargate - Updated pricing for Railway - Factored CPU time-slicing for Fly shared machines Heroku still stands out as the most expensive, but the others are very competitive!
120
Adam McCrea @adamlogic.com · 03/11/2025
On @searls.bsky.social latest podcast he mentioned "Heroku" and "price", so I can't help but respond. I made the post public since I think it's a really useful pattern. tldr: Got a high-memory job that pushes you to perf dynos? Isolate it and scale to zero.
121
Adam McCrea @adamlogic.com · 15/09/2025
Nearly 10 years (!!) of autoscaling, some patterns never change: noisy neighbors, too many queues, scaling workers to zero (and saving 💰), and the chaos of downscaling too far. Stability is boring, repeatable choices. Here's what we've learned 👉 judoscale.com/blog/autosc...
051
Adam McCrea @adamlogic.com · 14/07/2025
If I was responsible enough to do any sort of ROI calculation, this never would have happened. Instead, we went all-in on RailsConf with 15 homemade videos and a custom local-only app to run our booth. I'd do it all over again.
160
Adam McCrea @adamlogic.com · 10/07/2025
As requested by absolutely no one, a supercut of every kazoo clip we made for #railsconf2025
2353
Adam McCrea @adamlogic.com · 09/07/2025
Really hope we don’t get kicked out of the last #railsconf for bringing kazoos 🎶
020
Adam McCrea @adamlogic.com · 08/07/2025
Visit our booth at #railsconf to get your kazoo! Watching us make fools of ourselves is just a bonus.
020
Adam McCrea @adamlogic.com · 07/07/2025
Who’s ready to party? #railsconf #kazoos
040
Adam McCrea @adamlogic.com · 04/07/2025
If it’s not at least a little bit cringe, we didn’t go far enough. #railsconf #kazoos #marketing
010
Adam McCrea @adamlogic.com · 03/07/2025
Marketing technique #77: Humiliate yourself for attention. #railsconf #kazoos
020
Adam McCrea @adamlogic.com · 02/07/2025
Y’all this is only the beginning. Buckle up! #railsconf #kazoos
030
Adam McCrea @adamlogic.com · 01/07/2025
Most autoscalers are reactive—they respond to traffic after it spikes. That’s usually fine… until it’s not. If your app gets hit with big surges of traffic all at once, even the fastest queue-time autoscaler might not spin up capacity in time to avoid slowdowns or timeouts.
110
Adam McCrea @adamlogic.com · 01/07/2025
One week until #railsconf! The whole Judoscale team will be there with... kazoos?
080
Adam McCrea @adamlogic.com · 29/04/2025
Python task queue pro-tip: Autoscale based on queue latency, not CPU! Your task queue can back up without CPU spikes, leaving you in the dark. Check out Jeff's full Celery & RQ comparison here: judoscale.com/blog/choose...
010
Adam McCrea @adamlogic.com · 29/04/2025
Choosing a Python task queue? Jeff Morhous compared Celery vs RQ: 🧠 Celery: Feature-rich but complex 🚀 RQ: Simple & easy to deploy Jeff's advice: Most apps do fine with RQ until they need more horsepower. Then consider making the switch to Celery.
110
Adam McCrea @adamlogic.com · 22/04/2025
This behavior is confusing at first, but it's actually super cool once you wrangle it. And with autoscaling in place, we don't really need to worry about it. New machines are being created with fresh burst balances when needed, spreading the load allowing balances to rebuild.
010
Adam McCrea @adamlogic.com · 22/04/2025
But why do they perform so well at first, only to fall apart after a bit? It's the bursting! Shared machines have a "burst balance" where they can use 100% CPU. Once the balance is depleted, CPU is throttled to 1/16.
110
Adam McCrea @adamlogic.com · 22/04/2025
I finally answered my questions about shared CPUs on Fly.io: - How are they so cheap? - Why do I need so many of them? - Why does perf tank after 10 minutes? Turns out it's well-documented: "shared" machines only get 1/16 of each CPU! fly.io/docs/machin...
110
Adam McCrea @adamlogic.com · 21/04/2025
⚠️ It's a mistake to ignore these configs. The defaults are NOT what you want. EXAMPLE: A 4-process, single-threaded web server should use a hard limit of 4 since that's the max concurrent requests. A soft limit of 1-2 would help route requests to less busy machines.
100
Adam McCrea @adamlogic.com · 21/04/2025
Last week I dug into HTTP routing behavior on Fly.io, and it's so cool! Unlike random routing on platforms like Heroku, Fly can intelligently route requests to machines based on a load. Here are the configs you need to know...
251
Adam McCrea @adamlogic.com · 17/04/2025
If you have more than one worker process sitting idle while the job queue is empty, you're throwing away money. And for queues with an SLO > 30 seconds, that number drops to zero.
053
Adam McCrea @adamlogic.com · 16/04/2025
"Does Rails 8 truly make platforms a thing of the past? And can small to medium-sized teams really save money by self-hosting?" Preech it, Jeff! From the Honeybadger blog: www.honeybadger.io/blog/rails-...
240
Adam McCrea @adamlogic.com · 16/04/2025
Feeling very thankful today as Carlos Antonio and I celebrate his one year anniversary at Judoscale. 🥳 Carlos helps me level-up as a developer and feel more relaxed and confident as a founder. And with him Judoscale is a better product than ever. Thanks, Carlos! 🥂
030
Adam McCrea @adamlogic.com · 09/04/2025
Related: Jon Sully's similar guide as the final part of his 3-part propshaft series judoscale.com/blog/propsh...
010
Adam McCrea @adamlogic.com · 09/04/2025
I love this deep dive into importmap and propshaft from Radan Skorić We use both at Judoscale, and even though each of these are simple in isolation, it's crucial to understand how they work together. radanskoric.com/articles/ra...
162
Adam McCrea @adamlogic.com · 08/04/2025
In this example, 5_sec_worker is always running. The others autoscale down to zero, and scale up based on their SLO. Each queue is isolated, meaning one queue can't starve another. Simple, safe, efficient.
010
Adam McCrea @adamlogic.com · 08/04/2025
"One queue per worker" is the way. Sidekiq, Solid Queue, doesn't matter. In other words, each queue should have a dedicated worker process. But isn't that wasteful?? Nope. You autoscale them down to zero when they’re idle. They’ll start back up when jobs are enqueued.
150
Adam McCrea @adamlogic.com · 07/04/2025
I've really been into Slack "canvases" lately. Here's how we use them to track & plan our content publishing calendar as a small team. It's just a simple doc with a permanent tab in our #marketing channel. No need for a full calendar in Notion or anything like that. KISS
020
Adam McCrea @adamlogic.com · 04/04/2025
Our sleuthing continues... it looks like something changed on July 16, 2021... but no associated changelog entry, so no idea what that change was.
000
Adam McCrea @adamlogic.com · 19/03/2025
Exciting to see autoscaling in action for our latest integration with Fly.io! (because CPU is a poor metric for queue capacity)
Screenshot of autoscaling Fly.io worker machines based on job queue latency
0100
Adam McCrea @adamlogic.com · 18/03/2025
Help me fix our pricing page! I've had multiple people tell me our "freemium" plan is not clear. Like, they didn't even realize we HAD a free plan. I can see a couple issues, but what else? How can I make it clear??
331
Adam McCrea @adamlogic.com · 11/03/2025
I'm so excited to share the tool I've been working on for the past month! Do you know how much it would cost to host YOUR app across Heroku, Render, Fly, and Railway? Now you can compare costs side-by-side. judoscale.com/tools/paas-...
74310
Adam McCrea @adamlogic.com · 03/03/2025
📣 New Judoscale feature We've expanded your autoscaling and queue time history from the past day to the past week!
041
Adam McCrea @adamlogic.com · 28/02/2025
We have a winner in our Sin City Ruby giveaway! Congrats Matt, and thanks @jwright.bsky.social for playing.
131
Adam McCrea @adamlogic.com · 10/02/2025
Come hang with me at Sin City Ruby in April! We're giving away a free ticket INCLUDING HOTEL!! You just need to get yourself there. 😁 @jasonswett.bsky.social puts on an amazing show (so I've heard), and Judoscale is excited to be a sponsor. Details here: judoscale.com/blog/sin-cit...
0147
Adam McCrea @adamlogic.com · 15/01/2025
It looks like Redis Cloud doesn't even publish their pricing anymore. Am I missing something? If not, that's very disappointing.
110
Adam McCrea @adamlogic.com · 14/01/2025
And the theme song has already been written.
010
Adam McCrea @adamlogic.com · 10/01/2025
Working on some new diagrams for one of our guides. Visuals like this are so important to effectively convey techincal concepts. Sure, they take time (usually more time thinking than actual drawing), but they're SO WORTH IT! 💅
140
Adam McCrea @adamlogic.com · 03/01/2025
Getting R14 errors with Rails on Heroku? Here's a quick win that takes 2 minutes to implement: Add the Jemalloc buildpack to your app and set JEMALLOC_ENABLED=true. That's it! We've had huge memory savings with zero downside. More in Jon Sully's article: judoscale.com/blog/rails-...
1173
Adam McCrea @adamlogic.com · 02/01/2025
Ever tried to "save photo" from Giphy and got WEBP instead of GIF? Here's how I do it. First, click "share" and choose the size you want. Then copy & paste that URL into a new tab (this part is key!). THEN, you can right click and "save photo" and you'll get the actual GIF.
171
Adam McCrea @adamlogic.com · 31/12/2024
We've been catching up our dependencies this month. Can you spot when we upgraded Postgres? 😲 We're on Timescale Cloud, upgraded from PG 13 to 17 (yeah, I know... 🤦‍♂️) CPU is way down, and our slowest query is down from 6s to 1s. Keep your dependencies up to date, people!!
1111
Adam McCrea @adamlogic.com · 30/12/2024
Question for the Ruby gem maintainers out there Do you commit your Gemfile.lock?... We do not, and it's so frustrating when CI fails because of a dependency update and NO changes in our code. Especially when it's been a month and LOTS of dependencies of changed. 😩
641
Adam McCrea @adamlogic.com · 20/12/2024
BONUS: Do you have multiple worker processes targeting different queues? Make sure you can tweak the concurrency of each process independently! But on Heroku you can't override an env var for a single process. The trick is to set it in the Procfile command itself.
020
Adam McCrea @adamlogic.com · 19/12/2024
Finally upgraded to Sidekiq 7. Can you spot it in this memory chart? Your eyes do not deceive you. It cut our memory usage IN HALF! I guess I can remove that "investigate high worker memory" issue from our backlog. 🥳
2142