John Hawthorn's Avatar

John Hawthorn

@jhawthorn.com

Writing code for @Shopify, Rails, and Ruby. Previously @GitHub. he/him | Victoria, BC | jhawthorn.com

1,139
Followers
221
Following
49
Posts
18.09.2023
Joined
Posts Following

Latest posts by John Hawthorn @jhawthorn.com

Hockey cards for Jenn Gardiner and Sarah Nurse

Hockey cards for Jenn Gardiner and Sarah Nurse

Hockey cards for Emily Clarke, Natalie Spooner, Emma Maltais✨, Marie-Philip Poulin, and Laura Stacey

Hockey cards for Emily Clarke, Natalie Spooner, Emma Maltais✨, Marie-Philip Poulin, and Laura Stacey

Marie-Philip Poulin 💜 holographic hockey card. Also my boy Ernie Clement in the background

Marie-Philip Poulin 💜 holographic hockey card. Also my boy Ernie Clement in the background

The other side of the holographic duo Tim's hockey card is Laura Stacey. She was incredible at the Olympics. Also ern-dog and Paul Skenes are behind her because I have an eBay addiction. Send help.

The other side of the holographic duo Tim's hockey card is Laura Stacey. She was incredible at the Olympics. Also ern-dog and Paul Skenes are behind her because I have an eBay addiction. Send help.

Can't wait for Sunday's game

27.02.2026 06:21 👍 5 🔁 0 💬 1 📌 0
Preview
Optimizing load time for faker-ruby A quick win that made loading faker-ruby 19% faster.

The latest faker's version includes this improvement! Nothing like profiling your code to get some quick wins.

Huge thanks to @jhawthorn.com for creating Vernier 🤓

hexdevs.com/posts/optimi...

27.01.2026 19:12 👍 6 🔁 1 💬 0 📌 0

hey folks, i’m a rails / ruby dev with a bit over 10 years of experience professionally and i was just hit with my second layoff. looking for a new role would love to chat! #rails #ruby.

16.01.2026 16:04 👍 33 🔁 44 💬 5 📌 1

Development of Ruby 4.1.0 started
```
ruby 4.1.0dev (2025-12-26T00:31:28Z master 290fa0d8b4) +YJIT +MN +PRISM [arm64-darwin25]
```

26.12.2025 01:06 👍 27 🔁 5 💬 0 📌 0
Preview
ZJIT is now available in Ruby 4.0 ZJIT is now available with the release of Ruby 4.0. Here’s an update of our progress.

ZJIT is available starting in Ruby 4.0! Please try it out on your test suite, maybe in a staging environment, and let us know how it goes!

railsatscale.com/2025-12-24-l...

24.12.2025 15:50 👍 20 🔁 7 💬 2 📌 0
Screenshot of a terminal demonstrating object allocation speedup. Ruby 4.0 is about 2x faster

Screenshot of a terminal demonstrating object allocation speedup. Ruby 4.0 is about 2x faster

One thing I'm really excited about in Ruby 4.0 is that object allocation is going to get a nice speed boost

13.12.2025 20:09 👍 89 🔁 10 💬 3 📌 0

It happens before the value is assigned (and it seems like "frozen" Atom objects are mutable)

30.10.2025 21:50 👍 1 🔁 0 💬 1 📌 0

That's on self, it needs to be done on the value being swapped

30.10.2025 21:30 👍 0 🔁 0 💬 1 📌 0

Parsing (of whatever) with a short lived is probably currently the most obvious win. Things where the data-in is simple and data-out is complex is a good place to look. ViewComponent is the opposite of that, and it's only slow because of its own implementation, I don't really see the benefit there.

30.10.2025 20:31 👍 2 🔁 0 💬 1 📌 0

I don't think 3.5 changed what was possible but the Ractor::Port API made a bunch of things a lot more ergonomic (also that and everything else is much faster and less buggy)

30.10.2025 17:51 👍 2 🔁 0 💬 1 📌 0

