Nicer than inline rbs?(!)
Nicer than inline rbs?(!)
Honestly I’ve upgraded overnight and I forgot to have updated on the day after. I don’t even know what’s changed aside of some transparent things I’ve anyway never looked at before. IDE, ghostty, fish, docker and devbox are unaware of the upgrade, at least 😇
A Handful of LOLs. Thanks 🙃
A group of smiling Ruby developers gathered around a table, including Matz, the creator of Ruby!
The Hanami hack table at #BalticRuby was greeted by a familiar face! (And potential new user?)
All the other random guys I’d say. Keep up and thanks.
Granular or Not. It depends on the nature of the app and the stack level from where I’m raising. Deeper in the stack, more I prefer granular. Both for clarity and for spotted rescue at higher levels.
Namespaces 101
During the last days I have done an immersion into namespaces, the new big feature that is coming in Ruby.
Here's a digested mental model for you all.
gist.github.com/fxn/86ad8584...
If you've got a blog where you (at least sometimes) write Ruby-related posts, please reply with a link to your RSS feed below.
I am going to try to start keeping an eye on those as well and sharing interesting stuff I find from time to time.
IME you just don’t. And you do it a little less for each child that comes 😂☺️
The @balkanruby.bsky.social 2025 talk recordings are now available on @rubyevents.org as well! 🙌
www.rubyevents.org/events/balka...
A screenshot of Ruby code showing the standard library's observer pattern in use. The code is as follows: require 'observer' class Plumber include Observable def initialize @coins_collected = 0 end def collect_coin @coins_collected += 1 # mark this object as dirty; this is required for notification to actually happen. changed notify_observers(:coin_collected, total_coins: @coins_collected) end end class AchievementEngine def initialize @hundred_coins_achievement_unlocked = false end # this will be called by notify_observers def plumber_updated(status, params = {}) case status when :coin_collected plumber_collected_coin(params[:total_coins]) end end def plumber_collected_coin(total_coins) puts "Collected another ten coins! Total: #{total_coins}" if (total_coins % 10).zero? return if total_coins < 100 || @hundred_coins_achievement_unlocked puts 'Achievement unlocked: collected 100 coins!' @hundred_coins_achievement_unlocked = true end end class Game def initialize @plumber = Plumber.new @achievement_engine = AchievementEngine.new # Register achievement engine as an observer and call `plumber_updated` on it when # plumber's observers are notified @plumber.add_observer(@achievement_engine, :plumber_updated) end # simulates some iterations of a gameplay loop, in which the plumber collects # a random number of coins. def start 10.times do |i| puts "Iteration #{i.next}" coins_to_collect = rand(5..25) coins_to_collect.times.each { @plumber.collect_coin } end end end Game.new.start # => Iteration 1 # => Collected another ten coins! Total: 10 # => Collected another ten coins! Total: 20 # => Iteration 2 # => Collected another ten coins! Total: 30 # < further output redacted due to alt text length constraints >
How would you implement the Observer pattern — similar to pub-sub — in Ruby? Well, there's a module right in the standard library that does it for you!
It's a little quirky with its dirty tracking, but that might be just what you need.
For jurists, scholars, and journalists, do take note: we have a public confession of a war crime by Vladimir Putin himself.
(Not for the first time: he also confessed to the abduction and deportation of Ukrainian children, that's why there's an international arrest warrant against him.)
If you are sending schema-less data from Ruby over the wire, or if you are storing it to disk, what is your best option among the current offering?
I went through the most prominent serializers and got some interesting results
oldmoe.blog/2025/04/21/r...
I hate having drawbacks in both approaches. But most of the time getters win.
RFK Jr.'s rhetoric on autism is deeply rooted in eugenics, which at its core is a proposition that some lives are less valuable than others.
Within the last week I've heard from folks back home that I'm overreacting because I'm "one of the good ones."
The face eating leopards would like a word.
100% acc?! Just a dream for me 😋
Today I played a bit modelling multi-step workflows with #ruby, #eventsourcing and reactive UIs.
In this (ugly AF) demo, the UI reacts to state updates, which are all eventually-consistent and run in the background. No code difference between "controllers" and "background" jobs.
@andycroll.bsky.social does things other conferences say is impossible
Eloquent Ruby 2nd Edition is on the way with Pragmatic Programmers!
@russolsen.bsky.social and I have started work on modernizing this Ruby classic for the next generation of Rubyists to enjoy.
Desktop Development and Frontend Development are areas that Ruby can provide a lot of unrealized productivity in and need a lot of community help and support in.
🚀 httpclient gem 2.9.0 is out! 🚀 After 8 years, we're thrilled to release this update thanks to amazing contributors! Huge thanks to yhonda & @byroot.bsky.social . 🙏
rubygems.org/gems/httpcli...
Argh! Doesn’t this hurt a bit? 😂🥲
My favorite 2024 self-reflection at work (for a self-given “expert” meaning at least). Great topic IMO.
Assuming you already know it, where will you put the demo on? :)
Turns out on the same day I wrote this, Pat announced the rewrite! 🤯
patshaughnessy.net/2025/1/28/up...
The EuRuKo 2024 talks are now on @rubyvideo.dev!
You’ve done a huge work so far. And not -just- by stats. It stands in front of every rubyists, I think. Thanks.
The Tulsa Race Massacre was not committed by an uncontrolled mob but was the result of “a coordinated, military-style attack” by white citizens, the Justice Department said in a report. It was the first time the U.S. government has given an official account of the 1921 massacre of Black residents.
RuboCop's first release for 2025 is now out and it's huge! Version 1.70 brings a lot of bug-fixes and small improvements here and there, most notably improved integration with Shopify's ruby-lsp. Check out the release notes for more details github.com/rubocop/rubo...
Enjoy!