Charles Oliver Nutter
headius@mastodon.social
<p>JVM guy, JRuby guy. Champion of Java and Hero of Ruby. I depend on sponsors and donations to keep JRuby work going at <a href="https://github.com/sponsors/headius" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible">https://</span><span class="">github.com/sponsors/headius</span><span class="invisible"></span></a></p>
Posts
-
Post #3680621
In about an hour I&#39;ll do my first solo JRuby workshop at RubyConf Austria! I&#39;ve used this opportunity to start assembling a complete JRuby tutorial, and I&#39;d love to include your ideas. Check it out: https://github.com/headius/tutorial
-
Post #3680620
&quot;I didn&#39;t do this thing because it was easy... I did it because I thought it would be easy.&quot; - Radan Skorić at RubyConf Austria 😂
-
Post #3680619
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&#39;t fit! I&#39;m glad that the new @rubycentral values community and understands the importance of JRuby. Twenty years of JRuby...don&#39;t miss this talk!
-
Post #3680618
RE: https://mastodon.social/@headius/116727089353126448 And it&#39;s live! I&#39;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/
-
Post #3680617
RE: https://ruby.social/@samruby/116731054355649047 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.
-
Post #3680616
Today&#39;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.
-
Post #3680615
githubstatus.com has overtaken github.com/&lt;anything&gt; in my local browser as the most frequent site I visit after typing &quot;git...&quot;
-
Post #3680614
Here&#39;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&#39;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! https://github.com/ruby/rbs/pull/2998
-
Post #3680613
I keep hearing how AI will make software so easy to write and yet Gmail still hasn&#39;t evolved beyond the mid 2010s.
-
Post #3680612
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&#39;ve ever seen. Not just bad on style, but inefficient, often incorrect, and usually the wrong approach. It &quot;works&quot; in the loosest sense of the word, which tricks people into accepting it.
-
Post #2101153
My pre-breakfast project: adding FreeBSD and OpenBSD to JRuby&#39;s CI. FreeBSD largely works, but some specs fail that maybe never worked on FreeBSD to begin with. The OpenBSD image I&#39;m using doesn&#39;t have JDK 21 in ports. It&#39;s a start... feel free to assist! https://github.com/jruby/jruby/pull/9419
-
Post #2053447
I figured out why I don&#39;t like Ruby&#39;s new Ractor concept: it forces users to work around CRuby deficiencies. To parallelize code with Ractor, users must make all passed object graphs &quot;shareable&quot; even if those objects would otherwise be safe to parallelize with Threads. It feels un-Ruby to me.
-
Post #1909678
So frustrating watching the Ruby community reinvent what JRuby and the JVM already do. Why don&#39;t they just use JRuby? Because we don&#39;t support the C extension API. Now they are realizing they can&#39;t do what JVM does and also support C extensions. 🤦 Seriously... just use JRuby!
-
Post #1715488
There's a disturbing trend of developers I've known for years now suddenly being unable to discuss even basic aspects of software development. They have become so dependent on LLMs, they can't even describe how to design a system anymore. Feels like losing friends to dementia. 😢
-
Post #1208243
SHOCKER! For a simple piece of code like &quot;Array.new(10_000_000) {Object.new}&quot;, JRuby 10.1 with JDK 26 and compact object headers uses LESS REAL MEMORY than CRuby 4.0. That&#39;s just crazy. Real parallel scaling AND lower memory use?!
-
Post #1085010
New post: JRuby and JDK 25: Startup Time with AOTCache Let&#39;s take a look at JRuby&#39;s startup time journey, all the way up to using JDK 25&#39;s AOTCache and Project Leyden features coming to a JDK near you soon. https://blog.headius.com/2025/09/jruby-jdk25-startup-time-with-aotcache.html
-
Post #1085009
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! https://www.reddit.com/r/ruby/comments/1nr630x/jruby_and_leyden_even_better_startup/
-
Post #1085006
New post: &quot;Packaging Ruby Apps with Warbler: Executable JAR Files&quot; Warbler is the JRuby ecosystem’s tool for packaging up Ruby apps with all dependencies in a single deployable file. We’ve just released an update, so let’s explore how to use Warbler to create all-in-one packaged Ruby apps! https://blog.headius.com/2025/10/packaging-ruby-apps-with-warbler-jar-files.html
-
Post #1085005
New post: Warbled Sidekiq: Zero-install Executable for JVM In my previous post, I showed how to use Warbler to package a simple image-processing tool as an executable jar. This post will demonstrate how to “warble” a larger project: the Sidekiq background job server! https://blog.headius.com/2025/10/warbled-sidekiq.html
-
Post #974201
Excellent talk by Daniel Colson about the Ruby regex engine (&quot;Onigmo&quot; in CRuby, &quot;JOni&quot; in JRuby) with a deep dive on how it parses, compiles, and executes an expression. These kinds of talks are my jam! Loving @RBCConf so far!
-
Post #974200
Just added JDK 26 to JRuby&#39;s CI matrix. Green with no changes necessary. 👍
-
Post #974199
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&#39;ve done something similar before... it would be like Mirah but with dynamic invocation. It&#39;s just a matter of time and resources.
-
Post #974198
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&#39;t easily ask the submitter&#39;s LLM context why it made certain changes and whether they are actually spec-derived.
-
Post #974197
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&#39;t replacing developers, it&#39;s just killing them off and leaving everything broken. It&#39;s all going to collapse soon. https://finance.yahoo.com/markets/stocks/articles/oracles-layoffs-raise-hard-ai-181543699.html?guccounter=1
-
Post #974196
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&#39;s been an amazing ride! 🤩
-
Post #974195
I loathe April Fool&#39;s Day. The only news I want to be an April Fool&#39;s prank is the winter storm warning for Minnesota this evening.
-
Post #974194
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?
-
Post #974193
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 &quot;obvious fix&quot; was superior to mine. It turned out to be completely wrong. Your AI coding agent is *lying to you*. Beware.
-
Post #954934
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. Do with that what you will.
-
Post #717197
This year marks the 20th anniversary of my work on JRuby! I&#39;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&#39;m accepted. 🤞