Joshua Young
@joshuay03.bsky.social
130 followers 140 following 36 posts
Software Engineer at Buildkite, Rubyist, Rails Issues team member, and OSS contributor.
Posts Media Videos Starter Packs
joshuay03.bsky.social
Was it the colonoscopy room?
joshuay03.bsky.social
I’ve added support for distributed deployments: github.com/joshuay03/di...

Couple of ideas to follow up on:
- Profile dashboard
- Profile comparisons
joshuay03.bsky.social
This is from a Datadog APM notebook I used to monitor the impact.
joshuay03.bsky.social
Haha yep, I have to remind myself from time to time as well.
joshuay03.bsky.social
Yes, at the very end of a before_fork—after doing any necessary closing of connections, shutting down threads, etc.
joshuay03.bsky.social
Satisfying memory and CPU improvements after enabling Puma preloading + Process.warmup on one of Buildkite's services (our agent shard). Just rolled this out to all services - keen to see the broader impact!
joshuay03.bsky.social
It probably hasn’t been released yet. I would first check if the change has been back-ported to the `8-0-stable` branch, and then whether it was actually included in a release. If not, and it’s already on the branch, it’ll probably be released in a 8.0.x at some point, else 8.1.x.
joshuay03.bsky.social
What a run! Hope you enjoy some well deserved time off!
joshuay03.bsky.social
Yes, just 3-12 bytes:
- github.com/puma/puma/bl...
- github.com/puma/puma/bl...

Good point, mmap + polling + small messages is probably less efficient than using pipes in this case. I'm still going to give it a go to scratch that itch 😊
joshuay03.bsky.social
I’m curious how Puma would perform with mmap instead of pipes, which it relies on heavily for IPC in cluster mode: github.com/puma/puma/bl....
joshuay03.bsky.social
I wrote (or rewrote) some gems to get better at Ruby C extensions and learn about these topics (CAS and mmap):
- github.com/joshuay03/at...
- github.com/joshuay03/mm...
joshuay03.bsky.social
I'm curious about this too. With YJIT in maintenance mode, bug fixes, UX improvements, etc., are probably welcome (a colleague recently found and fixed one). But with ZJIT being greenfield WIP, I'm not so sure. Completely understandable if that's the case though.
Is there any point hacking on ZJIT or YJIT if I’m not a Shopify employee?
#ruby
joshuay03.bsky.social
Great talk! Though my favorite is still the one you gave at RailsConf 2022.

As a noob OSS contributor and maintainer, I’ve learned a lot from your talks about the "duties" and "responsibilities" of both sides in OSS interactions—I’m trying to apply those principles in my own work as well.
Reposted by Joshua Young
vipulnsward.com
#RubyKaigi late night with #RubyFriends !
joshuay03.bsky.social
It's not perfect but it does the job! Please let me know how you go if you give it a whirl.

So far I've tried it on three Rails monoliths of decent scale (including Buildkite's), and it gives me everything I need to profile requests in a multithreaded development environment - both Ruby and IO.
joshuay03.bsky.social
With Dial, Vernier does all the heavy lifting, and viewing a request profile is just a click away. The hook into AS notifications is simple yet powerful, giving you a useful timeline of the events that matter.

I've included N+1 detection and VM stat diffs to complement these, open to more ideas.
joshuay03.bsky.social
Announcing Dial, a Rails application profiler: github.com/joshuay03/dial

I've longed for a free tool that provides Datadog-like profiles, with accurate GVL and GC activity. Thanks to @jhawthorn.com's amazing work on Vernier, all I needed to do was integrate it with Rails and let it do its thing.
GitHub - joshuay03/dial: A modern profiler for your Rails application
A modern profiler for your Rails application. Contribute to joshuay03/dial development by creating an account on GitHub.
github.com
joshuay03.bsky.social
FYI the year on the post is 2022.