Charles Oliver Nutter's Avatar

Charles Oliver Nutter

@headius.bsky.social

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

1,644 Followers  |  71 Following  |  422 Posts  |  Joined: 12.05.2023  |  1.581

Latest posts by headius.bsky.social on Bluesky

It turns out the real Ractors were the Threads we made along the way

30.10.2025 21:18 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Reimplement UNIXSocket using JDK UNIX socket support Β· Issue #9040 Β· jruby/jruby As of JDK 16, UNIX sockets are natively supported on the JDK. We should migrate our existing UNIXSocket implementation from jnr-unixsocket to the JDK versions. This will provide more complete suppo...

Here's one for someone who wants to contribute to JRuby: reimplement UNIXSocket using the JDK support for UNIX sockets:

github.com/jruby/jruby/...

We currently use jnr-unixsocket, part of our native FFI backend, but it has never worked perfectly.

24.10.2025 21:05 β€” πŸ‘ 3    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Charles is giving you $30 Teens and parents can earn cash rewards with Greenlight’s referral program when friends sign up and pay their first month’s fee. Save, earn and invest together.

I'm pleasantly surprised at how easy it has been for my kids to funnel allowance into investments using GreenLight. Interesting educational conversations about stocks and funds and what makes a good investment.

Here's some code that gets you $30 back:

share.greenlight.com/91792639

23.10.2025 21:54 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Official JDK 25 support for JRuby 9.4 by headius Β· Pull Request #9030 Β· jruby/jruby CI reconfig and tweaks as necessary to pass tests on Java 25.

I expected at least a few patches to get JRuby 9.4 green on Java 25, but I was wrong. JRuby 9.4 officially supports Java 25 already, I guess!

github.com/jruby/jruby/...

23.10.2025 21:04 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
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…

New post: Warbled Sidekiq: Zero-install Executable for JVM

In my previous post, I showed how to use Warbler to package a simple tool as an executable jar. This post will demonstrate how to β€œwarble” a larger project: the Sidekiq background job server!

buff.ly/ZEasNiu

23.10.2025 17:01 β€” πŸ‘ 3    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0

I just used JRuby and Warbler to package up a well-known Ruby-based background job server as an executable jar and it "just works". Single-file deployment on any platform with a JVM and scaling far better than you can get with regular CRuby. JRuby is the future of enterprise Ruby.

22.10.2025 20:48 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

That's probably enough of Ractor working for an evening project. I get the idea of the API but the internal details (deep copying and ownership) are going to be really hard for any Ruby to implement efficiently. You could just use threads and frozen objects on JRuby and it would be fast right now. 🀷

22.10.2025 06:33 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Packaging Ruby Apps with Warbler: Executable JAR Files 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…

New post: "Packaging Ruby Apps with Warbler: Executable JAR Files"

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 use Warbler to create all-in-one packaged Ruby apps!

buff.ly/ZdXcCop

21.10.2025 17:42 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0

I need to run this again to see what might have changed but there is a guide from earlier that I wrote:
notepad.onghu.com/2021/jruby-w...

But I am delighted that some of the niggling issues might have now been resolved.

#JRuby #Ruby #Programming

18.10.2025 14:32 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Two steps to create a redistributable Ruby app in an executable jar Two steps to create a redistributable Ruby app in an executable jar - console.txt

Turn your Ruby gem into an all-in-one executable jar file with JRuby:

* gem install warbler
* warble
* java -jar mygem.jar ...

I forgot how easy this is. Blog post coming.

gist.github.com/headius/6739...

17.10.2025 18:02 β€” πŸ‘ 6    πŸ” 2    πŸ’¬ 0    πŸ“Œ 1
Preview
Ruby SDK using mruby Β· Issue #281 Β· pebble-dev/pebble-firmware Is there an existing issue for this? I have searched the existing issues Proposed feature request mruby provides a tiny, compilable, embeddable implementation of Ruby that would be perfect as part ...

Ruby on the re-launched Pebble watch? Let's make it happen @ericmigi.com!

buff.ly/na6SE6O

