Charles Oliver Nutter
JVM guy, JRuby guy. Champion of Java and Hero of Ruby. I depend on sponsors and donations to keep JRuby work going at https://github.com/sponsors/headius
Good news! I have been added to the RubyConf 2026 schedule to present JRuby and all the ways it lets you use Ruby when CRuby doesn't fit! I'm glad that the new @rubycentral@ruby.social values community and understands the importance of JRuby. Twenty years of JRuby...don't miss this talk!
The more I see pull requests from LLMs and experiment with it myself the more convinced I am that it produces just about the worst code I've ever seen. Not just bad on style, but inefficient, often incorrect, and usually the wrong approach. It "works" in the loosest sense of the word, which tricks people into accepting it.
Lots of chatter about how software development was never about the code, it was about delivering solutions. But that misses the point. Good software design is about delivering *well-designed* solutions that can evolve and adapt. That takes time, not velocity.
Exciting demonstration of how fast JRuby can really be when you sweep away some of the metaprogramming layers of a typical Rails application... even when it already handles Rails HTML requests 2x faster than CRuby! Looking forward to seeing more about Roundhouse.
This year marks the 20th anniversary of my work on JRuby! I'm looking forward to sharing that story and talking about the future with folks around the world. Being able to speak at @RubyConf and @RailsWorld would be a fitting way to celebrate 20 years. I hope I'm accepted. 🤞
"I didn't do this thing because it was easy... I did it because I thought it would be easy." - Radan Skorić at RubyConf Austria 😂
While reviewing some LLM-heavy PRs recently I realized where my concerns lie: code written by humans is intentional and code written by an LLM is incidental. I can't easily ask the submitter's LLM context why it made certain changes and whether they are actually spec-derived.
githubstatus.com has overtaken github.com/ in my local browser as the most frequent site I visit after typing "git..."
SHOCKER! For a simple piece of code like "Array.new(10_000_000) {Object.new}", JRuby 10.1 with JDK 26 and compact object headers uses LESS REAL MEMORY than CRuby 4.0. That's just crazy. Real parallel scaling AND lower memory use?!
In about an hour I'll do my first solo JRuby workshop at RubyConf Austria! I've used this opportunity to start assembling a complete JRuby tutorial, and I'd love to include your ideas.
Check it out: https://github.com/headius/tutorial
After Red Hat / IBM and I parted ways, I eventually sold off all of my employee stock purchases... Except for one share, which I had reissued as a physical certificate. It hangs on my office wall, and every quarter I get a dollar and change in dividends.
I keep hearing how AI will make software so easy to write and yet Gmail still hasn't evolved beyond the mid 2010s.
Here's a use of AI I can get behind: adding JRuby support for native Ruby libraries using a combination of Chicory WASM runtime for JVM and JRuby's JVM integration!
The RBS library (static type specs for Ruby) uses a C ext on CRuby, but with this PR it now works on JRuby using WASM. JRuby support could really expand if this pattern takes off!
JRuby's support for Ruby 4.0 has been merged, only 2 months after the CRuby release! Just a handful of tests were excluded... 99% of 4.0 features are ready for JRuby 10.1. I'll spend the next few weeks on optimization experiments and stabilization.
TFW you delete almost 1000 deprecated methods, fields, and classes that have accumulated over the past 20 years. Oldest one deprecated in JRuby 1.1.2, released back in 2008.
I'm sure we will find third-party libs using some of these, but we'll never know until we delete them.
This year marks the 20th anniversary of full-time development on JRuby. We have thousands of users all over the world and depend on support customers to fund my work. We can scale apps to great levels and are keeping up with Ruby and Rails compatibility.
Meanwhile, both of my proposals for #RubyConf were rejected by @rubycentral@ruby.social.
Do with that what you will.
I am excited and honored to be the keynote speaker for day 2 of #RubyKaigi 2026! My talk will explore 20 years of JRuby development, show how JRuby and CRuby have grown up together, and provide a hopeful look forward to the future of Ruby. It's been an amazing ride! 🤩
Holding my breath to see how deeply the Oracle layoffs cut into the Java team. This is a really bad time to undercut critical infrastructure like the JDK. AI isn't replacing developers, it's just killing them off and leaving everything broken. It's all going to collapse soon.
And it's live! I'll show you the latest and greatest use cases for using JRuby with *real world* examples at RubyConf 2026 in Las Vegas, July 14 at 3:30PM! Tell your friends!
https://rubyconf.org/schedule/
Ten years ago I thought live coding interviews were absurd. Now they might be the only hope for preserving a strong developer community. Anything you choose to have an AI do for you, you damn well better be able to understand and explain yourself.
So frustrating watching the Ruby community reinvent what JRuby and the JVM already do.
Why don't they just use JRuby? Because we don't support the C extension API.
Now they are realizing they can't do what JVM does and also support C extensions. 🤦
Seriously... just use JRuby!
My pre-breakfast project: adding FreeBSD and OpenBSD to JRuby's CI. FreeBSD largely works, but some specs fail that maybe never worked on FreeBSD to begin with. The OpenBSD image I'm using doesn't have JDK 21 in ports. It's a start... feel free to assist!
Major breakthrough tonight! After several back-and-forth weeks getting the Prism Ruby parser hooked up to the Chicory WASM runtime (AOT compiled to JVM bytecode), I now have a local version of the gem that uses *zero* native libraries. This will allow Prism to work anywhere JRuby does!
Today's AI test: see if Copilot can fix a networking test that sometimes times out. Ran for 5 minutes, changed two InetSocketAddress constructors to use getLoopbackAddress even though the old forms called anyLocalAddress. Fail.
The actual fix was to increase the timeout due to slow GHA runners.
It is a bit ironic that many of the same folks who demanded strict static typing and who refused to even consider using dynamically-typed languages are now advocating verifying the results of agentic coding with nothing more than unit tests and specifications. So the result *is* actually all you care about?
JRuby currently has no official ActiveRecord support for Rails 8, but one of our users discovered that a build from master works right now! It will need some cleaning up, but we'll be caught up with Rails compatibility very soon. Rails 8 plus JRuby 10.1 will be a game changer.
JRuby 10.1 with Ruby 4.0 support is now the master branch and it's GREEN! 10.1 snapshots are already in the Sonatype snapshots repo and as "jruby-head" for Ruby installers and the setup-ruby GHA action. Docker Hub dev images will be available soon. Get in there and test it out!
https://www.jruby.org/nightly
Public constructors continue to be the worst long-term choice when designing a Java API. They forever bind you to a single specific way to instantiate and initialize. Prefer simple factory methods (e.g. Ruby's Class#new) that can be reimplemented and overridden.
I just spent two days locked in mortal combat with an AI coding agent that had convinced a user that my analysis of and fix for a bug was incorrect. It provided clear, convincing descriptions of the problem and how its "obvious fix" was superior to mine.
It turned out to be completely wrong.
Your AI coding agent is *lying to you*. Beware.
Just added JDK 26 to JRuby's CI matrix. Green with no changes necessary. 👍
Elden Ring has truly ruined all other video games for me.
I could easily take Ruby with full static typing via RBS and compile it to fast static JVM code. Numeric algorithms as fast as optimized C code. I've done something similar before... it would be like Mirah but with dynamic invocation. It's just a matter of time and resources.
I have need for a Ruby-based CMS for managing a company website. What's your recommendation for something modern, clean, and customizable without requiring it? Bonus points if I can run it on JRuby (but if not, I'll make that a project). Willing to collab!
I loathe April Fool's Day. The only news I want to be an April Fool's prank is the winter storm warning for Minnesota this evening.
In the past hour, I've been linked to two independent studies that show Ruby is among the best languages for AI coding tools, both in token count and speed of implementation. In both cases it was better than Python or JavaScript by a comfortable margin.
Periodic reminder that I do most of my short-form posting to X, Bluesky, and Mastodon simultaneously. Follow me on the other services if you prefer.
X: https://x.com/headius
Bluesky: https://bsky.app/profile/headius.bsky.social
Mastodon: @headius@mastodon.social
Starting to look like we need an informal JRuby meetup in Austin for RBQ! I'll have a chat with the the decision makers and try to put something together. Let me know if you'll be there and interested!