Reposted by @nateberkopec.bsky.socialAaron Patterson @tenderlove.dev · 24/09/2026I think everyone should visit the Peace Museum in Hiroshima at least once in their life 3363
nateberkopec.bsky.social @nateberkopec.bsky.social · 12/09/2026narrator: neither would, in fact, happen in 2022 021
nateberkopec.bsky.social @nateberkopec.bsky.social · 10/09/2026I think what Zohran showed was that, if you have a political goal, the first thing is you have to be _effective_ and provide services _effectively_ through building capacity. currently, lefty OSS communities are extremely _ineffective_ in a way that the Omarchy steamroller is not. 040
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/09/2026NixOS' community is so incredibly disorganized and full of infighting and the DHH/omarchy steamroller is so sufficiently funded and enthusiastic that they could conceivably just hard fork it and in 5 years the omarchy fork of nix just "is" nix as we understand it 330
Reposted by @nateberkopec.bsky.socialJohn Nunemaker @johnnunemaker.com · 06/09/2026Another great reason to have a read replica AI can query is you can make informed data-driven decisions. And then share with the team via github issue comment or whatever. This image is an example of analyzing image upload dimensions to optimize for rendering. 141
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/08/2026lemur guy agrees with my testing take, now I know I'm on the right track! 100
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/08/2026LLM driven dev has completely changed my opinions on BDD 260
Reposted by @nateberkopec.bsky.socialDan Luu @danluu.com · 17/08/2026The benchmarkpocalypse: danluu.com/benchpocalyp... 5619
Reposted by @nateberkopec.bsky.socialhailey @hailey.at · 18/08/2026say what you want about ai but pre ai i wasn’t able to do database performance work while sitting on my balcony at 3pm in the sun drinking a claw 171715
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/06/2026was the mention of Stripe in the announcement blog post your work? 000
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/06/2026can't believe they've done this to you 100
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/04/2026mfw I live in a real civilized country 010
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/04/2026Puma 8.0 "Into The Arena" has been released! 1. Framework/lib authors can move threads into a special "high IO" pool 2. single/cluster DSL hooks for easier config 3. API for adjusting threadpool size at runtime (who would want to that? stay tuned...) 292
nateberkopec.bsky.social @nateberkopec.bsky.social · 03/04/2026Re: Axios - so I guess if you're an OSS maintainer, your threat model is now: "I may be targeted by a state-sponsored hacking group at any time." 161
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/03/2026It also ignored the mathematical reality of queueing theory: queue time decreases proportional to ~1/n, where n is the number of processes pulling from the queue. Increase that ratio! Load balancers like ALB cannot be as efficient as ~32+ processes `accept`ing the same socket 000
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/03/20261 proc per container was always a misunderstanding of the original principle, which was that each container should only do 1 thing. A preforking server still _does one thing_, it's just parallelizing across processes rather than threads or fibers. 120
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/03/2026When we're done here we're probably gonna save tens of thousands per month purely based on a config change. With preforking server designs (puma, unicorn, pitchfork), you want to run between 4 and 64 processes per container, as big as you can handle but still autoscale sensibly 120
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/03/20261 process per pod was a LIE that you were sold by BIG SRE and people who don't understand the oldhead technology of PRE-FORKING SERVERS. We went from 1 Puma proc per pod to 4 and HALVED RESPONSE TIMES and dropped queue time to ZERO, for the same CPU/memory alloc. 1133
nateberkopec.bsky.social @nateberkopec.bsky.social · 25/03/2026Has anyone applied an autoresearch loop (successfully or not) to a Ruby project outside of Shopify yet? I would like to cover it in my RubyKaigi talk. 011
nateberkopec.bsky.social @nateberkopec.bsky.social · 24/03/2026Why restrict to MacOS? I've been thinking that if I'm going to sandbox, might as well go full remote (or at least remote-capable). 130
nateberkopec.bsky.social @nateberkopec.bsky.social · 22/03/2026@simonwillison.net maybe you're used to this level of notability now, but I noticed Jensen Huang explicitly referencing the Lethal Trifecta a few times at GDC, although I noticed he said "it's fine as long as you only have two [legs of the trifecta]" 180
nateberkopec.bsky.social @nateberkopec.bsky.social · 21/03/2026I know you've worked mostly at big shops where threading isn't common, but in my client base over 10 years, so we're talking... around 100 apps or more? It's >80% sidekiq. I speak to my audience. 101
nateberkopec.bsky.social @nateberkopec.bsky.social · 21/03/2026I don't think so. LLMs already are good enough at understanding the semantic meaning of an integration test. 100
nateberkopec.bsky.social @nateberkopec.bsky.social · 20/03/2026Yeah most people don't have access to enterprise. If you can fork of course you should fork 👍 110
nateberkopec.bsky.social @nateberkopec.bsky.social · 19/03/2026The #1 most important performance work in almost any web app is converting full navigations into SPA/route changes/Turbo Drive clicks. You are converting a ~4 second experience into a 400ms experience every single time. Nothing else comes close. 050
nateberkopec.bsky.social @nateberkopec.bsky.social · 18/03/2026Super common mistake I see in Ruby setups: don't allocate more than 1 CPU core to background job containers. You're only running one process in there (usually) so there's no reason to allocate > 1 core. 170
nateberkopec.bsky.social @nateberkopec.bsky.social · 17/03/2026After ~9 months of experimentation (synthetic and in prod), I can say definitively that MALLOC_CONF has no measurable effect on any Ruby workload that I've seen. Don't bother. 030
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/03/2026That idea came from my book! nateberk.gumroad.com/l/sidekiqinp...nateberk.gumroad.comSidekiq in PracticeAre you using Sidekiq to process your background jobs, but struggling with it as your application scales? Sidekiq can scale to 5,000 jobs per second with just a little effort and knowledge: in Sidekiq... 111
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/03/202650% of what I'm doing at clients these days is addressing unclear expectations of what queue latencies are allowed to be in background work. Almost no one has the proper suite of alerts and observability, queues routinely ballooning without anyone realizing. 181
nateberkopec.bsky.social @nateberkopec.bsky.social · 13/03/2026It's pretty rare these days to be on a version this old, but if you're still running Ruby 3.1 in production: it's worth upgrading to 3.2+ purely to get YJIT. 171
nateberkopec.bsky.social @nateberkopec.bsky.social · 12/03/2026LCP is not a good top-level frontend metric to base your entire frontend perf efforts around _unless_ you are specifically targeting search rankings. LCP is not captured on route change/SPA nav or on Safari at all, which means ~50%+ of clicks go unmeasured. 000
nateberkopec.bsky.social @nateberkopec.bsky.social · 11/03/2026Datadog's continuous profiling product is now best-in-class. Took them a while but Ivo Anjo has really put in a ton of work here for Ruby and the profiles you get now are so, so good. Being able to see gc activity (as well as the reason!) for GC is so cool. 1101
nateberkopec.bsky.social @nateberkopec.bsky.social · 05/03/2026When people say "Claude is conscious", I always like to ask "which part?" 020
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/02/2026Seen in a Shopify project README. TIL RSpec is deprecated at Shopify. 4123
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/02/2026LLM slopcannons are putting pressure on top of already broken software dev team cultures. The problem isn't the slop generator, so much as your process was only handling low volumes of human-generated slop until now. 150
nateberkopec.bsky.social @nateberkopec.bsky.social · 25/02/2026A pattern I am seeing: "Generate a 10 question quiz on how this PR works to test my understanding." Do not allow merge until someone passes the quiz. Gusto did this years ago but with humans writing the questions for certain types of PRs. 171
nateberkopec.bsky.social @nateberkopec.bsky.social · 24/02/2026You are probably not using LLMs enough to generate non-code artifacts. "Review this PR and then generate an interactive HTML website to explain it. Turn this state machine into a mermaid diagram. Generate a 10,000 word deep research report on the state of the art of CSRF protection." 3100
nateberkopec.bsky.social @nateberkopec.bsky.social · 23/02/2026LLMs are (not _just_) autocomplete. They will tend to do MORE, tend to katamari. The dangers of shipping more code and never shipping less still apply. 040
nateberkopec.bsky.social @nateberkopec.bsky.social · 20/02/2026Your prior at this point needs to be "if LLMs are breaking my SDE lifecycle, the problem is the lifecycle or how we are using the LLM, not the capabilities of the model". You can make models generate anything now. The problem is how you move them through the latent space. 020
nateberkopec.bsky.social @nateberkopec.bsky.social · 19/02/2026The only code review agent I have ever seen be even remotely good is just Codex xhigh. All the review services (and I've seen at least a dozen at this point) suck so bad that I'm not sure how they make any money at all. 050
nateberkopec.bsky.social @nateberkopec.bsky.social · 18/02/2026When you've got a queue with a very tight SLO, you don't want to scale down too fast. You end up with a "sawtooth" or jagged container count. The "true" demand for containers is the red line here. In situations on <30 sec SLOs, you often want cooldowns in the >1hour range. 130
Reposted by @nateberkopec.bsky.socialJeremy Morrell @jeremymorrell.dev · 18/02/2026I’ve seen a number of home-grown Claude code orchestrators with built-in kanban… You’ve just been given access to a magical tool that can build anything you can imagine, and… kanban? 6461
nateberkopec.bsky.social @nateberkopec.bsky.social · 17/02/2026Even if not deployed single-node, it's helpful to use Little's Law to understand if you _could_ be. Avg CPU load = CPU time in seconds per req/job * req-per-sec. If that's below ~16, you could definitely run single-node. Why aren't you? No wrong answers, but have a good one. 020
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/02/2026I didn't really dig into it too carefully but pangram does seem to hold up pretty well in studies 010
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/02/2026Your proposal for RubyKaigi 2026 has been accepted. 1130
nateberkopec.bsky.social @nateberkopec.bsky.social · 06/02/2026not anymore. my license is probably still valid though... 020
nateberkopec.bsky.social @nateberkopec.bsky.social · 04/02/2026What's your sense: do we get different curve shapes for different evals? Or all the same curve shape, different y-intercept/slope? So far I think you have to say most evals correlate pretty strongly 110
nateberkopec.bsky.social @nateberkopec.bsky.social · 04/02/2026I think there's a problem about conceptualizing this as a single line when really what we care about is an x-dimensional space where particular types of human labor are each dimension 220