Lucian Ghinda

Lucian Ghinda

@lucianghinda.com

Product Engineer, Ruby on Rails Developer ‣ Curator of newsletter.shortruby.com ‣ Helping #Ruby developers design better test cases at https://goodenoughtesting.com

1.9K followers838 following2.5K posts

I am not sure how this day goes for you but for me I kept upgrading a wide range of apps due to eMudhra CA issue. The list of things affected using that certificate is bigger than you might think emudhra.we-have-a-problem.com Stay safe out there and upgrade everything!

emudhra.we-have-a-problem.comeMudhra Intermediate CA CompromiseThe private keys of eight eMudhra intermediate CA certificates, trusted by major root programs, have been compromised. Check whether your client is affected and how to protect it.

Lucian Ghinda reposted

Replying to @cooperx86.bsky.social

And a fun one I'll let you figure out for yourself what it does: `arr.map{arr.shift}` .. I probably wouldn't use this though as it's kinda opaque.

Lucian Ghinda reposted

We released Ruby 4.0.9, 3.4.12, and 3.3.13, and published an announcement about Regexp compilation fixes. www.ruby-lang.org/en/news/2026... If your application compiles a regular expression from an untrusted string, please update your Ruby to one of those versions.

ruby-lang.orgRegexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264 | RubyWe have released Ruby 4.0.9, 3.4.12 and 3.3.13. They fix several bugs in Ruby’s regular expression engine (Onigmo) that GitLab found could be used for remote...

Have to say this maintenance page from dev-null is pretty good: It is direct. For me as a developer (the target user), it shows what is being applied now, and it has auto-retry (so no extra action or decision needed from me).

Lucian Ghinda reposted

I don't understand why you all are complaining about code quality when using AI. Don't you use the the best engineering practice and always finish your loop/graph/pyramid of agentic harness with: > Think deep. Make no mistakes. Follow all standards. Think in ASD-STE100 ?

Have to come back to share this extra trick: Whenever the agent makes a mistake ask it to write 10 times in their memory: "I am sorry. I will make no mistakes next time"

Lucian Ghinda reposted

Today is a big day for Herb! It's built into Rails 8.2 by default for all HTML+ERB views. My talk at #RailsWorld in Austin today answered three questions: What is Herb? What ships in Rails 8.2? And what does this enable? Herb v0.11 and ReActionView v0.6 released alongside it.

The creator of superpowers plugin kindly asked us to change the name of github.com/lucianghind... to something else and not use superpowers. So I need your help for choosing a new name for this project. What would you think it should be called?

github.comGitHub - lucianghinda/superpowers-ruby: Claude Code superpowers: core skills library for Ruby and Ruby on Rails projectsClaude Code superpowers: core skills library for Ruby and Ruby on Rails projects - lucianghinda/superpowers-ruby

Most of my work these days on my personal projects (which are a bunch of small Ruby gems that I use in various projects) is using Astra medium to orchestrate and Luna subagents to implement and execute various tasks.

Basically I first run: github.com/lucianghind... to generate a high level idea of what I want to implement Then I run a codebase-research and change-spec skills which will soon be added to superpowers-ruby cause I think I tested them for almost 2 weeks and they are very good

github.comGitHub - lucianghinda/superplanning: Superplanning is a Skill for AI Agents that helps you plan a new product or featureSuperplanning is a Skill for AI Agents that helps you plan a new product or feature - lucianghinda/superplanning

And then I hand the documents to Codex with Astra on Medium and a prompt that is like this: Implement using Luna subagents the specifications found at docs/<specs> which will do the work and sometimes tell me things like this (I read them for fun bc I don't trust I verify 😄 )

I was creating some content for #GoodEnoughAgents workshop and wanted to make it even more practical so I found this gem that provides an interface to tiktoken algorithm from @OpenAI An LLM model never "reads" your text, it works with numbers. gem install tiktoken_ruby

These are just token ids not vector embeddings so the LLM will not work directly with them. They also have no meaning except to allocate an integer to a chunk of text (token) But it is still nice to decompose and explore how a prompt/context is transformed.

Lucian Ghinda reposted

If you’re in London next week, it would be great to see you at “Ruby in London” at Mindful Chef HQ, where me, Tobias and Tom are all speaking. Lots of #rubyfriends already coming but room for a few more! It’s going to be a busy one! www.meetup.com/ruby-in-lond... #ruby #rails

meetup.comRuby in London with Mindful Chef, Wed, Sep 9, 2026, 5:30 PM | MeetupWelcome back to another Ruby in London meetup!! The event will be hosted again by the wonderful team at Mindful Chef on Wednesday 9th September at 5.30pm. Speakers/Talks

I think one important change from Anthropic related to Fable 5.1 is the Data Retention There are a lot of organisations who disabled Fable due to data retention policy. And it seems Anthropic does not plan to disable it but maybe this EFS could help more organisations use Fable

Lucian Ghinda reposted

Nice little pattern for background tasks that need to be rate limited a bit: start to start throttling. If you need 1/sec, don't sleep 1. Sleep for the difference 1 minus the duration of the work.

Lucian Ghinda reposted

I try to make this a little better every month and automate it a bit more so I can spend more time on little details and customizations. I'm particularly proud of this edition. ♥️

RubyEvents.org@rubyevents.org

It's time for the August Newsletter! 📅 * Check out guides.rubyevents.org - an initiative from our newest team member - @hansschnedlitz.com ! * XO Ruby's CFPs are the last of the 2026 conference season * Balkan Ruby and RubyConf videos are released! www.rubyevents.org/announcement...

Time to trim the worktrees. 100 worktrees in 3 months. 40 of those were created in August, 22 in July and 34 in June, 4 today :) - 66 were used for code review, bake-offs and reproducing bugs - 34 were active development

