Last week I found a backup of the very last PHP app I ever wrote. The backup was from 2009, but the app itself was written in 2007 - 18 years ago!
Back then I was in my late teens and the world was (or at least felt) completely different. Out of nostalgia, I spent some time exploring the source...
15 min read
Building Twice: A clone of Once
When Campfire - the first Once product - came out, a few of us at Ruby Zagreb pitched in to buy a copy.
Prometheus had brought fire from Mount Olympus, and we came to see the blaze. We were finally seeing how the people at 37signals - the birthplace of Rails - build Rails apps. And as a bonus,...
12 min read
Adding MCP to a Rails app
Last week we had an AI hackathon at work during which we added an MCP server to our Rails app. This was much easier than I expected, the result was both impressive and scary, and I learned a few things about MCP that I didn't expect.Goal
My team wanted to help our support team by automating some...
16 min read
Building Simpl息
This week I went for a coffee with a friend. As we talked the topic of hobbies came up. I mentioned that I was having a lot of fun working on a toy project over the past week, and then I showed it to him.
Him: So you are dabbling in React?
Me: No, this is just Rails.
Him: Which libraries did you...
19 min read
Monitoring ActionCable
A few weeks ago I was woken up with the following message "Hey, devices are randomly disconnecting from WebSockets can you come online and help?".
Usually, when a widespread problem like this occurs out of the blue, my first goal is to make the app mostly operational again and my second goal is...
9 min read
Why does Rails put the type column first in an index for a polymorphic association?
Last week, I had a discussion with a coworker about how Rails indexes columns used in polymorphic associations. He thought that the order of columns in the index should be flipped - instead of indexing by type and ID, it should index by ID and type - as that way the most restrictive column is...
4 min read
Running Campfire behind traefik
I rent a bare metal server from Scaleway where I host all my apps. For me, that's much more economical than running multiple small VPS boxes. 50€ a month buys me 2TB of disk space, 64GB of RAM and an 4 core / 8 thread CPU on which I can host two or three dozen apps. Compare that to AWS or...
24 min read
Deconstructing Action Cable
I knew what Action Cable was about and roughly how it worked since it was released. But lately I've developed a much deeper understanding of it because I had to extend it and explain its internals to others.
The following is how I explained Action Cable to myself. I took a top-down approach,...
10 min read
Tracking online presence with ActionCable
This month I worked on tracking when a device connected and disconnected to a WebSocket backed with ActionCable. At first, this seemed like a simple problem to solve, but it turned out to be much more complicated.
I started with a simple solution, which was to mark a Device as being online in...
19 min read
Rails World
It was Wednesday morning and I got up even earlier than I usually do because I had to be on a plain to Amsterdam in a few hours. I haven't been to Amsterdam since 2019 when I briefly meandered through it's streets on my way to EuRuKo in Rotterdam. This time I was going there for Rails World which...
7 min read
From Markdown to ActionText
I started this iteration of my blog because I grew dissatisfied with Medium. Like anyone migrating from any one platform to another I requested an export of my blog posts from them and got back a ZIP file containing HTML files.
The first thing that stood out was a lack of any media files - there...
7 min read
Vanilla Rails view components with partials
Many projects I work on have some kind of view component that is repeated multiple times in the same view, or is present in multiple different views. These view components can be anything that has a specific styling, JavaScript specific attributes (like Stimulus controllers), rendering logic, and...