Ratomic is a totally fine experiment, but it totally breaks the ractor guarantees and should not be used. It _can_ crash now and is likely to crash more in the future (see eregon's issue)

30.10.2025 17:51 👍 3 🔁 0 💬 1 📌 0

To the uninitiated, this is what every baseball game is like.

28.10.2025 05:32 👍 3 🔁 0 💬 0 📌 0
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...

I made it easier to search Ruby's docs www.johnhawthorn.com/2025/searchi...

19.10.2025 20:40 👍 39 🔁 5 💬 2 📌 0

No way, the Blues Jay will take it back to Roger Center

16.10.2025 03:53 👍 1 🔁 0 💬 0 📌 0

You're absolutely right...

30.09.2025 00:53 👍 9 🔁 0 💬 0 📌 1

There's totally room for them and if you like them you should use them and make more. It's not a value judgement. There's just something about them that doesn't appeal to me as a matter of taste vs. a traditional command line tool.

22.09.2025 02:15 👍 1 🔁 0 💬 1 📌 0

I think you're right about the forcing function. It also probably enforces a consistent look and feel. But that just suggests to me it's not the optimal version of what it's trying to be. A native GUI could and should be drivable 100% by keyboard

21.09.2025 05:21 👍 2 🔁 0 💬 1 📌 0

I don't mean to single out bat, I think it's just the first tool that crosses the line. Something like `lazygit` is maybe a clearer leap. It's obviously a good tool people like, but as a fan of the command line I don't get why one would prefer that over the same tool as a full graphical GUI.

21.09.2025 02:05 👍 4 🔁 0 💬 2 📌 0

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.

21.09.2025 02:01 👍 8 🔁 1 💬 4 📌 0
A konbini package of two hot dogs with Cajun sauce wrapped as a burrito.

A konbini package of two hot dogs with Cajun sauce wrapped as a burrito.

米国人だから

24.08.2025 06:44 👍 4 🔁 0 💬 0 📌 0
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...

I took some time to delve into my latest work on reducing Ractor contention. This time: Generic Instance Variables

byroot.github.io/ruby/perform...

11.08.2025 22:04 👍 17 🔁 6 💬 1 📌 0
## 🚀 SUBMISSION STRATEGY

### Approach: "Professional Context-Dependent Security Issue"
- Not claiming pure remote RCE
- Focusing on real-world deployment risks
- Honest about context requirements
- Emphasizing practical security impact

### Expected Response:
```
"While not directly exploitable in default configuration, 
this represents a significant security risk in common 
deployment scenarios. We'll investigate and implement 
appropriate mitigations."
```

### Success Probability: 75%
- Technical merit: Clear vulnerability in core Rails
- Real-world relevance: Common deployment scenarios
- Professional quality: Comprehensive documentation
- Honest assessment: Context-dependent, not oversold

---

## ✅ READY TO SUBMIT!

**All information prepared for professional Rails bug bounty submission.**

**Expected Outcome:**
- Rails Team Response: 1-2 weeks
- Fix Development: 2-8 weeks
- Security Release: 8-12 weeks
- IBB Bounty: $1,040-1,600 (80% of $1,300-2,000)

**Next Step:** Copy information above into HackerOne form and submit!

## 🚀 SUBMISSION STRATEGY ### Approach: "Professional Context-Dependent Security Issue" - Not claiming pure remote RCE - Focusing on real-world deployment risks - Honest about context requirements - Emphasizing practical security impact ### Expected Response: ``` "While not directly exploitable in default configuration, this represents a significant security risk in common deployment scenarios. We'll investigate and implement appropriate mitigations." ``` ### Success Probability: 75% - Technical merit: Clear vulnerability in core Rails - Real-world relevance: Common deployment scenarios - Professional quality: Comprehensive documentation - Honest assessment: Context-dependent, not oversold --- ## ✅ READY TO SUBMIT! **All information prepared for professional Rails bug bounty submission.** **Expected Outcome:** - Rails Team Response: 1-2 weeks - Fix Development: 2-8 weeks - Security Release: 8-12 weeks - IBB Bounty: $1,040-1,600 (80% of $1,300-2,000) **Next Step:** Copy information above into HackerOne form and submit!

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

05.08.2025 21:06 👍 21 🔁 2 💬 2 📌 0
"two buttons" meme where the guy can't decide between calloc(n, 1) and calloc(1, n)

"two buttons" meme where the guy can't decide between calloc(n, 1) and calloc(1, n)

01.08.2025 19:43 👍 16 🔁 0 💬 1 📌 0
Ruby 3.4.5 Released

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.

15.07.2025 17:25 👍 29 🔁 10 💬 1 📌 0
Preview
How Compiler Explorer Works in 2025 — Matt Godbolt’s blog How we handle 92 million compilations a year without everything catching fire

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.

03.06.2025 21:41 👍 57 🔁 17 💬 3 📌 0
Preview
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...

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

03.06.2025 20:17 👍 17 🔁 3 💬 0 📌 0
Post image
27.05.2025 01:28 👍 4 🔁 0 💬 1 📌 0

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

27.05.2025 01:27 👍 7 🔁 0 💬 1 📌 0
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...

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

24.05.2025 13:35 👍 27 🔁 6 💬 1 📌 0

john@hawthorn.email

15.05.2025 17:19 👍 0 🔁 0 💬 0 📌 0