The biggest release yet, packed with new language bindings, Linter Autofix support, Linter Fix-on-Save, a new `.herb.yml` config file, formatter improvements, Tailwind Class Sorting integration, and a ton of performance, tooling and LSP improvements! 🌿
The biggest release yet, packed with new language bindings, Linter Autofix support, Linter Fix-on-Save, a new `.herb.yml` config file, formatter improvements, Tailwind Class Sorting integration, and a ton of performance, tooling and LSP improvements! 🌿
LOL, have thought about something like that for my PRs, patches, and the book I am (slowly but humanly) writing.
LOL, have thought about something like that for my PRs, patches, and the book I am (slowly but humanly) writing.
An MR about this was merged to the Ruby master a couple of days ago
github.com/ruby/ruby/p... by @tagomoris.bsky.social
An MR about this was merged to the Ruby master a couple of days ago
github.com/ruby/ruby/p... by @tagomoris.bsky.social
Turns out, I seem to do 10 every 4 minutes quite consistently. (Have done meditation for decades, with hiatuses.)
Also I often feel my heart beating, probably something related to increased vagal tone.
Turns out, I seem to do 10 every 4 minutes quite consistently. (Have done meditation for decades, with hiatuses.)
Also I often feel my heart beating, probably something related to increased vagal tone.
👉 🙋♂️👨💻 👈
Just comment below the answer to this riddle to get a chance to get one.
p [
[65, 118, 111],
[105, 115],
[116, 104, 101],
[98, 101, 115, 116]
].map { |w| w.map(&:chr).join }.join(' ')
👉 🙋♂️👨💻 👈
Just comment below the answer to this riddle to get a chance to get one.
p [
[65, 118, 111],
[105, 115],
[116, 104, 101],
[98, 101, 115, 116]
].map { |w| w.map(&:chr).join }.join(' ')
gist.github.com/fxn/bf4eed2...
gist.github.com/fxn/bf4eed2...
daniel.haxx.se/blog/2025/09...
#recommended
daniel.haxx.se/blog/2025/09...
#recommended
A good novel takes you to other places, in a broad sense of the word. And that is an experience in itself.
(Reading "The Temple of the Golden Pavillion" these days, after my trip to Japan.)
www.joanwestenberg.com/p/why-stori...
A good novel takes you to other places, in a broad sense of the word. And that is an experience in itself.
(Reading "The Temple of the Golden Pavillion" these days, after my trip to Japan.)
Ruby's decision-making process isn't democratic or based on voting. It's more like a game of persuading Matz and Module maintainers.
Ruby's decision-making process isn't democratic or based on voting. It's more like a game of persuading Matz and Module maintainers.
So I figured it was the occasion for another deep dive.
byroot.github.io/ruby/perform...
So I figured it was the occasion for another deep dive.
byroot.github.io/ruby/perform...
adventofcode.com/2025/about#f...
adventofcode.com/2025/about#f...
adventofcode.com/2025/about#f...
adventofcode.com/2025/about#f...
This is a first. Consulting is separate from OSS for me, access to Rails is not part of my value proposition, and I do not pursue "being paid for doing OSS".
This is a first. Consulting is separate from OSS for me, access to Rails is not part of my value proposition, and I do not pursue "being paid for doing OSS".
Define global variable $foo where you collect stuff, maybe in different places.
Then, at_exit { pp $foo }.
Define global variable $foo where you collect stuff, maybe in different places.
Then, at_exit { pp $foo }.
Define global variable $foo where you collect stuff, maybe in different places.
Then, at_exit { pp $foo }.
WTF folks. As if that was their choice!
Where are the other companies pushing Ruby and Rails with real money and resources to be on par?
Talk is cheap.
WTF folks. As if that was their choice!
Where are the other companies pushing Ruby and Rails with real money and resources to be on par?
Talk is cheap.
Say, if an instance of Foo::Bar provides method `foo`, generally speaking, whether the method comes from the class or a mixin is not a concern of the user. That, and the module constant, do not belong to the public contract.
Say, if an instance of Foo::Bar provides method `foo`, generally speaking, whether the method comes from the class or a mixin is not a concern of the user. That, and the module constant, do not belong to the public contract.
He was the best.
Ledisi did Brown Sugar as a tribute to him.
He was the best.
Ledisi did Brown Sugar as a tribute to him.
To use an API, or read source code, you need to know what do methods accept and return.
And that is orthogonal to dynamic typing.
I have always annotated my Ruby APIs internally, including private methods.
To use an API, or read source code, you need to know what do methods accept and return.
And that is orthogonal to dynamic typing.
I have always annotated my Ruby APIs internally, including private methods.
YARD has notation for duck typing, and in Zeitwerk I made up my own (see for example these two attributes github.com/fxn/zeitwerk...)
YARD has notation for duck typing, and in Zeitwerk I made up my own (see for example these two attributes github.com/fxn/zeitwerk...)