Sign in

nateberkopec.bsky.social

@nateberkopec.bsky.social
1.7K followers 63 following 670 posts
PostsRepliesMedia
Reposted by @nateberkopec.bsky.social
Aaron Patterson @tenderlove.dev · 24/09/2026
I think everyone should visit the Peace Museum in Hiroshima at least once in their life
3353
nateberkopec.bsky.social @nateberkopec.bsky.social · 12/09/2026
narrator: neither would, in fact, happen in 2022
021
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/09/2026
NixOS' 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.social
John Nunemaker @johnnunemaker.com · 06/09/2026
Another 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.
Text-heavy image discussing production image size research and statistics.
141
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/08/2026
LLM driven dev has completely changed my opinions on BDD
260
Reposted by @nateberkopec.bsky.social
Dan Luu @danluu.com · 17/08/2026
The benchmarkpocalypse: danluu.com/benchpocalyp...
There's been a lot of talk about the vulnpocalypse, to which I don't have much to add because I'm not a security person, but I haven't seen much discussion on the closely related (and to be fair, less serious issue), the benchmarkpocalypse.

While it's become easier than ever to make serious performance gains, it's also become easier than ever to reward hack a benchmark and make fake performance gains. The former is probably happening quietly across many different companies, but the latter is something I see at least once a week nowadays. Someone will claim they optimized X and got some huge performance improvement over existing software but, when you look at it, what they did was make some optimization that improves benchmark performance without actually improving real-world performance. This is often some kind of "we re-wrote X in Rust"1 project or a new startup that's looking to either fundraise or sell something, but it happens on other kinds of projects as well2.

Rather than point to someone's bad claim, I'll point to FRE, this regex engine I had an agent build, which I could claim is the world's fastest regex engine because it beats the Rust regex crate at the fairly comprehensive rebar regex benchmark suite. But this was created by putting an agent in a loop for a month with instructions to not overfit to the benchmark but no real supervision. For the most part, getting an LLM to give you a good benchmark score is fairly easy, and this case was no different; it took a couple weaks to roughly match Rust regex crate performance and then another couple weeks to get to 1.4x faster3 on rebar. But, agents are wont to reward hack and ovefit unless you put serious guardrails in place to avoid that, which I didn't do in this case as an experiment.

