Joel Drapper ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡บ๐Ÿ‡ฆ's Avatar

Joel Drapper ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡บ๐Ÿ‡ฆ

@joel.drapper.me

Ruby/TypeScript/CSS engineer from the UK. https://joel.drapper.me Iโ€™m building a Ruby/SQLite serverlesslessness framework @yippee.fun. I also maintain the Ruby gems strict_ivars, literal and phlex and I co-host @rooftopruby.com.

1,820 Followers  |  916 Following  |  1,982 Posts  |  Joined: 24.10.2024  |  2.189

Latest posts by joel.drapper.me on Bluesky

This looks like it will reduce battery life by about 37%.

05.08.2025 19:04 โ€” ๐Ÿ‘ 2    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Brilliant. Iโ€™m going to try a bunch of my libraries with it now Zeitwerk is supported. โค๏ธ

03.08.2025 18:50 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Good idea. I can see why you might want something like this, especially if you canโ€™t get that value at boot time for the constant. But it definitely adds a lot of confusion. Not worth the cost.

03.08.2025 18:48 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I would get this optimisation by assigning an interpolated regex to a constant (without the /o). Then you can re-use the same instance again and again with the constant interpolated content.

That feels like a good mental model for what /o is doing, but with significantly more indirection.

03.08.2025 10:07 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Agreed. Iโ€™m working on it. Will have more to share soon.

03.08.2025 08:52 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Because it allows you to name small procedures and compose them together, allowing you to think at a higher level of abstraction.

01.08.2025 11:28 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Do you have 15 methods that take `(name, address, number, state)` or do you make an object?

If youโ€™re going to make an object, you could have the methods on the module pass that object around, or you could just put all the methods on the object itself. That object is the service object.

01.08.2025 10:18 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Okay, but now have that method call 15 private methods that all need to work with the `name`. Sure, you could just put all those methods on a module, but what if you need to pass `name` and `address` and `number` and some state that needs to track from one method to another?

01.08.2025 10:18 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
screenshot of the release PR for SvelteKit remote functions

screenshot of the release PR for SvelteKit remote functions

we just released SvelteKit remote functions. feel like 'minor change' undersells it a little tbh

โœ… await in components svelte.dev/docs/svelte/...
โœ… remote functions svelte.dev/docs/kit/rem...
๐Ÿ”œ async SSR

truly can't wait to ship the rest of this stuff

31.07.2025 21:12 โ€” ๐Ÿ‘ 219    ๐Ÿ” 30    ๐Ÿ’ฌ 20    ๐Ÿ“Œ 12

Incredibly sad news. Piotr was brilliant. ๐Ÿ’”

31.07.2025 16:45 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Because React is badly designed in my opinion. I typically use a web component (custom HTML element) to mount small svelte components. But I think Inertia looks great if you can go all in on a Svelte SPA.

31.07.2025 11:10 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Iโ€™ve noticed this too but I prefer Bluesky.

31.07.2025 09:36 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Iโ€™m assuming itโ€™s a recording studio.

31.07.2025 09:20 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Itโ€™s amazing. ๐Ÿคฉ

30.07.2025 21:49 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Link?

30.07.2025 14:28 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I think Stimulus may have been somewhat useful before web components and before some of the new HTML/CSS capabilities were available.

jQuery was also useful before querySelector and Flash was useful before <video>.

Its time has come and gone.

30.07.2025 14:24 โ€” ๐Ÿ‘ 1    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

7. You donโ€™t need Stimulus for โ€œsprinklesโ€, since custom HTML elements allow us to easily attach behaviour to elements.
8. You donโ€™t need Stimulus for popovers, dialogs, drop-downs, details-reveals, carousels, toggles, etc. You can do all this with just HTML and CSS now.

30.07.2025 12:40 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

1. Stimulus is larger than Svelte.
2. You need to write more code in Stimulus.
3. Stimulus has no templating support.
4. Stimulus has no state management, so you need to handle callbacks by hand.
5. Stimulus cannot coordinate asynchronous state.
6. Stimulus is procedural, Svelte is object-oriented.

30.07.2025 12:40 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Basically as soon as you need state or templating, and probably as soon as you need to make a fetch request.

With popovers, dialogs, details, invokers, checkboxes, labels, and the CSS `:has` selector, thereโ€™s a ton of stuff you can do with HTML and CSS only.

30.07.2025 12:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Show me a Stimulus controller and I will rewrite it in either vanilla HTML/CSS/JS or Svelte.

The result will be smaller, faster, more maintainable, more flexible and easier to understand. The JS bundle will be smaller too.

I cannot understand why anyone uses Stimulus today. It provides no value.

30.07.2025 12:17 โ€” ๐Ÿ‘ 10    ๐Ÿ” 0    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 1
Preview
Introducing the Herb Linter, Formatter, and a Vision for the Future of Rails Views Marco Roth - marcoroth.dev

Love what Marco is doing to push the ecosystem forwards. marcoroth.dev/posts/rails...

29.07.2025 18:45 โ€” ๐Ÿ‘ 18    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Release 2.4.0.beta2 ยท yippee-fun/phlex This new beta brings significant improvements to the compiler as well as many bug fixes.

The new Phlex beta (2.4.0.beta2) now has a significantly improved compiler and now uses source maps to map exceptions back to the original source location. github.com/yippee-fun/p...

29.07.2025 16:41 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I will always recommend using Mise and OrbStack in the same way I recommend using Vim motions.

**Eventually.**

But we need friendlier tools for beginners and this Mac app looks *amazing* for that. Great work @afomera.dev ๐Ÿ‘

Tricky command line interfaces shouldnโ€™t be a blocker.

29.07.2025 11:35 โ€” ๐Ÿ‘ 11    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Something like this

28.07.2025 21:14 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

You can already use a very small (maybe 10 lines) web component instead of turbo mount. Then it feels native to HTML.

28.07.2025 21:07 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

This is working really well. Itโ€™s much nicer than having to keep two separate packages in sync.

28.07.2025 19:55 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Wow! It only took them a decade or so to add three lines of code to actually respect user tab preferences. They had the setting, just ignored it for the last 10 plus years.

28.07.2025 19:45 โ€” ๐Ÿ‘ 7    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1

You know itโ€™s almost September, right?

27.07.2025 09:03 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The reason for doing this was I have a package that includes Ruby, TypeScript and CSS that I want to install all at once.

25.07.2025 16:41 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I installed a Ruby gem via NPM. Howโ€™s your morning going?

25.07.2025 10:36 โ€” ๐Ÿ‘ 14    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@joel.drapper.me is following 20 prominent accounts