Sign in

Benedikt Deicke

@benediktdeicke.com
1.9K followers 194 following 266 posts

💻 Co-founder / Engineering at @userlist.com 🎙️ Co-host at slowandsteadypodcast.com 🛠️ Ruby, Rails, Ember.js, PostgreSQL ❤️ Loves music, food, and cooking 🥁 Plays the drums benediktdeicke.com

PostsRepliesMedia
Benedikt Deicke @benediktdeicke.com · 01/10/2026
On August 1st, 2019, @brianrhea.com and I published the first episode of Slow & Steady. A lot has happened since, including the addition of @raae.dev as a co-host and Brian leaving eventually 🤯 Today, Brian joins us to celebrate episode #250 of our humble podcast 🥳 share.transistor.fm/s/8a5d1de7
share.transistor.fm
Quarter of a Thousand | Slow & Steady
For this milestone episode, Benedikt, Benedicte, and Brian take a look back on their journeys.
010
Reposted by Benedikt Deicke
Jason Cohen @asmartbear.com · 12/09/2026
It’s never too late to admit you made a mistake. It’s more powerful to admit a mistake, than to persist when everyone else knows it’s a mistake. It’s a mistake either way, but only one way means you’re either oblivious or disingenuous.
081
Benedikt Deicke @benediktdeicke.com · 09/09/2026
Yesterday has been crazy, stressful, and an emotional roller coaster. The joys of being an entrepreneur 🎢 Still, I’m glad that for the most part, we’ve built a company that we enjoy working at, despite the challenges thrown at us regularly 🤗
071
Reposted by Benedikt Deicke
Patrick Donahue @levelbrook.bsky.social · 05/09/2026
Every schema constraint you skip becomes an if statement in six places, and one of them will be missing. Put it in the database where it cannot be forgotten. #RubyOnRails #Rails #PostgreSQL
053
Reposted by Benedikt Deicke
Jason Cohen @asmartbear.com · 10/08/2026
After more than a year of labor, my book 𝘏𝘪𝘥𝘥𝘦𝘯 𝘔𝘶𝘭𝘵𝘪𝘱𝘭𝘪𝘦𝘳𝘴 has launched! It's all my best ideas -- and best writing -- on how to grow your company with your existing budget and team. And yes, I read the audiobook myself. :-) (1/5)
7367
Benedikt Deicke @benediktdeicke.com · 10/08/2026
Yeah, was planning to drop off the luggage and then go explore. Thanks for the tips!
000
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 10/08/2026
Top 5 tips for managing B2B email marketing (as someone asked today): ▪️Don't be afraid to email more ▪️Treat this as a process with continuous improvement/expansion, rather than a one-off project ▪️Be helpful ▪️Keep your messages short and focused ▪️DON'T OVERTHINK Simple, not easy.
021
Benedikt Deicke @benediktdeicke.com · 10/08/2026
I’ve got a super early 7am flight to Oslo on Friday and have a couple of hours to kill before checkin and an evening event 🇳🇴 Any recommendations on how to spend those hours? 😄
210
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 07/08/2026
Selling an ESP is like selling a mattress. A mattress is bulky, hard to replace, essential for your sleep. It's unlikely you'll rave about your mattress or post about it on social media. Replacing a mattress won't make you sexy/healthy/rich. It's just a mattress. It's just an ESP.
011
Benedikt Deicke @benediktdeicke.com · 06/08/2026
Don't worry about me misunderstanding too much. I was looking at this while having breakfast after not sleeping super well 😂
010
Benedikt Deicke @benediktdeicke.com · 06/08/2026
Ooh, got it. I guess I should have read the README properly. The "pass in a list of classes to remove" case didn't come to mind. Somehow I assumed it was a Ruby version of DOMTokenList, which is just a list with a couple methods to add/remove/toggle.
110
Benedikt Deicke @benediktdeicke.com · 06/08/2026
Looking at the history, it looks like simple methods where the starting point 4 years ago. Even more curios now why this stopped working 😄
100
Benedikt Deicke @benediktdeicke.com · 06/08/2026
Not a judgment, just curious about the design requirements/decisions: The operation classes feel complicated vs. just simple methods on the Classlist class. What’s the reasoning behind that?
100
Reposted by Benedikt Deicke
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 Benedikt Deicke
Jane Portman @uibreakfast.com · 05/08/2026
Here's exactly why consultants are paid to do their thing. Only a fraction of SaaS companies have dedication, resources, and knowledge to expand their lifecycle marketing in a systemic way. Also, who makes comments this long and awesome?
031
Reposted by Benedikt Deicke
Dmytro Krasun @dmytrokrasun.com · 05/08/2026
I will likely not buy from you if you have a free or cheap price and I can’t explain how you can make money and make it sustainable.
011
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 04/08/2026
Did you know that the Split Test node isn't just for A/B tests? It's a random group generator, splitting users into up to 5 paths at whatever percentages you choose. Split testing is the obvious use: create different user journeys, then compare using email metrics or conversion goals. Classic.
111
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 03/08/2026
What makes a perfect welcome email? (hundreds of companies still obsess about a single email, while forgetting about the rest of their lifecycle) But seriously?
131
Benedikt Deicke @benediktdeicke.com · 02/08/2026
I mean… the song is a banger in itself, but I only now start to appreciate the dynamics change between verse and chorus, as well as the challenge of figuring out the Interlude section 🤘🥁 www.youtube.com/watch?v=D9KFC...
youtube.com
Kelly Clarkson - Since U Been Gone | Drum Cover | Domino Santantonio | Thomann
YouTube video by Thomann's Drum Bash
010
Benedikt Deicke @benediktdeicke.com · 02/08/2026
As a metalhead who likes to play the drums (but is intermediate level… at best), most of the music I love and listen to is way too hard for me to play 😩 This week I stumbled upon transcription for Since U Been Gone by Kelly Clarkson, and I'm having way too much fun with it than I care to admit 🤣
120
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 31/07/2026
This January we offered a review call to all paying customers, and most people who replied were newly added team members. They didn't know much about @userlist.com, or what's happening in their accounts. This blew our mind. So we set up a simple workflow (took me 15 minutes).
121
Benedikt Deicke @benediktdeicke.com · 31/07/2026
Working from home in a fully remote company means that I don’t have a commute 😎 That’s great… but it also means that there isn’t a good time to “wind down” 😵‍💫 However, I realized cooking dinner is my way to do this these days 👨‍🍳
070
Reposted by Benedikt Deicke
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
Benedikt Deicke @benediktdeicke.com · 29/07/2026
Features we're adding to @userlist.com's new theme editor, that nobody will ever appreciate, but make me very happy: When saving theme schemas, server side validations will render inline in the embedded code editor 🤩
150
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 29/07/2026
"Now that I have user onboarding in place, what else can I do?" Your best next step is: a workflow for your paying customers. It runs at a slow pace (every 1-2 weeks) and combines educational content, feature nudges, and customer loyalty interventions (asking for referrals, reviews, etc).
131
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 27/07/2026
Software companies overthink email marketing in the same way we overthink social media. A single post won’t impact your LinkedIn account. A hundred of them might. A single email won’t impact your growth. A hundred of them might. Zero emails… Safe bet. #bdtpblurbs #emailmarketing
021
Benedikt Deicke @benediktdeicke.com · 27/07/2026
We love it, a lot of our customers and friends love it, but there's one problems: It's an awkward thing to offer to someone when we screwed up and want to apologize 😅
000
Benedikt Deicke @benediktdeicke.com · 27/07/2026
My co-founder @uibreakfast.com and I are "recovering perfectionists". To remind us to not chase perfection for forever, we established "Better Done Than Perfect" as our mantra. It went as far as naming our podcast after it, creating merch with the slogan on it, and her getting a "b.d.t.p." tattoo.
131
Benedikt Deicke @benediktdeicke.com · 25/07/2026
Yup, we’re in agreement about that.
000
Benedikt Deicke @benediktdeicke.com · 25/07/2026
Yeah, true. But to be honest, we already moved all data storage away years ago (Redis and PostgreSQL), so it’s just the dynos at this point.
100
Benedikt Deicke @benediktdeicke.com · 25/07/2026
Exactly. Terraform is just code.
100
Benedikt Deicke @benediktdeicke.com · 24/07/2026
Yeah, it helped a lot to figure this out and get things up and running
010
Benedikt Deicke @benediktdeicke.com · 24/07/2026
Getting my feet wet with Terraform and AWS so we potentially, maybe, can migrate off of Heroku… Still a bit intimidated by the thought (and the complexity), but also intrigued by the new possibilities 👀
330
Benedikt Deicke @benediktdeicke.com · 23/07/2026
All of those 😂 github.com/rails/rails/... At this point it's one me that they're stale… eventually stopped caring and used our own monkey patches 🙃 I think one part of the problem is that Arel isn't even consistently used inside Rails itself. For example, all the upsert/insert stuff bypasses it.
github.com
020
Benedikt Deicke @benediktdeicke.com · 23/07/2026
Yes 💯 I’d love to have Arel as a public API, but related PRs are hard to get merged.
100
Benedikt Deicke @benediktdeicke.com · 22/07/2026
No, just calling freeze on the object itself and it's instance variables.
000
Benedikt Deicke @benediktdeicke.com · 22/07/2026
Why? I'm wondering if I can cache a larger data structure and reuse it between classes to minimize the overhead of building it from scratch all the time. Let's see if and how that works out 😅
020
Benedikt Deicke @benediktdeicke.com · 22/07/2026
When writing classes in Ruby, I've always been leaning towards minimal interfaces, and exposing as little as internal state as possible 🔒 This week, for the first time in my 20+ year career of writing Ruby, I went a bit further and changed a class to freeze itself after initialization 🧊
220
Reposted by Benedikt Deicke
Michael Koper @michaelkoper.com · 21/07/2026
see indie hackers make this mistake all the time. The advice is: solve your own problem, then find more people like you. The problem? You probably wouldn't pay $50/month to solve that problem, so people like you probably won't either.
191
Benedikt Deicke @benediktdeicke.com · 20/07/2026
On the last episode of Slow & Steady, I talked about why it's important to remind people of who you are when emailing your list after being quiet for a while. People will just forget you. Quickly. You have to be very explicit to help them remember.
000
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 14/07/2026
Time delays in @userlist.com now support advanced calendar settings. E.g. the 10th of the month, the first Monday, or the second Tuesday in March. Now you can send messages related to billing cycles, monthly check-ins, or annual reminders landing on a specific day. Give it a try in your workflows.
032
Benedikt Deicke @benediktdeicke.com · 10/07/2026
One unexpected side effect of adding full WYSIWYG editing to Userlist: We now have fairly decent support for right-to-left languages in our editor 😊
020
Benedikt Deicke @benediktdeicke.com · 06/07/2026
I use it occasionally to extract values out of larger data structures. This one is a good example. Pattern matching makes it pretty succinct.
def event_name
  conditions in { all: [*, { equals: [{ event_value: ['name'] }, { constant_value: [name] }] }, *] }

  name
