Who would've thought I'd actually enjoy writing JavaScript - with Stimulus, mind you:
Christoph Lupprich
@christoph.luppri.ch
Father of two. Freelance software engineer. Avid runner. Leave this world a little better than you found it. #Ruby #RubyOnRails #ElixirLang #Running
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.
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...
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...
linkedin.com
Mysterious warning to Ruby app maintainers: “bundle update rack” asap.
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.
Don't throw the specs out with the factories
FixtureBot gives you the speed of fixtures with the syntax of factories
beautifulruby.com
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?
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.
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.
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...
Pre-Deploy Command for Multi-Service Rails apps on Railway
Pre-Deploy Command for Multi-Service Rails apps on Railway - bin_release.rb
gist.github.com
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.
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.
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...
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.
christoph.luppri.ch
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.
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
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?
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.
Haven't been running for a week (wisdom teeth extraction + a cold with fever), and oh boy do I miss it.
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.
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.
easyhard.carbonative.com
I declare today a national holiday in my household: Garmin finally gave me back that 1pt VO2max it stole during winter. #devswhorun
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.
Just discovered github.com/mixxorz/DSLR, which is a successor of stellar (which I previously used). Makes snapshotting your Postgres database ridiculously easy.
GitHub - mixxorz/DSLR: Take lightning fast snapshots of your local Postgres databases.
Take lightning fast snapshots of your local Postgres databases. - mixxorz/DSLR
github.com
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?
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?
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
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! ❤️
On my way to @friendlyrb.com - looking forward to see familiar faces and meet new ones!
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.
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.
LinkedIn can't do message drafts? My world is shattered. Where is all the money going?
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. 😬