Janko Marohnić
janko.io
Janko Marohnić
@janko.io
Senior Ruby engineer, father, vegan. Creator of Shrine, rodauth-rails and vim-test.
Reposted by Janko Marohnić
🌶️ #nobuild is a solo developer philosophy masquerading as universal advice.

The append-only CSS problem that drove teams to Tailwind? Nobuild doesn't solve it. It ignores it.

Let me make the case for #lowbuild instead...
December 15, 2025 at 8:32 PM
Wanted to write an article, but can't install Jekyll anymore because EventMachine fails to build native extensions.

I guess it's time to migrate to Bridgetown 🙂
December 12, 2025 at 11:20 PM
Reposted by Janko Marohnić
Have you noticed how great the Ruby docs looks like for the master?
docs.ruby-lang.org/en/master/

Thank you @st0012.dev and the entire team contributing to RDoc for these improvements.
December 9, 2025 at 8:30 AM
@fractaledmind.bsky.social Cool idea to prefix affordance classes with ui-* from your article 👍

We're not using distinct naming, which makes it harder to decouple from Bootstrap. I think this plus components is our ticket out of those legacy shackles.

BTW, you're missing a Bluesky profile link 😉
December 11, 2025 at 10:41 AM
Ever forget whether it's "change_table" or "alter_table", "remove_column" or "drop_column", "set_column_null" or "change_column_null"?

You don't? Well, I do 😄 So, I thought it would be cool if Ruby LSP could autocomplete schema statements in migrations ✨

github.com/Shopify/ruby...
December 10, 2025 at 11:22 PM
Reposted by Janko Marohnić
Fabulous post from @robzolkos.com

www.zolkos.com/2025/12/03/v...

We use a lot of these techniques in Web Awesome.

Color-mix, :has, css nesting, layers, etc

CSS and HTML continue to get more and more powerful , and we all benefit as a result.

A rising tide lifts all boats.
December 4, 2025 at 7:39 AM
Reposted by Janko Marohnić
South Park is no longer watchable if you’re not from USA.
December 3, 2025 at 9:32 PM
Reposted by Janko Marohnić
This is just what it’s like to review PRs in GitHub now. There’s only a small chance to see the code, it’s not guaranteed — assuming you can even load the page. Well done GitHub. 👏 You had one job.
December 2, 2025 at 12:07 PM
@vinistock.bsky.social @st0012.dev I'm implementing autocompletion for schema statements in AR migration files.

However, having trouble detecting whether I'm in a migration file. E.g. for `class CreateUsers < AR::Migration[8.1]`, `index.resolve("CreateUsers", []).parent_class` returns `::Object`.
December 1, 2025 at 8:33 AM
I never used Solargraph, and when Ruby LSP came along I saw it as a modern successor, but didn't realize people are missing YARD support.

I haven't used YARD in any of my gems, and stdlib doesn't use it. I believe YARD annotations are powerful, but aiming for (inline) RBS seems more future-proof.
November 25, 2025 at 8:49 PM
Excited for the new Universal Indexer 🤞

I found it interesting how Ruby LSP's indexer is written almost as a separate gem, I'm curious what the reworked indexer will improve.
Some highlights:
November 25, 2025 at 8:39 PM
@adamwathan.com The FAQ for Tailwind Plus doesn't mention the new custom elements package. I almost wasn't sure whether it's included in the license, even though I knew I read it in the article 😄

I'm considering buying Tailwind Plus almost exclusively for that library, as we don't use React/Vue.
November 16, 2025 at 11:37 AM
Workspace symbol search on Ruby LSP should be working much smoother now on 0.26.3, @vinistock.bsky.social and I made a bunch of fixes recently 🤘

github.com/Shopify/ruby...
github.com/Shopify/ruby...
github.com/Shopify/ruby...
November 13, 2025 at 11:42 AM
Reposted by Janko Marohnić
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
Reposted by Janko Marohnić
The Ruby extension for @zed.dev just got better! Huge thanks to @marcoroth.dev for adding `zed-comment` support (including all ERB languages) and RBS inline syntax highlighting!

You can find full release notes at github.com/zed-extensio...
Release v0.16.0 · zed-extensions/ruby
What's Changed Add support for zed-comment by @marcoroth in #203 chore(deps): update pnpm to v10.20.0 by @renovate[bot] in #201 Add zed-comment support for all ERB languages by @marcoroth in #205 ...
github.com
November 11, 2025 at 11:20 AM
Reposted by Janko Marohnić
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 can’t accept importmap-rails downloading and vendoring JS packages. I feel like I’m back in the pre-Sprockets era.
October 31, 2025 at 3:05 PM
...and it's up 🤘

github.com/Shopify/ruby...
October 28, 2025 at 8:14 PM
Reposted by Janko Marohnić
I'm excited to share that I became a Ruby committer today! A 10 year goal since RubyKaigi 2015.
Huge thanks to @bernsteinbear.com for the JIT mentorship and nomination, @k0kubun.com for years of guidance, and everyone who supported me along the way.
Looking forward to improving Ruby and its DX!
October 28, 2025 at 12:11 PM
Inline RBS is the only gradual typing for Ruby I can get behind.

Sorbet’s RBI was way too verbose, as it had to be valid Ruby, but at least it was inline. RBS was more compact, but required separate files.

Inline RBS is just comments, and I imagine it has advantages over YARD.
October 28, 2025 at 10:10 AM
It seems I've developed a newfound interest for language servers 🙂

They have just unlocked for me recently. It started with a contribution to Stimulus LSP, afterwards I wanted to fix issues I've been experiencing with Ruby LSP.

Kudos to Shopify for solving difficult problems like indexing 🙇‍♂️
October 27, 2025 at 6:24 AM
With all Ruby LSP fixes for workspace symbol search underway, I would like to take a stab at adding a new feature.

Rails.vim had a neat feature where you can follow render calls in view templates via `gf`. I'm exploring adding the same feature to Ruby LSP Rails via "go to definition" 🤞
October 27, 2025 at 6:19 AM
Reposted by Janko Marohnić
What comes through loud and clear from Shan is the lack of respect for open source authors. She actually says it’s none of my business why I was removed from rubygems. I don’t know where you got the audacity but you should put it back. youtu.be/nKpo68g9dEk?...
Technology for Humans: Shan Cureton
YouTube video by reinteractive
youtu.be
October 25, 2025 at 4:16 AM
We're using Chamber for application secrets/settings at work, and probably the only that's keeping me from switching to Rails credentials is the ability to override any value with an environment variable.

That's really a killer feature, both Chamber and AnyConfig support it.
October 24, 2025 at 12:38 PM
So, the reason why project symbol search isn't working reliably in Zed is that Ruby LSP:

1. returns malformed results for method aliases
2. doesn't support request cancellation (Zed doesn't debounce atm)
3. searches gems as well, which is 3.5x slower, and adds up because of 2.
October 22, 2025 at 5:37 PM