end
010
Benedikt Deicke @benediktdeicke.com · 04/07/2026
Starting Userlist merch production with my nieces 🤣
030
Benedikt Deicke @benediktdeicke.com · 03/07/2026
The hardest part of improving existing features is figuring out a smooth transition path from the old to the new way of doing things so there are no interruptions in production 🙈
030
Benedikt Deicke @benediktdeicke.com · 01/07/2026
Customer facing thing we worked on lately that nobody will ever actively notice: Improved server side validation for conditions, recurring rules, and workflow tree nodes 🙃
010
Benedikt Deicke @benediktdeicke.com · 29/06/2026
We're in year 9 of working on @userlist.com and some days it feels like we're way behind on our goals and ambitions 🥵 However, if you'd told my old self from back when we're started about where we're at now, my mind would've be blown 🤯
0101
Reposted by Benedikt Deicke
Jane Portman @uibreakfast.com · 25/06/2026
Still can't find time to set up your lifecycle emails? We're stoked to announce a new lineup of done-for-you services at @userlist.com 🔥 We refreshed the existing packages that have been running for years, and added a few new ones. Check'em out: userlist.com/services/
042
Benedikt Deicke @benediktdeicke.com · 19/06/2026
It might be a bit esoteric, but I'd like to keep authentication in the auth server entirely. To the SPA it shouldn't matter how they authenticate (password, SSO, passkey, ...) So even with the email verification, that would need to happen on the auth server, too.
110
Benedikt Deicke @benediktdeicke.com · 19/06/2026
I think that leaves us with using an iframe in a modal? But that comes with cross-domain issues and X-Frame-Options fiddling. Doesn't feel great either 😐 Anyone got any ideas, suggestions, or experiences from building this yourself? 😄
100