To check for overfitting, I somewhat arbitrarily4 used the ripgrep benchmark corpus as a benchmark a holdout and instead of being 1.4x faster it was 10x slower on cases where the benchmark didn't take forever due to an alg…
5619
Reposted by @nateberkopec.bsky.social
hailey @hailey.at · 18/08/2026
say 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
171725
nateberkopec.bsky.social @nateberkopec.bsky.social · 09/04/2026
Puma 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/2026
Re: 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/2026
1 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/2026
Has 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 · 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 · 19/03/2026
The #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/2026
Super 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/2026
After ~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/2026
50% 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/2026
It'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/2026
LCP 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/2026
Datadog'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 · 27/02/2026
Seen in a Shopify project README. TIL RSpec is deprecated at Shopify.
4123
nateberkopec.bsky.social @nateberkopec.bsky.social · 26/02/2026
LLM 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/2026
A 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/2026
You 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/2026
LLMs 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/2026
Your 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/2026
The 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/2026
When 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.social
Jeremy Morrell @jeremymorrell.dev · 18/02/2026
I’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/2026
Even 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/2026
Your proposal for RubyKaigi 2026 has been accepted.
1130
nateberkopec.bsky.social @nateberkopec.bsky.social · 30/01/2026
In 2026, we're going to see coding models either expand or get rebranded into "tool use" or "computer use" models.
020
nateberkopec.bsky.social @nateberkopec.bsky.social · 29/01/2026
looks like a tiktok
010
nateberkopec.bsky.social @nateberkopec.bsky.social · 29/01/2026
LLMs do not meaningfully "refactor" at anything other than a junior engineering level. They can basically do some window dressing and move code around between files. True refactoring means creating new abstractions, which LLMs can't do because they can't form world-models.
3325
nateberkopec.bsky.social @nateberkopec.bsky.social · 28/01/2026
The biggest "stink" of LLM code in Ruby currently is how it writes loops like it's writing C. Set up lots of blank/empty variables, loop with each, update variables inside the loop. Use Enumerable! Matz gave us this gift for a reason!
061
Reposted by @nateberkopec.bsky.social
Ryan Cavanaugh @searyanc.dev · 27/01/2026
Getting tired of hearing "There are literally no use cases for LLMs" from people who think the only way to use an LLM is to type into chatgpt dot com, press enter, and hope for the best
101177
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/01/2026
I think a major wave of self-retirement is coming. A lot of people were already disillusioned with tech industry post-vibe-shift, those same people are also most likely to dislike LLMs for various reasons.
060
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/01/2026
The salary of the top 10% of designers and product people is going to 2x in 2026.
130
nateberkopec.bsky.social @nateberkopec.bsky.social · 27/01/2026
Thank you to everyone who replied to this. Now I'm following a bunch of people talking about their alchemy MCPs, which, honestly, was exactly the kind of interesting I was looking for from this userbase
060
Reposted by @nateberkopec.bsky.social
Justin Searls @searls.bsky.social · 27/01/2026
Tooling for coding agents is overly focused on scaling numerous parallel workers instead of ensuring correctness. That continues to be where all my time goes and is the real barrier to scaling up. (e.g., Why am I exploratory testing this UI when vision models could be doing it?)
3161
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/01/2026
Tell me why I shouldn't preorder a Pebble watch + ring _right now_.
330
nateberkopec.bsky.social @nateberkopec.bsky.social · 16/01/2026
Everyone on X is telling me that actually there's tons of interesting AI conversations happening here on Bluesky. Guess I need to retrain my algorithm because I'm not seeing anything.
19601
nateberkopec.bsky.social @nateberkopec.bsky.social · 15/01/2026
The greatest trick the devil ever pulled was to convince you that you needed a three-year reserved instance
030
nateberkopec.bsky.social @nateberkopec.bsky.social · 14/01/2026
Ruby was born a hobbyist's language. Written for a human to enjoy, to write, to delight in. Now, I get paid to write Markdown, not Ruby. I ride the LLM-Shoggoth. I don't read the Ruby it creates, Claude does. Ruby will die a hobbyist's language: written by humans, for fun.
150
Reposted by @nateberkopec.bsky.social
nateberkopec.bsky.social @nateberkopec.bsky.social · 13/01/2026
Ruby isn't dying, it is already dead. So is every other language. Rejoice, you have been liberated! You no longer write Ruby for The Man, but yourself! Reclaim the means of production as the means of amusement! Ruby was created to make you happy, not the machine. Wrest back your joy!
2283
nateberkopec.bsky.social @nateberkopec.bsky.social · 13/01/2026
Ruby isn't dying, it is already dead. So is every other language. Rejoice, you have been liberated! You no longer write Ruby for The Man, but yourself! Reclaim the means of production as the means of amusement! Ruby was created to make you happy, not the machine. Wrest back your joy!
2283
nateberkopec.bsky.social @nateberkopec.bsky.social · 13/01/2026
Literally everyone scaling on Postgres eventually hits SLRU cache issues. For that reason I am now saying PG17+ is a must-upgrade, as the changes around cache banking/SLRU configuration are your only real workarounds.
130
nateberkopec.bsky.social @nateberkopec.bsky.social · 06/01/2026
Looking for a designer for a small project (40-80h) this Q1. Please reach out if you or someone you know might have some spare cycles! Particularly interested in designers with a strong, unique (even weird/grating) visual style.
11102
nateberkopec.bsky.social @nateberkopec.bsky.social · 05/01/2026
I'm routinely asked about "automatic N+1 solving" libraries for Rails, which essentially try to manipulate `includes()` calls for you. I don't recommend them. IME, missing `includes` is only ~10% of the actual N+1s I see in the wild. And, includes() isn't always optimal!
161
nateberkopec.bsky.social @nateberkopec.bsky.social · 03/01/2026
Marco Roth on a generational run
1111
nateberkopec.bsky.social @nateberkopec.bsky.social · 24/12/2025
As you're considering your charitable giving this year, here's the two organizations I've given to consistently for the last 3 years: 1. Nova Ukraine - humanitarian aid to the people of Ukraine 2. GiveWell - incredibly well-researched poverty/disease intervention
080