10.10.2025 22:53 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Ruby SDK using mruby Β· Issue #281 Β· pebble-dev/pebble-firmware Is there an existing issue for this? I have searched the existing issues Proposed feature request mruby provides a tiny, compilable, embeddable implementation of Ruby that would be perfect as part ...

I'm still waiting for my preorder Pebble Time 2 watch, but meanwhile I'm jealous that the only SDK support they'll ship is for Python and JS. Let's change that! mruby would be a perfect way to add Ruby to the PebbleOS SDK. Help me make it happen!

10.10.2025 22:28 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Updating Deprecations with Version Information Java 9 added the ability to mark a @Deprecated annotation with a β€œsince” version, so we figured it was worth updating JRuby.

New post: Updating Deprecations with Version Information

A short Ruby script and justification for updating all of JRuby's old `@Deprecated` annotations with "since" versions. Easy to run yourself with JBang. Hope it's useful to someone else out there!

blog.headius.com/2025/10/upda...

10.10.2025 22:12 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
headius's comment on "Ruby Central’s Attack on RubyGems" Explore this conversation and more from the ruby community

I posted this response twenty days ago at the beginning of the RubyGems drama. Timeline isn't clear but at least some of these possible theories seem to have been in play. Almost like people should let facts come out first. #RubyGems #security #lawyers

www.reddit.com/r/ruby/s/sC8...

10.10.2025 03:26 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
headius's comment on "Ruby Central’s Attack on RubyGems" Explore this conversation and more from the ruby community

www.reddit.com/r/ruby/s/sC8...

10.10.2025 03:22 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Probably using existing object header flags, but they'd need to be checked on every access I assume. No wonder it doesn't scale well yet. Probably easier to eliminate that overhead on JVM though.

09.10.2025 21:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Implementing the API shouldn't be difficult, but I'm not sure I'm clear on the complexities of object access. If something is immutable, it just gets passed back and forth, right? And there's a case where you can hand objects off or something? I've lost track of it over the years.

09.10.2025 20:54 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Ok, someone must have implemented Ruby's "Ractor" API in pure-Ruby on top of threads, right? I want to see what that looks like running with true parallelism on JRuby.

There's little demand for Ractors from JRuby folks because they already have shared-memory concurrency with few restrictions.

09.10.2025 20:09 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Add "since" to bare Deprecated annotations by headius Β· Pull Request #9027 Β· jruby/jruby The "since" attributes added here reflect the first release after each deprecation was added. We will use this to remove oldest deprecations (by some measure of oldest) in an upcoming rel...

Any reason why I shouldn't globally replace all bare "@Deprecated" annotations with "@Deprecated(since = 'first release after deprecation')"? Because I really want to do it. It won't be as easy to blame these edited lines, but now the release is right there.

09.10.2025 19:44 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image Post image

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'

08.10.2025 21:19 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
GitHub - docusealco/rllama: Ruby FFI bindings for llama.cpp to run open-source LLMs such as GPT-OSS, Qwen 3, Gemma 3, and Llama 3 locally with Ruby code. Ruby FFI bindings for llama.cpp to run open-source LLMs such as GPT-OSS, Qwen 3, Gemma 3, and Llama 3 locally with Ruby code. - docusealco/rllama

This is the Ruby/LLM future you want. Open source models, FFI instead of C extensions... just write Ruby (or JRuby).

rllama: Ruby FFI bindings for llama.cpp to run open-source LLMs such as GPT-OSS, Qwen 3, Gemma 3, and Llama 3 locally with Ruby code. github.com/docusealco/r...

07.10.2025 23:15 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

07.10.2025 21:39 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

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.

06.10.2025 21:57 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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. 😑

06.10.2025 18:09 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

06.10.2025 18:02 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

JDK 25 images are released!

02.10.2025 22:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Oh yeah good idea!

01.10.2025 18:01 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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. πŸ†

30.09.2025 15:03 β€” πŸ‘ 5    πŸ” 1    πŸ’¬ 2    πŸ“Œ 0

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."

29.09.2025 21:38 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
RubyGems.org | your community gem host 222,877,093,181

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!

29.09.2025 14:45 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@headius is following 20 prominent accounts