Stephen
banner
diaconou.com
Stephen
@diaconou.com
Next gem to get a v1 will be https://github.com/stevegeek/typed_operation

Its a 'command pattern' (aka callable/service object/???) gem, operations can be partially applied, curried and have typed parameters. Auth via action_policy if desired

Now adding last things: chaining and instrumentation
GitHub - stevegeek/typed_operation: Command pattern, which is callable, and can be partially applied, curried and has typed parameters. Authorization to execute via action_policy if desired.
Command pattern, which is callable, and can be partially applied, curried and has typed parameters. Authorization to execute via action_policy if desired. - stevegeek/typed_operation
github.com
November 27, 2025 at 3:52 PM
Got bombed with random bot requests for .js files on a Rails app. The Ruby processes pegged at 100% CPU. Think it was cause Rails was raising and logging large number of ActionController::InvalidCrossOriginRequest exceptions. Time to add that missing `rescue_from`
November 26, 2025 at 8:52 AM
Finally releasing 1.0.0 of my `encoded_id` gems (started 7 yrs ago in a client app)

Use it to turn IDs into obfuscated reversible & human friendly strings.

https://github.com/stevegeek/encoded_id

(docs also have comparison to other similar gems to help you decide what to use)
GitHub - stevegeek/encoded_id: Turn numeric or hex IDs into reversible and human friendly obfuscated strings. Also supports Rails ActiveRecord models
Turn numeric or hex IDs into reversible and human friendly obfuscated strings. Also supports Rails ActiveRecord models - stevegeek/encoded_id
github.com
November 21, 2025 at 5:17 PM
Been finding optimising sqids-ruby and hashids.rb interesting. Wonder if I should turn the experience into a talk proposal for a conference... ie we live code through finding hotspots in some gem, try optimisations and consider why result performs better or not, and trade offs vs readability etc ? 🤷
November 19, 2025 at 4:04 PM
Updating `awfy` (my Ruby benchmarking tool) so that you can run a benchmark suite repeatedly across a commit range and then compare results
November 19, 2025 at 12:33 PM
This looks great, def going to try
Sick of looking up `find/exec` syntax on stack overflow? I built detect as a replacement:

```
cargo install detect

detect 'ext in [rs, ts, js] && size > 0.5mb && modified > -7d'

detect 'ext == ts && content ~= class.*Service'

detect 'name == "Cargo.toml" && toml:.package.edition == 2018'
```
November 18, 2025 at 9:23 PM
Reposted by Stephen
Herb v0.8 is here! 🚀

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! 🌿
November 12, 2025 at 4:05 PM
Straight away Herb found 7 erb files with missing closing tags in the HTML and approx 130 linting errors such as missing alt tags, pointless use of `-%>`, anchor tags without an `href` etc.

And parses all 555 erb files in 3-4 seconds.

Really cool!
Today: removing `erb_lint` and my IDE tw CSS class sorting plugin... and adding `Herb` ❤️
Also coming in Herb v0.8.0, the long awaited Tailwind CSS class sorting feature in the Herb Formatter! 🌿

Here is a demo of that working in @zed.dev using the new `.herb.yml` configuration file! 😍
November 7, 2025 at 4:51 PM
Today: removing `erb_lint` and my IDE tw CSS class sorting plugin... and adding `Herb` ❤️
Also coming in Herb v0.8.0, the long awaited Tailwind CSS class sorting feature in the Herb Formatter! 🌿

Here is a demo of that working in @zed.dev using the new `.herb.yml` configuration file! 😍
November 7, 2025 at 10:43 AM
Reposted by Stephen
Also coming in Herb v0.8.0, the long awaited Tailwind CSS class sorting feature in the Herb Formatter! 🌿

Here is a demo of that working in @zed.dev using the new `.herb.yml` configuration file! 😍
November 1, 2025 at 2:54 PM
I was recently thinking about adding benchmarking across multiple Ruby versions with my `awfy` tool, and this looks perfect for managing that!
After a tough week for our Ruby community, here’s a little hope. 🎩
Meet Ruby Butler — a cargo/uv-inspired helper to reimagine your gem & bundler experience. Now at your service (for free).

👉 github.com/RubyElders/r...
GitHub - RubyElders/ruby-butler
Contribute to RubyElders/ruby-butler development by creating an account on GitHub.
github.com
October 20, 2025 at 2:12 PM
TIL `Symbol#name` returns a frozen string representation of a Symbol while `Symbol#to_s` returns a mutable String, resulting in a significant performance difference. For some reason I assumed they were the same.
October 19, 2025 at 7:53 AM
If you are looking to use your voice more over typing for work (e.g. for RSI reasons), I highly recommend superwhisper.com ... seems to work very well with technical terms.
October 19, 2025 at 7:20 AM
Got my #Rubycon Rimini ticket
October 12, 2025 at 10:14 PM
Reposted by Stephen
Tickets for #Rubycon are finally available, grab yours before it's too late! ti.to/rubycon/ruby...
October 12, 2025 at 4:40 PM
Reposted by Stephen
In the upcoming Herb v0.8.0 release, the Herb Linter will support a new `--fix` option to autocorrect offenses.

This isn’t dependent on the Herb Formatter and uses the `printer` architecture, so the Linter can fix only the offenses without touching anything else in the document!
October 11, 2025 at 5:25 PM
@marcoroth.dev sorry if missing the obvious, but is there any Herb powered tool yet that organises tailwind classes into a deterministic order? Checked rubygems and herb site but didn’t spot it
October 10, 2025 at 7:09 PM
Is gem.coop basically a deployment of the rubygems gem? Or a fork of it?
gem.coop
gem.coop
October 6, 2025 at 2:22 PM
Rubycon 2026, a new Italy based Ruby conference, will be held in Rimini on the 8th of May next year! Should be good, who wants to come?
RubyCon - The Ruby Conference in Italy
rubycon.it
October 3, 2025 at 12:34 PM
Wow this is crazy… big thanks to the RubyGems team. You are very much appreciated by the community
oof, what a disappointing way to end more than 15 years of open source work. (summary by @duckinator.bsky.social at pup-e.com/goodbye-ruby...). good luck to the remaining RubyGems team, and it’s time to focus my energy on new projects that I’m truly excited about, like rv.dev
September 19, 2025 at 8:11 AM
Experimenting with using LM Studio + local model and custom MCP servers essentially wrapping around AppleScript , to automate chores on my computer, eg arrange files, tag notes, or provide a more natural language interface for apps such as Things
September 11, 2025 at 5:31 PM
Reposted by Stephen
Yes, it is slow and steady progress, but we are genuinely building an amazing community of people and suite of tools for Ruby web developers. You should come hang out with us at discord.gg/fEMYkKQA
September 11, 2025 at 5:06 PM
Back from the break. So much seems to have happened in 2 months its crazy. Prob should start with whatever was announced at RailsWorld.
September 11, 2025 at 8:50 AM
Reposted by Stephen
At Rails World 2025, I introduced ReActionView, an initiative to explore what's possible in the Rails view layer for 2025 and beyond.

As part of this, I announced Herb::Engine, an ActionView-compatible ERB engine built on top of the HTML-aware Herb Parser.

#RailsWorld2025
September 5, 2025 at 2:43 PM
Reposted by Stephen
I won IOCCC 2024! Here's a 2.5 KB rigid body simulator written in C.

It can simulate the Tippe Top, a top that flips while spinning.

www.youtube.com/watch?v=stPH...
Rotating Rigid Body Simulation -- IOCCC 2024 "Solid Body Physics"
YouTube video by Yusuke Endoh
www.youtube.com
August 4, 2025 at 11:08 PM