Sign in

Christoph Lupprich

@christoph.luppri.ch
163 followers 456 following 169 posts

Father of two. Freelance software engineer. Avid runner. Leave this world a little better than you found it. #Ruby #RubyOnRails #ElixirLang #Running

PostsRepliesMedia
Christoph Lupprich @christoph.luppri.ch · 08/06/2026
Who would've thought I'd actually enjoy writing JavaScript - with Stimulus, mind you:
110
Christoph Lupprich @christoph.luppri.ch · 07/05/2026
Freelancers - what's your time tracker? Harvest went crazy with pricing and I'm out. Just need a timer with multi-client/project support, custom rates, and invoice tracking. Nothing more.
410
Reposted by Christoph Lupprich
Tyler A. Young ⚗️🧑🏻‍💻 @tylerayoung.com · 06/04/2026
A former coworker with 8 years of #ElixirLang experience is looking for work. I can vouch for him being a careful, thorough engineer, and a real "manager of one." If he builds something, you can be confident it'll be solid and well thought out. Reach out here: www.linkedin.com/in/kylevsteg...
linkedin.com
Kyle Steger - Felt | LinkedIn
Experience: Felt · Education: Eastern Connecticut State University · Location: Milford · 460 connections on LinkedIn. View Kyle Steger’s profile on LinkedIn, a professional community of 1 billion memb...
0810
Reposted by Christoph Lupprich
Mike Perham :sidekiq: @getajobmike.ruby.social.ap.brid.gy · 01/04/2026
Mysterious warning to Ruby app maintainers: “bundle update rack” asap.
3109
Reposted by Christoph Lupprich
Brad Gessler @bradgessler.com · 08/02/2026
I got tired of seeing people complain “RSpec and factories takes 14 min to run, minitest and takes 5s” so I’m starting to chip away at it. First order of business: created FixtureBot after figuring out I use FactoryBot not because of factories, but because I like the syntax. Might try sus next.
beautifulruby.com
Don't throw the specs out with the factories
FixtureBot gives you the speed of fixtures with the syntax of factories
2121
Christoph Lupprich @christoph.luppri.ch · 03/02/2026
Been tinkering with a little app to get insights into the performance of your GitLab CI pipelines, mainly to spot degradations and verify that improvements are actually… improvements. Curious if anyone else would be interested in it?
020
Reposted by Christoph Lupprich
Julian Rubisch @julianrubisch.at · 03/02/2026
So I built my own solution: Crow's Nest. It's a dead-simple dashboard that connects to your Harvest account and shows: - Your total weekly capacity. - Hours you've committed. - How many hours are actually left. No more guessing.
A weekly time budgeting dashboard showing availability across multiple projects and days
123
Christoph Lupprich @christoph.luppri.ch · 30/01/2026
Took running a little easier over the last couple of months because it was quite cold, slippery, and honestly my mind just wasn‘t in it. Did hard runs on Wednesday and today, and while I‘m pretty exhausted now 😅, it feels great.
010
Christoph Lupprich @christoph.luppri.ch · 29/01/2026
Ran into a race condition on @Railway.com when deploying Rails with web + Solid Queue worker. Unlike Heroku's single release phase, Railway runs pre-deploy commands per service. Solution: wrapped the migrate in a wrapper script to erialize migrations across services: gist.github.com/clupprich/a...
gist.github.com
Pre-Deploy Command for Multi-Service Rails apps on Railway
Pre-Deploy Command for Multi-Service Rails apps on Railway - bin_release.rb
000
Christoph Lupprich @christoph.luppri.ch · 23/01/2026
What‘s everyone using to send transactional emails these days? Still Mailgun? I heard that Postmark is back, too? Please don‘t say AWS - I just hate their UI.
310
Christoph Lupprich @christoph.luppri.ch · 23/01/2026
I moved a #Rails app from Heroku to @Railway.com yesterday and just created a new one there. Very solid experience, guess I found the new home for my projects.
050
Christoph Lupprich @christoph.luppri.ch · 11/01/2026
First blog post in… a while (201?). Replaced Redis locks with a Postgres sequence at 90M+ units/year. Sub-millisecond performance, zero deadlocks, simpler architecture. Sometimes the best solution is using what you already have. christoph.luppri.ch/posts/postg...
christoph.luppri.ch
How a Postgres Sequence Replaced Redis Locks at 90M+ Units/Year
When Redis locks started deadlocking at scale, I found a simpler solution: let Postgres handle it. Here's how a database sequence eliminated our distributed locking issues and delivered sub-millisecond performance.
020
Christoph Lupprich @christoph.luppri.ch · 02/01/2026
TIL SolidQueue lets you schedule a single line of Ruby inline in the config file - no separate job class needed. 15 years in and Rails keeps finding ways to delight.
010
Christoph Lupprich @christoph.luppri.ch · 30/12/2025
Two small improvements that would make my GitLab workflow smoother: - Preserve form state when changing the base branch while creating an MR - Check if an MR is still mergeable when the base branch changes - not only when someone views it
000
Christoph Lupprich @christoph.luppri.ch · 18/12/2025
Coming from Rails, the lack of a proper console is my #1 Python pain point. Django’s manage.py shell gets you halfway there, but what are FastAPI/Flask folks doing? One-off scripts? Custom REPLs? Suffering?
100
Reposted by Christoph Lupprich
Julian Rubisch @julianrubisch.at · 16/12/2025
I've got a surprise for hotwire.club members coming up 🥁 ... an MCP server containing the entire knowledge base of challenges and solution up to date! There will be a free version, don't worry. The full version will be limited to DC members OR available for purchase from the shop.
031
Christoph Lupprich @christoph.luppri.ch · 23/10/2025
Haven't been running for a week (wisdom teeth extraction + a cold with fever), and oh boy do I miss it.
020
Christoph Lupprich @christoph.luppri.ch · 10/10/2025
Now that Strava has launched a similar feature, I'm ready to show you the project I've been working on this year: easyhard.carbonative.com It will help you to obey the 80/20 rule in running: 80% of your runs should be easy, 20% hard.
easyhard.carbonative.com
Easy Hard | Login
Track your running intensity and master the 80/20 rule. Train smarter with data-driven insights into your easy vs. hard efforts.
131
Christoph Lupprich @christoph.luppri.ch · 08/10/2025
I declare today a national holiday in my household: Garmin finally gave me back that 1pt VO2max it stole during winter. #devswhorun
030
Reposted by Christoph Lupprich
Jon Rowe @jonrowe.bsky.social · 12/08/2025
Hey bksy, I’m on the look out for my next project, I’m an experienced Elixir dev (> 8 years commercially, and > 10 years of Ruby before that + I'm still the maintainer of RSpec), very familiar with Phoenix and LiveView, and have enough CSS / JS knowledge to approach projects from a full stack angle.
11114
Christoph Lupprich @christoph.luppri.ch · 06/10/2025
Just discovered github.com/mixxorz/DSLR, which is a successor of stellar (which I previously used). Makes snapshotting your Postgres database ridiculously easy.
github.com
GitHub - mixxorz/DSLR: Take lightning fast snapshots of your local Postgres databases.
Take lightning fast snapshots of your local Postgres databases. - mixxorz/DSLR
040
Christoph Lupprich @christoph.luppri.ch · 03/10/2025
By now I lost count of how many times I've re-implemented Rails' create_or_find_by in other frameworks. Once got told not to use it because it "clutters the Postgres logs". Apparently Postgres is logging constraint violations per default, and it's not easy to turn that off?
010
Christoph Lupprich @christoph.luppri.ch · 03/10/2025
Although I really like it over here, I still have to say that there's more buzz over at X. That's not necessarily a good thing (as a full metro isn't necessarily a good thing), but I kind of feel I'm missing out?
020
Christoph Lupprich @christoph.luppri.ch · 26/09/2025
My On running shoes gave out after just 400km, so I decided to try Nike for the first time. Ordered the Pegasus Plus - excited to see how they perform! #devswhorun #running
231
Christoph Lupprich @christoph.luppri.ch · 12/09/2025
Had a wonderful time at @friendlyrb.com. Met so many nice and interesting people, my mind and heart are full. Thanks to @lucianghinda.com, @adrianthedev.com, @jakob.codefrwd.com, @stefancosma.xyz, @alexmarinescu.com, and everyone else for making this happen! ❤️
093
Christoph Lupprich @christoph.luppri.ch · 09/09/2025
On my way to @friendlyrb.com - looking forward to see familiar faces and meet new ones!
030
Christoph Lupprich @christoph.luppri.ch · 06/09/2025
When I first started with Rails, I was blown away: helpful error pages in development, effortless migrations, a schema.rb file, clean logging… it all felt like magic. Over time, that magic faded - not because Rails got worse, but because I got used to it. I started taking it for granted.
230
Christoph Lupprich @christoph.luppri.ch · 29/08/2025
Today is my last day at the company I’ve contracted with for the past 11 years. I never thought I’d stay this long, and I’m amazed at how much we’ve accomplished together. The best part? It’s not bittersweet - I’m genuinely excited for what comes next.
030
Christoph Lupprich @christoph.luppri.ch · 28/08/2025
LinkedIn can't do message drafts? My world is shattered. Where is all the money going?
010
Christoph Lupprich @christoph.luppri.ch · 27/08/2025
In the past year, one of the more amusing debugging experiences I encountered involved what appeared to be a race condition. I'll save the specifics for a later blog entry, but TIL that until Rails version 4.2.x, the reload method in Active Record did not bypass the query cache. 😬
100
Christoph Lupprich @christoph.luppri.ch · 26/08/2025
I have mixed feelings about Python, but I enjoyed using UV - an all-in-one solution in a fragmented ecosystem. Excited to see a similar tool starting for Ruby: github.com/spinel-coop/rv
github.com
GitHub - spinel-coop/rv: 💎💨 Next-gen very fast Ruby tooling
💎💨 Next-gen very fast Ruby tooling. Contribute to spinel-coop/rv development by creating an account on GitHub.
010
Christoph Lupprich @christoph.luppri.ch · 25/08/2025
TIL: git commit --fixup <SHA> (You don't wanna know about my previous workflow, haha)
000
Christoph Lupprich @christoph.luppri.ch · 24/08/2025
Finally submitted my little running app to Strava for review 🤞
010
Christoph Lupprich @christoph.luppri.ch · 14/08/2025
Good news: I’m available for contract work! 10+ yrs building full-stack web applications (Rails + Vue, exploring Elixir). Experienced in global remote teams. Love solving complex business problems, scaling systems & debugging tricky issues. DM me if you need a seasoned #RubyOnRails engineer!
031
Christoph Lupprich @christoph.luppri.ch · 12/08/2025
💪 #devswhorun #running
010
Christoph Lupprich @christoph.luppri.ch · 05/08/2025
Been diving into Python land a bit lately and I was wondering if anyone is seeing performance issues running FastAPI on Cloud Run? We’re literally serving a single endpoint with not much traffic (1rps), but our P99 is 30x the P50 (600ms vs 20ms).
100
Christoph Lupprich @christoph.luppri.ch · 04/08/2025
Almost missed that my all-time favorite podcast is out with a new series about the history of the Space Shuttle: www.bbc.co.uk/programmes/p...
bbc.co.uk
BBC World Service - 13 Minutes Presents: The Space Shuttle, Season 3: The Space Shuttle
The space shuttle: A sci-fi dream that became reality and changed spaceflight forever
000
Christoph Lupprich @christoph.luppri.ch · 02/08/2025
Wrapped up a perfect running week with a solid 16k long run. Time to earn that sleep-in tomorrow 😴
Statistics of my week running: 80% easy effort, 20% hard.
110
Christoph Lupprich @christoph.luppri.ch · 02/08/2025
At this point I thought we‘ve seen it all, but he‘s still up for a surprise every now and then. This is ridiculous. www.nytimes.com/2025/08/01/b...
nytimes.com
Trump, Claiming Weak Jobs Numbers Were ‘Rigged,’ Fires Labor Official
000
Christoph Lupprich @christoph.luppri.ch · 26/07/2025
Saw @nateberkopec.bsky.social mention it in his latest newsletter (highly recommend subscribing!): bin/setup - yet another tiny Rails feature that’s so useful. Sure, you can add a setup script to any project, regardless of framework or language. But having it there by default? That's the real win.
010
Christoph Lupprich @christoph.luppri.ch · 09/07/2025
Skipping the draft about Python, Async IO, and library support - it’s… complicated. In every direction. Instead: Ruby and Rails ❤️
010
Christoph Lupprich @christoph.luppri.ch · 07/07/2025
The newest Authy update from Twilio either removed some logos or the title from my configured accounts (I don't remember what was there). That basically draws the overview page useless for me, all I see is the same email address. Any suggestions for a great 2FA app on iOS?
100
Christoph Lupprich @christoph.luppri.ch · 05/07/2025
Migrated a Rails app running on DigitalOcean (with Kamal) to Heroku the other day. In the end it wasn't cheaper, because I never figured out how to prune the image registry. Had a little bit of issues getting SolidQueue up and running, but a couple of `db:*` tasks fixed that in the end…
010
Christoph Lupprich @christoph.luppri.ch · 03/07/2025
If you're still on a Rails 3 app, be aware that `ActiveRecord::Base.reload` does not bypass or clear the query cache, see github.com/rails/rails/.... Ask me how I know 😅
000
Christoph Lupprich @christoph.luppri.ch · 27/06/2025
Just got back from a month-long holiday in Sweden — the cultural and climate shock couldn’t be more extreme. Might need a holiday to recover from the holiday 😅
000
Christoph Lupprich @christoph.luppri.ch · 11/03/2025
One of my lecturers at university always said that if you know the default timeouts of different components in a network stack, you basically know what's going wrong. Was reminded of that today when I hit an issue in my #ElixirLang #Nerves application where the Phoenix server wouldn't start:
120
Reposted by Christoph Lupprich
Ken Schultz @kschultz.bsky.social · 08/03/2025
Turns out that some people didn’t object to lists of banned words. They just wanted to make the list.
67598198
Christoph Lupprich @christoph.luppri.ch · 25/02/2025
Working with most languages, it always surprises me how bad their standard library is. If I need more than two lines of code to recursively transform the keys of a hash/map, I'm kind of no longer interested? Libraries/packages don't count, cause that's just pushing the headeach down the road.
010
Christoph Lupprich @christoph.luppri.ch · 29/01/2025
Woke up extra early this morning for… intervals! I’m just happy that nobody sees me at that hour; otherwise, I’d feel a little stupid running the same stretch of road 11 times. #devswhorun
020
Christoph Lupprich @christoph.luppri.ch · 28/01/2025
It‘s a little stupid, but I feel kind of proud when it‘s 7am and I‘ve reached my step goal for the day. #devswhorun
000