Sign in

Janko Marohnić

@janko.io
261 followers 125 following 357 posts

Senior Ruby engineer, father, dancer. Creator of Shrine, rodauth-rails and vim-test.

PostsRepliesMedia
Reposted by Janko Marohnić
Mike Dalessio @flavorjon.es · 27/09/2026
Hot Cell is ready to go if you're on Rails edge. Slides are up at mike.daless.io/prez/2026-09...
mike.daless.io
081
Reposted by Janko Marohnić
Mike Dalessio @flavorjon.es · 25/09/2026
I'm honored and humbled to join the Rails core team. I'll be focusing on security and improvements to Active Storage and Action Text. Please reach out if you have thoughts on what would make your work easier.
4516
Janko Marohnić @janko.io · 25/09/2026
The amount of new features and improvements is massive 😃 Besides the awesome reactivity features, I love the language server improvements, such as ability to follow render calls (I can close my ruby-lsp-rails PR now 😄) and listing render call sites for current partial 👌 github.com/marcoroth/he...
github.com
Release v0.11.0 · marcoroth/herb
Herb v0.11 Herb v0.11 ships alongside ReActionView v0.6. Check out the "What's new in Herb v0.11" post on the Herb Blog. Parser Introduce ERBIterationBlockNode and iteration_nodes option by @marc...
000
Reposted by Janko Marohnić
Marco Roth @marcoroth.dev · 24/09/2026
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.
36511
Reposted by Janko Marohnić
S.E. Danesti @seedanesti.bsky.social · 19/09/2026
Interviewer: "Where do you see yourself in 5 years?" Me:
1002049434
Janko Marohnić @janko.io · 16/09/2026
Multiple tools using Rubydex already: Rubocop, Rubydex linter, RubyLens, ArchSpec, Enola... Still eagerly awaiting Ruby LSP release with Rubydex backend 🤞
020
Reposted by Janko Marohnić
Andrew Mason @andrewm.codes · 16/09/2026
New post: I added webmentions to my Bridgetown site. Replies, likes, and reposts from Bluesky can now show up directly under the original post. No comment system, no JavaScript widget, and the site stays completely static. I wrote up how it all works: andrewm.codes/p/adding-web...
andrewm.codes
Adding Webmentions to a Bridgetown Site
How I added webmentions to my static Bridgetown site using webmention.io, Bridgy, and a nightly GitHub Actions job, so replies and likes from Bluesky show up right under my posts.
3103
Reposted by Janko Marohnić
Euruko @euruko.org · 13/09/2026
Last call: EuRuKo 2026 tickets close tomorrow at midnight CEST. @matz.bsky.social opening, @ko1s.bsky.social closing, @headius.bsky.social on JRuby. Brno, Sept 17–18. After tomorrow there's no late registration. 2026.euruko.org
062
Janko Marohnić @janko.io · 11/09/2026
Here is a summary of my frustrations with MariaDB in my past jobs and why I wouldn't recommend it for production. www.reddit.com/r/rails/comm...
reddit.com
janko-m's comment on "Is anyone using Rails with MariaDB?"
Explore this conversation and more from the rails community
031
Reposted by Janko Marohnić
Bozhidar Batsov (a.k.a. Bug) @batsov.net · 10/09/2026
RuboCop 1.91 is out and it's the most interesting release in quite a while. Try some of the new features like `--diff`, `--changed` and `--preview` and read all about the improvements here github.com/rubocop/rubo... #Ruby
github.com
Release RuboCop v1.91.0 · rubocop/rubocop
New features #15631: Add a preview channel for unstable behavior. (@bbatsov) #15627: Add a SARIF formatter. (@bbatsov) #15686: Add AllCops: FailLevel, the configuration equivalent of --fail-level....
074
Reposted by Janko Marohnić
Peter Ullrich @peterullrich.com · 08/09/2026
🚨 Announcing Pushin 🚨 Now officially: I'm announcing Pushin.eu, a git hosting platform built and run entirely in Europe. Think GitHub/GitLab but European, better, and faster. Built with #ElixirLang and #RustLang. peterullrich.com/announcing-p...
peterullrich.com
Announcing Pushin
I'm launching Pushin.eu, a git hosting platform built and run entirely in Europe.
1114449
Janko Marohnić @janko.io · 06/09/2026
For a long time I was trying to figure out whether the solution to my back pain is increasing flexibility, strengthening back & core, improving hip mobility, or doing frequent walks/runs. And now I think the answer is just “yes”.
140
Reposted by Janko Marohnić
Euruko @euruko.org · 04/09/2026
Two weeks out from EuRuKo 2026. Brno, 17–18 September. If you're still deciding, the flights are deciding for you 🎟️ 2026.euruko.org #Ruby #EuRuKo
011
Janko Marohnić @janko.io · 01/09/2026
Booked the jj workshop by Andre and Kasper. I will finally see what all the rave is about 🤞
020
Janko Marohnić @janko.io · 01/09/2026
Cool, you can now just wait for a certain write to be replicated before querying the replica. I can imagine automating this in Active Job, where current WAL state is serialized into the job and waited on. That way it should always be safe to read from replicas in jobs.
310
Reposted by Janko Marohnić
JP Camara @jpcamara.com · 31/08/2026
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.com
SolidQueue Batches: evolution and architecture
When 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...
1125
Reposted by Janko Marohnić
Waldo Jaquith @waldoj.mastodon.social.ap.brid.gy · 30/08/2026
"With a bunch of generous assumptions, legitimate requests are only about 2% of git.kernel.org traffic — everything else are scrapers." (via @nelson people.kernel.org/monsieuricon/cree…
people.kernel.org
Creepy crawlies
Comments
022
Reposted by Janko Marohnić
Euruko @euruko.org · 26/08/2026
𝗦𝗶𝘅 𝘄𝗼𝗿𝗸𝘀𝗵𝗼𝗽𝘀, 𝗼𝗻𝗲 𝗮𝗳𝘁𝗲𝗿𝗻𝗼𝗼𝗻 🛠️ Coding agents, jj instead of git, Koichi Sasada's Ruby Hack Challenge, time zone hell, Bluetooth in Ruby, and C extensions. 18 September in Brno. They run in parallel, so you're picking one – and rooms fill up. 2026.euruko.org/agenda.html #Ruby #EuRuKo
111
Janko Marohnić @janko.io · 26/08/2026
This is the feature I missed the most from fugitive.vim, I finally have it in Zed now 🙌
110
Reposted by Janko Marohnić
Zed @zed.dev · 26/08/2026
🚀 Zed v1.17 is out! Zed now previews CSV, TSV, PSV, and SSV files as interactive tables. You can sort and resize columns, then filter rows by selected values. Thanks HalavicH!
61677
Reposted by Janko Marohnić
Andy Waite @andyw8.bsky.social · 26/08/2026
New post: Using puma-dev with Conductor andywaite.com/2026/08/25/u...
andywaite.com
Using puma-dev with Conductor
puma-dev is a useful tool for Rails developers. It’s a successor to pow, an older tool by Basecamp.
111
Janko Marohnić @janko.io · 25/08/2026
Having also read the linked article, I realized enqueueing background jobs after commit isn't guaranteed. First thought was that SQL-based background libraries implicitly provide the transactional outbox. But at any serious scale a separate DB should be used. karolgalanciak.com/blog/2022/11...
karolgalanciak.com
The inherent unreliability of after_commit callbacks and most service objects’ implementation
Service objects and/or after_commit callbacks are ubiquitous in most real-world Rails applications. Whether it’s a good idea or not (ActiveRecord callbacks - I’m looking at you) is a different story, ...
000
Janko Marohnić @janko.io · 25/08/2026
Lexxy doesn't currently export its *.css files, so I can't import the CSS with Vite. Strange that this hasn't been addressed yet. github.com/basecamp/lex...
github.com
Expose published stylesheets via package.json exports by shved270189 · Pull Request #1105 · basecamp/lexxy
Problem The published CSS files (dist/stylesheets/lexxy.css, lexxy-content.css, lexxy-editor.css, lexxy-variables.css) aren't reachable through package.json exports — the exports map only decla...
100
Reposted by Janko Marohnić
JP Camara @jpcamara.com · 24/08/2026
The docs on SolidQueue batches are… solid 😉 In addition, I wrote up this blog post to dig in a bit further on how to use batches in SolidQueue, including some code inspiration - like splitting a RubyLLM chat into parallel sub agents using batches jpcamara.com/2026/08/24/a...
jpcamara.com
A Guide to using Batches in SolidQueue
SolidQueue is the default queue system shipped with Ruby on Rails. It’s a great choice for your jobs, and works out of the box with Postgres, SQLite and MySQL. It took two and a half years, but as of ...
1135
Janko Marohnić @janko.io · 24/08/2026
Looking at all the security fixes in the latest Rodauth release, I don't think it pays off to implement authentication manually. Security is hard, and if a vulnerability is found in Rails authentication generator, you need to manually patch it in your application. github.com/jeremyevans/...
github.com
Rodauth 2.47.0 Released · jeremyevans rodauth · Discussion #514
Rodauth 2.47.0 has been released! Security Fixes to Address Reported Vulnerabilities There were a large number of reported vulnerabilities that are fixed in this version. While none are as critical...
130
Janko Marohnić @janko.io · 23/08/2026
It turns out having Rodauth render Inertia.js components is pretty simple ✨ github.com/janko/rodaut... github.com/janko/rodaut... I let Claude lead me down the wrong path multiple times, thinking the integration would be more involved. In hindsight, I would've been much faster without AI 😅
0100
Reposted by Janko Marohnić
Cory LaViska @cory.laviska.com · 19/08/2026
Target Multiple Classes with the Class Prefix Selector: .btn-* { … } Yes please! (Coming soon) Great post by @bram.us: www.bram.us/2026/08/20/t...
bram.us
The Future of CSS: Target Multiple Classes with the Class Prefix Selector
To target multiple classes that share the same prefix, you'd typically have to resort to brittle attribute selectors or add extra base classes to your markup. To make things easier, CSS is getting a n...
1195
Reposted by Janko Marohnić
Zed @zed.dev · 15/08/2026
More Git goodness, coming to Zed! github.com/zed-industri...
github.com
Support blaming parent revisions by SomeoneToIgnore · Pull Request #62614 · zed-industries/zed
Closes #42583 Adds more tooltip entries and editor::BlameRevision, editor::BlamePreviousRevision actions to use. Started to highlight gutter blame entries that belong to currently annotated commit....
4461
Reposted by Janko Marohnić
Zed @zed.dev · 12/08/2026
Today we’re introducing Delta. Delta is a multiplayer environment for coding with agents and reviewing what they build, powered by DeltaDB. The first invites to our private beta are going out now. zed.dev/blog/introducing-delta
316217
Reposted by Janko Marohnić
Jean Boussier @byroot.bsky.social · 11/08/2026
I'll probably release the final 3.0.0 version early September, so if you got time please try the RC1 and submit any feedback you may have: github.com/ruby/json/re...
github.com
Release v3.0.0.rc1 · ruby/json
With the removal of the insecure create_additions option, JSON.load and JSON.dump are now safe to use. Them being unsafe by default caused multiple security vulnerabilites in the past. If you did d...
1242
Janko Marohnić @janko.io · 07/08/2026
Got my copy 😍 The 2nd edition contains chapters on concurrency (incl. Ractors) static typing (RBS, Sorbet) and code optimization (profiling, JIT) – straight from a Ruby committer. I admire Jeremy Evans for his dedication, though being a technical reviewer isn’t the easiest either 😅
Me holding the Polished Ruby Programming book
2121
Reposted by Janko Marohnić
Bozhidar Batsov (a.k.a. Bug) @batsov.net · 05/08/2026
RuboCop 1.89 is out with improved rubydex integration that unlocks several project-wide analysis opportunities metaredux.com/posts/2026/0... Enjoy! #Ruby
metaredux.com
RuboCop 1.89: Project-Wide Analysis with Rubydex
RuboCop 1.89 is out, and it comes with the usual assortment of new cops and bug fixes. But there’s one theme running through this release that I’m particularly excited about, and that’s what I want to...
073
Reposted by Janko Marohnić
GitHub @github.com · 31/07/2026
Large changes are hard to review. Smaller pull requests make them easier to ship. Stacked PRs are now on GitHub. docs.github.com/en/pull-requests/ho…
2496
Reposted by Janko Marohnić
Matija Marohnić @silvenon.com · 31/07/2026
$ git history fixup <commit> is short for: $ git commit --fixup <commit> $ git rebase <commit>^ --autostash and it’s also instant AF
0101
Reposted by Janko Marohnić
André Arko @indirect.io · 31/07/2026
I wrote an update on the dispute with Ruby Central over Bundler and RubyGems. I'm sad it's reached this point, especially since Ruby Central's conferences are a big part of what convinced me to join the Ruby community back in the day. andre.arko.net/2026/07/30/rub…
andre.arko.net
Ruby Central's Destructive Legacy
At conferences and meetups, and in conversations online, many Ruby developers have asked me about Ruby Central and my disagreement with them. This post is my attempt to answer the questions I’ve been getting over and over, covering: 1) what is Ruby Central doing now? 2) has the dispute over Bundler…
26826
Reposted by Janko Marohnić
Anil Dash @anildash.com · 27/07/2026
Just in case you still use any Basecamp products, DHH is crashing out about his AI product gently pointing out that it’s bad for him to have extermination fantasies about the Roma people.
DHH tweet saying “This is why we need competition and open weights in Al. Imagine a world where only Anthropic sat as the moral arbiter of acceptable speech. Fucking ridiculous. (Grok of course did it no problem, same too with Kimi K).” when presented with his blog post using a slur about the Roma people.
862286643
Reposted by Janko Marohnić
Brandon Weaver @baweaver.bsky.social · 30/07/2026
Introducing GemCP: MCP tools for RubyGems. Ask your AI agent about gem compatibility, dependencies, versions, and ownership with data straight from RubyGems.org. `gem install gemcp` and add it to your MCP config. github.com/baweaver/gemcp
github.com
296
Reposted by Janko Marohnić
Victor Shepelev 🇺🇦 @zverok.bsky.social · 30/07/2026
There is a heated discussion at /r/ruby around this article: po-ru.com/2026/07/29/i... My hot take on the matter is the (half-imaginary) MINASWAN principle is an artifact of much simpler times. Thread, out of nowhere:
po-ru.com
It doesn’t matter whether “Matz is nice”
I’ve met Matz once, I think, at EuRuKo in Krakow in 2010. We chatted briefly in Japanese. He seemed nice, but also quiet and reserved. At the time, he didn’t speak much English; perhaps he could speak...
131
Janko Marohnić @janko.io · 29/07/2026
Blocking unfuzzed libvips loaders started being the default in ImageProcessing 2.0, but I didn't know how to push it over the finish line for Active Storage. Luckily for me, @flavorjon.es did his homework 👌
000
Reposted by Janko Marohnić
Mike Dalessio @flavorjon.es · 29/07/2026
Upgrade Rails immediately, kids, this is a big one. github.com/rails/rails/...
github.com
Possible arbitrary file read and remote code execution in Active Storage variant processing
### Impact In its default configuration, a Rails application that displays image variants may allow an unauthenticated attacker to read arbitrary files from the server, including the process envi...
14930
Reposted by Janko Marohnić
Kyle Shevlin (he/him) @kyleshevl.in · 28/07/2026
Genuinely, I find myself working harder. One of my super powers was I was faster than you at designing & writing what I needed to. I needed that time saved to be able to regulate, avoid burnout. Now that’s taken from me. I can’t outpace you. You (proverbial) got to catch up to me for free.
2183
Reposted by Janko Marohnić
Tekin Süleyman ☕️ @tekin.co.uk · 18/07/2026
Rails' embarrassing racist daddy is now calling for the ethnic cleansing of Europe over on his blog, but it's fine because he's nice to people at conferences.
1154
Reposted by Janko Marohnić
Euruko @euruko.org · 15/07/2026
Come to EuRuKo together – with friends, colleagues, or your whole team. 🚀 You can save when you come together: 3 tickets – save €100 5 tickets – save €250 10 tickets – save €660. 📍 September 17–18. 2026.euruko.org #EuRuKo2026 #RubyCommunity #Brno
022
Reposted by Janko Marohnić
Marco Roth @marcoroth.dev · 16/07/2026
I just released Insta, a new snapshot testing library for Ruby, live at RubyConf in Las Vegas! Extracted from Herb's test suite and inspired by @mitsuhiko.at's fantastic insta library for Rust. `gem "insta"`
2298
Reposted by Janko Marohnić
Zed @zed.dev · 15/07/2026
🚀 Zed v1.11 is out! Zed now has dedicated Staged Changes and Unstaged Changes multibuffers where you can review, stage, unstage, or restore individual hunks. Thanks drbh!
31125
Reposted by Janko Marohnić
Radan @radan.dev · 15/07/2026
Broadcasting Turbo refresh adds an extra round trip and a debounce delay. Broadcasting the content directly fixes that, but introduces a race condition. Here's how to keep fast, immediate updates without race conditions: radan.dev/articles/tur...
radan.dev
When broadcasting a Turbo refresh is not enough: faster UX with versioned immediate updates
The simplest way to make a page collaborative with Hotwire and Rails is to subscribe to changes and broadcast a refresh when relevant models update.
031
Janko Marohnić @janko.io · 13/07/2026
Shrine 3.9.0 released, mostly polishing some rough edges and increasing compatibility between plugins. shrinerb.com/docs/release... And we've reached zero issues again after a long time 🤘🏻
shrinerb.com
Shrine 3.9.0 | Shrine
New features
031
Janko Marohnić @janko.io · 11/07/2026
Just upgraded Shrine demo apps & wiki from Uppy v2 to v5, Rails 6.x to 8.x, replaced Webpacker with importmaps, and upgraded Docusaurus v2 => v3. Something that would be a PITA to do manually was done in a breeze by Claude Code 🥂
020
Reposted by Janko Marohnić
Hans Schnedlitz @hansschnedlitz.com · 09/07/2026
RubyEvents Guides is now live. Over the last few months, I talked to Rubyists who want to help the community keep going. Some want to restart a local meetup. Some are organizing their first small conference. Some already run events and want to make the next one better.
31410
Janko Marohnić @janko.io · 04/07/2026
People encouraging investing forget to mention that inflation is also a compounding negative force. "If you invest $100/mo for 10 years with 10% annual return, you will have put in $12k but would have ~$20k total". Adjusted for inflation in Czechia, that would be ~$10k invested and ~$13k total.
100