John Hawthorn
@jhawthorn.com
Writing code for @Shopify, Rails, and Ruby. Previously @GitHub.
he/him | Victoria, BC | jhawthorn.com
he/him | Victoria, BC | jhawthorn.com
Pinned
John Hawthorn
@jhawthorn.com
· Dec 15
You're telling me a duck typed this code?
To the uninitiated, this is what every baseball game is like.
October 28, 2025 at 5:32 AM
To the uninitiated, this is what every baseball game is like.
I made it easier to search Ruby's docs www.johnhawthorn.com/2025/searchi...
Searching Ruby's documentation - John Hawthorn
The official Ruby docs are at https://docs.ruby-lang.org/en/. This
documentation (and any documentation built with rdoc 6.15.0 or greater) now can
be searched using a query parameter. Check it out!
ht...
www.johnhawthorn.com
October 19, 2025 at 8:40 PM
I made it easier to search Ruby's docs www.johnhawthorn.com/2025/searchi...
I have a hard time placing exactly what it is, but something about `bat` and other "modern" TUI tools really rubs me the wrong way. They're clearly well made, I think it's more of an aesthetic thing where that is exactly what I was running away from by using command line tools.
September 21, 2025 at 2:01 AM
I have a hard time placing exactly what it is, but something about `bat` and other "modern" TUI tools really rubs me the wrong way. They're clearly well made, I think it's more of an aesthetic thing where that is exactly what I was running away from by using command line tools.
Reposted by John Hawthorn
I took some time to delve into my latest work on reducing Ractor contention. This time: Generic Instance Variables
byroot.github.io/ruby/perform...
byroot.github.io/ruby/perform...
Unlocking Ractors: generic instance variables
In two previous posts, I explained that one of the big blockers for Ractors’ viability is that while they’re supposed to run fully in parallel, in many cases, they’d perform worse than a single thread...
byroot.github.io
August 11, 2025 at 10:04 PM
I took some time to delve into my latest work on reducing Ractor contention. This time: Generic Instance Variables
byroot.github.io/ruby/perform...
byroot.github.io/ruby/perform...
Reposted by John Hawthorn
One of the AI generated security reports attached a bunch of MD files, and this screenshot was taken from the end of one of them. This gives me lots of feelings, and none of them are good
August 5, 2025 at 9:07 PM
One of the AI generated security reports attached a bunch of MD files, and this screenshot was taken from the end of one of them. This gives me lots of feelings, and none of them are good
Reposted by John Hawthorn
Ruby 3.4.5 Released www.ruby-lang.org/en/news/2025...
This is a routine update that includes bug fixes and GCC 15 support. We recommend upgrading your Ruby version at your earliest convenience.
This is a routine update that includes bug fixes and GCC 15 support. We recommend upgrading your Ruby version at your earliest convenience.
Ruby 3.4.5 Released
www.ruby-lang.org
July 15, 2025 at 5:25 PM
Ruby 3.4.5 Released www.ruby-lang.org/en/news/2025...
This is a routine update that includes bug fixes and GCC 15 support. We recommend upgrading your Ruby version at your earliest convenience.
This is a routine update that includes bug fixes and GCC 15 support. We recommend upgrading your Ruby version at your earliest convenience.
Reposted by John Hawthorn
It's been a while since I've written about the innards of @compiler-explorer.com. xania.org/202506/how-c... has the details, some statistics and some fun war stories.
How Compiler Explorer Works in 2025 — Matt Godbolt’s blog
How we handle 92 million compilations a year without everything catching fire
xania.org
June 3, 2025 at 9:41 PM
It's been a while since I've written about the innards of @compiler-explorer.com. xania.org/202506/how-c... has the details, some statistics and some fun war stories.
Reposted by John Hawthorn
I just published "Implementing Embedded TypedData Objects" about a feature @byroot.bsky.social and I worked on for Ruby 3.3. A bit late, but better than never.
railsatscale.com/2025-06-03-i...
railsatscale.com/2025-06-03-i...
Implementing Embedded TypedData Objects
We implemented a new feature to TypedData objects in Ruby, called embedded TypedData objects. TypedData objects are used across a wide variety of Ruby types, such as Time, Enumerator, and Method. This...
railsatscale.com
June 3, 2025 at 8:17 PM
I just published "Implementing Embedded TypedData Objects" about a feature @byroot.bsky.social and I worked on for Ruby 3.3. A bit late, but better than never.
railsatscale.com/2025-06-03-i...
railsatscale.com/2025-06-03-i...
I'm a nervous flier, but fortunately I've downloaded the new season of Nathan Fielder's show "The Rehearsal" to distract me. No spoilers please, I want to go in blind
May 27, 2025 at 1:27 AM
I'm a nervous flier, but fortunately I've downloaded the new season of Nathan Fielder's show "The Rehearsal" to distract me. No spoilers please, I want to go in blind
Reposted by John Hawthorn
I wrote a post to braindump what I'm currently working on: allowing lock-free access to class instance variables from Ractors.
byroot.github.io/ruby/perform...
byroot.github.io/ruby/perform...
Unlocking Ractors: class instance variables
In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful t...
byroot.github.io
May 24, 2025 at 1:35 PM
I wrote a post to braindump what I'm currently working on: allowing lock-free access to class instance variables from Ractors.
byroot.github.io/ruby/perform...
byroot.github.io/ruby/perform...
Reposted by John Hawthorn
Ruby 3.4.4 Released www.ruby-lang.org/en/news/2025...
This release includes a fix for a YJIT bug related to local variables and addresses a build issue on Windows when using GCC 15. It was released ahead of schedule to make these fixes available as soon as possible.
This release includes a fix for a YJIT bug related to local variables and addresses a build issue on Windows when using GCC 15. It was released ahead of schedule to make these fixes available as soon as possible.
Ruby 3.4.4 Released
www.ruby-lang.org
May 14, 2025 at 6:48 PM
Ruby 3.4.4 Released www.ruby-lang.org/en/news/2025...
This release includes a fix for a YJIT bug related to local variables and addresses a build issue on Windows when using GCC 15. It was released ahead of schedule to make these fixes available as soon as possible.
This release includes a fix for a YJIT bug related to local variables and addresses a build issue on Windows when using GCC 15. It was released ahead of schedule to make these fixes available as soon as possible.
Reposted by John Hawthorn
I did some sort of rubber duck blogging about a patch I'm currently working on: byroot.github.io/ruby/perform...
Unlocking Ractors: object_id
In a previous post about ractors, I explained why I think it’s really unlikely you’d ever be able to run an entire application inside a ractor, but that they could still be situationally very useful t...
byroot.github.io
April 26, 2025 at 4:40 PM
I did some sort of rubber duck blogging about a patch I'm currently working on: byroot.github.io/ruby/perform...
Reposted by John Hawthorn
If you read @byroot.bsky.social 's "What's the deal with Ractors?", and were bummed at how poorly they handled JSON parsing, then @jhawthorn.com has brightened your day!
Frozen interned strings are now stored in a lock-free hash, making the Ractor example 2x faster than the single-threaded example!
Frozen interned strings are now stored in a lock-free hash, making the Ractor example 2x faster than the single-threaded example!
April 20, 2025 at 12:12 AM
If you read @byroot.bsky.social 's "What's the deal with Ractors?", and were bummed at how poorly they handled JSON parsing, then @jhawthorn.com has brightened your day!
Frozen interned strings are now stored in a lock-free hash, making the Ractor example 2x faster than the single-threaded example!
Frozen interned strings are now stored in a lock-free hash, making the Ractor example 2x faster than the single-threaded example!
Reposted by John Hawthorn
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.
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
April 10, 2025 at 1:05 PM
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.
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.
I've just released unsafe 1.0.0! A gem bringing the power of Rust's unsafe to Ruby! github.com/jhawthorn/un...
GitHub - jhawthorn/unsafe: Just like in Rust!
Just like in Rust! Contribute to jhawthorn/unsafe development by creating an account on GitHub.
github.com
April 1, 2025 at 6:39 PM
I've just released unsafe 1.0.0! A gem bringing the power of Rust's unsafe to Ruby! github.com/jhawthorn/un...
One of my favourite things (of many) about rr-project.org is how it actually complements my tendency to be a printf debugger, because it's so easy to start gdb at the point that the output goes wrong.
rr: lightweight recording & deterministic debugging
rr-project.org
March 25, 2025 at 2:44 AM
One of my favourite things (of many) about rr-project.org is how it actually complements my tendency to be a printf debugger, because it's so easy to start gdb at the point that the output goes wrong.
Reposted by John Hawthorn
andpad.connpass.com/event/346737/ registration is opened now. We welcomed oversea guest for #rubykaigi
RubyKaigi 2025 前夜祭 Asakusa.rb Welcome Drinkup (2025/04/15 18:30〜)
## Overview 概要 On the day before RubyKaigi 2025, which will be the regular meeting day for Asakusa.rb, we will host a Welcome Drinkup as a pre-party for overseas committers and Rubyists attending the...
andpad.connpass.com
March 19, 2025 at 3:37 AM
andpad.connpass.com/event/346737/ registration is opened now. We welcomed oversea guest for #rubykaigi
Reposted by John Hawthorn
What's new?
- Quickly and easily profile your jobs in production with Vernier integration.
- View multi-day job execution metrics to see performance over time.
- Heavily rewritten Web UI much faster than 7.3.0.
- Many more small improvements
Here's Web UI 7.3 vs 8.0.
- Quickly and easily profile your jobs in production with Vernier integration.
- View multi-day job execution metrics to see performance over time.
- Heavily rewritten Web UI much faster than 7.3.0.
- Many more small improvements
Here's Web UI 7.3 vs 8.0.
February 26, 2025 at 8:33 PM
What's new?
- Quickly and easily profile your jobs in production with Vernier integration.
- View multi-day job execution metrics to see performance over time.
- Heavily rewritten Web UI much faster than 7.3.0.
- Many more small improvements
Here's Web UI 7.3 vs 8.0.
- Quickly and easily profile your jobs in production with Vernier integration.
- View multi-day job execution metrics to see performance over time.
- Heavily rewritten Web UI much faster than 7.3.0.
- Many more small improvements
Here's Web UI 7.3 vs 8.0.
After an incredible 6.5+ years, Friday was my last day at GitHub. I'm so thankful to have gotten to know and have worked with such a smart and thoughtful group of people.
I'm excited to continue working on Ruby as part of the Ruby and Rails Infrastructure team at Shopify ❤️ 💎
I'm excited to continue working on Ruby as part of the Ruby and Rails Infrastructure team at Shopify ❤️ 💎
February 24, 2025 at 8:05 PM
After an incredible 6.5+ years, Friday was my last day at GitHub. I'm so thankful to have gotten to know and have worked with such a smart and thoughtful group of people.
I'm excited to continue working on Ruby as part of the Ruby and Rails Infrastructure team at Shopify ❤️ 💎
I'm excited to continue working on Ruby as part of the Ruby and Rails Infrastructure team at Shopify ❤️ 💎
@byroot.bsky.social @bihi.bsky.social Very happy to deprecate my library thanks to all your work on JSON 🎉 github.com/jhawthorn/ra...
More explicitly recommend json · jhawthorn/rapidjson-ruby@9292377
github.com
February 13, 2025 at 5:23 PM
@byroot.bsky.social @bihi.bsky.social Very happy to deprecate my library thanks to all your work on JSON 🎉 github.com/jhawthorn/ra...
GitHub is now running Ruby 3.4.1
January 7, 2025 at 10:53 PM
GitHub is now running Ruby 3.4.1
Reposted by John Hawthorn
Ruby 3.4.0 Released
www.ruby-lang.org
December 25, 2024 at 6:39 AM
Reposted by John Hawthorn
I propose we replace semantic versioning with pride versioning
December 21, 2024 at 7:07 PM
I propose we replace semantic versioning with pride versioning
Vernier 1.5.0 is out! This has some significant changes including rewriting the timer thread sleeping (should be lighter weight), recording Fiber activity (thanks @tenderlove.dev), and showing file listings on the command line. Please let me know if you hit any issues 🙇♂️ github.com/jhawthorn/ve...
Release v1.5.0 · jhawthorn/vernier
This is the most significant release in a while. The timer thread should be lighter weight (hopefully without sacrificing too much accuracy), we now record fiber activity, and memory is measured ov...
github.com
December 18, 2024 at 4:56 AM
Vernier 1.5.0 is out! This has some significant changes including rewriting the timer thread sleeping (should be lighter weight), recording Fiber activity (thanks @tenderlove.dev), and showing file listings on the command line. Please let me know if you hit any issues 🙇♂️ github.com/jhawthorn/ve...