Charles Oliver Nutter
@headius.bsky.social
1.6K followers 69 following 400 posts
JRuby co-lead, Java champion, Ruby hero, JavaOne Rockstar, international traveler and speaker. Book me for your next event! I depend on your donations and sponsorships! https://github.com/sponsors/headius
Posts Media Videos Starter Packs
headius.bsky.social
Spring Boot restful app in a one-line command? Love that Ruby magic sometimes...

jruby -Ilib -rboing -e 'Boing::Rest.run("HelloApp") do; get_string def hello; "Hello from Boing!"; end; end'
headius.bsky.social
GenAI is a ponzi scheme. Larger and larger investments are necessary to fund new models with diminishing returns and higher costs to run. Reliability is approaching a mathematical maximum. AI companies keep raising prices and still bleeding cash. It's all teetering on the edge.
headius.bsky.social
I've been away from Windows as a daily driver for 25 years, and every time I come back I'm just amazed that things have actually gotten worse.
headius.bsky.social
Example: doing a complete wipe and reinstall, downloading Windows progress immediately jumps to 30%, and then sits there for 10 minutes before creeping up randomly 5% at a time. Reset progress zooms to 62% and sits there for 30 minutes. 😡
headius.bsky.social
Whenever I'm forced to use Windows again, I'm shocked both by how slow everything feels, and by how many useless progress bars and "this won't take long" messages I get while installing or updating software.
headius.bsky.social
JDK 25 images are released!
headius.bsky.social
JRuby 10 officially supports Java 25 and it's green in CI!

Of course, we've been testing with 25 locally for months and this required zero changes... but now it's official. 🏆
headius.bsky.social
My favorite result when searching for a bug fix is to come across my own bug reports from years ago. "Oh yeah, I ran into this before and completely forgot about it. Still not fixed."
headius.bsky.social
I'm preparing to launch a new and exciting Ruby gem for JRuby and thought of the perfect name. So I went to rubygems.org to check if it had been claimed. Bad news: it had. Good news: it was a one-off experiment of mine that nobody ever used. I can just repurpose it!
RubyGems.org | your community gem host
222,877,093,181
rubygems.org
headius.bsky.social
Of course, RubyLLM works great on JRuby! And then you also have access to a world of AI and ML tooling on the JVM like Langchain4J and official TensorFlow bindings. I'm glad to see communities like Ruby's working to compete with Python in the AI space.
From the ruby community on Reddit: Ruby AI: Interview with Carmine Paolino, Creator of RubyLLM
Explore this post and more from the ruby community
buff.ly
headius.bsky.social
And I need to check on my OCA status. If I signed it it was a long time ago. I want to contribute more directly in the next year... but I say that every year. 🤦
headius.bsky.social
The numbers in my latest post are holding nothing back (full JIT capabilities and heavy indy use) but they also don't run long enough to JIT much at the JRuby level. Future exploration will "force JIT" more code, caching it to disk for AOTCache. That will bring us closer to booting 100% native code.
headius.bsky.social
There's some interest in reducing the warmup curve for JRuby apps, but by far the biggest issue is the startup time of small command lines in the typical Ruby development workflow. AppCDS and AOTCache are on pace to eliminate most of the cold boot overhead, but there's still room for improvement.
headius.bsky.social
At the end of my post on JRuby and JDK 25 startup time features, I teased a bit of the unreleased improvements from Project Leyden. It turns out the latest commits improve startup time even more, so it seems worth posting a quick follow-up!

www.reddit.com/r/ruby/comme...
From the ruby community on Reddit: JRuby and Leyden: Even Better Startup
Posted by headius - 1 vote and 0 comments
www.reddit.com
headius.bsky.social
For sure! My main reason for focusing on 25 was to show users what they can get today by upgrading. I'm aware how active Leyden is and I have been checking in periodically to see how things are going. I'd love to get some JRuby use cases into a test pipeline for y'all.
headius.bsky.social
Always happy to collab! Pretty sure I'm still on the J9 slack, I will engage y'all there. In my head, JITServer ought to be able to match AOTCache but without loading a giant data file at boot. I'd like to understand why it is Linux only and also revisit CRIU. JRuby ships support for the Azul API.
headius.bsky.social
Boo, JITServer only available on Linux. I'll see what I can do with SCC.
headius.bsky.social
New record for `gem list` as well... 709ms!
headius.bsky.social
I'm going to do a follow-up post with @shipilev.bsky.social's patch and some Semeru experiments. Got a quick cheat sheet for SCC tuning to get maximum startup? CRIU is fun but very limited applicability. JITServer maybe helpful?
headius.bsky.social
OMG it makes a huge difference. Without even pinning to tier 1 ("dev" mode) we have a new record base startup of 361ms on my M4 MBA. I'm playing with some other tweaks and a longer training run now.
headius.bsky.social
I'll give it a shot! This stuff is very exciting! I also want to explore saving JRuby's JVM bytecode JIT output between runs. If it can load it fast we could skip all parsing and compilation phases and go straight to executing bytecode, or even native code, even for Ruby source code.
headius.bsky.social
I can give it a shot on the Linux machine I have here. Any reason I couldn't get similar results out of a macos build?
headius.bsky.social
I experimented with it several years ago, but I have not revisited since then. It would be a good follow-up to try it out!