For a while I pasted this into every Rails console session: ActiveRecord::Base.logger.level = Logger::ERROR Rails has a hook built for exactly this: Rails.application.console.

View full thread

For a single query, Rails already ships a scoped tool: ```ruby ActiveRecord::Base.logger.silence do User.where(created_at: 1.week.ago..).count end ```

For a while I pasted this into every Rails console session: ActiveRecord::Base.logger.level = Logger::ERROR Rails has a hook built for exactly this: Rails.application.console.

View full thread

Add this to config/initializers/console_helpers.rb: ```ruby Rails.application.console do def disable_console_loggers! @previous_log_levels ||= console_loggers.to_h { |l| [l, l.level] } @previous_log_levels.each_key { |l| l.level = :error } end end ```

Why does a def inside a block work as a console helper? A method defined in a block lands on Object. And in rails console, self is main, an instance of Object. ```ruby Object.instance_method(:hello).owner # => Object ```

For a while I pasted this into every Rails console session: ActiveRecord::Base.logger.level = Logger::ERROR Rails has a hook built for exactly this: Rails.application.console.

In development the console logs every SQL query and every cache line. Sometimes it is great for debugging. But some other times it is terrible when I want to copy console output into an agent CLI. I only wanted the thing scripts I run printed there. No extra SQL log lines

Rails.application.console registers a block that runs only when bin/rails console boots. This will only be loaded in console, not web process nor jobs. The Rails configuration guides document it as the console-only hook. That makes it the correct home for helpers like this.

For a while I pasted this into every Rails console session: ActiveRecord::Base.logger.level = Logger::ERROR Rails has a hook built for exactly this: Rails.application.console.

In development the console logs every SQL query and every cache line. Sometimes it is great for debugging. But some other times it is terrible when I want to copy console output into an agent CLI. I only wanted the thing scripts I run printed there. No extra SQL log lines

Rails.application.console registers a block that runs only when bin/rails console boots. This will only be loaded in console, not web process nor jobs. The Rails configuration guides document it as the console-only hook. That makes it the correct home for helpers like this.

Lucian Ghinda reposted

Did you know that you can literally multiply array elements in #Ruby? `[1, 2, 3] * 3 # => [1, 2, 3, 1, 2, 3, 1, 2, 3]` And with a scalar string, it’s a shortcut for `join`: ``` h = { a: 1, b: 2} h.map { |pair| pair * "=" } * ", " # => "a=1, b=2" ```

Lucian Ghinda reposted

Here’s the SolidQueue batches 2.5 year architectural journey, filled with O(n^2) algorithms, hot row contention, excessive jobs, and much in between. There’s a strong chance you’ll learn a thing or two - I certainly did 😮‍💨 jpcamara.com/2026/08/31/s...

jpcamara.comSolidQueue Batches: evolution and architectureWhen Rosa first released SolidQueue, she did a fantastic talk on the internals of how it works and what trade-offs she made when building it. You should give it a watch. It’s where I first learned how...

When I think about commands and triggering skills I have to say I like a lot more the way Claude Code does it in TUI with "/" than Codex TUI that uses "$" For me slash is much more a hint for a command than $ which gives me vibes of PHP :)

I could be biased as I grew in times of IRC and chat with text based interfaces where slash commands were used a lot. For me `/` is a better fit symbol for something that looks like a command or something to be executed than the `$` but could be a personal preference maybe?

Have to say I like a lot more this default style from Codex TUI to present the proposed changes. It is brief, it has the right keywords highlighted, it shows me the approaches considered so far, and it shows with bullet points the proposed architecture.

Compare with Claude Code style. I know it is not the same task but this wall of text. This is Claude Code with "simple technical English" instruction added in user injected Claude(dot)md Still makes me re-read twice some parts.

I like the idea of Claude that goes beyond what I have asked and tells me about a possible bug and investigation to be done as followup. But I wish it would have made that text a bit more structured by default.