Sign in

alexis.bernard.io

@alexis.bernard.io
43 followers 16 following 59 posts
PostsRepliesMedia
alexis.bernard.io @alexis.bernard.io · 22/09/2026
Protect Rails applications against bots and brute force attacks without annoying humans. github.com/BaseSecrete/...
github.com
GitHub - BaseSecrete/active_hashcash: Protect Rails applications against bots and brute force attacks without annoying humans.
Protect Rails applications against bots and brute force attacks without annoying humans. - BaseSecrete/active_hashcash
000
alexis.bernard.io @alexis.bernard.io · 22/09/2026
ActiveHashcash 0.6.0 is out 🎉 Proof-of-work for Rails forms, now with IP reputation and configurable throttle rules for pushy IPs. Bots work harder and humans still don’t solve captchas.
102
Reposted by @alexis.bernard.io
Julian Rubisch @julianrubisch.at · 18/09/2026
Please help me stay in the top 3 🫣 cc @domchristie.bsky.social @juliancheal.dev
031
Reposted by @alexis.bernard.io
Base Secrète @basesecrete.com · 11/09/2026
FontPlonk 1.2 is available in the macOS app store! - Set export destination - Snappier character grid on large fonts - Style update apps.apple.com/ch/app/fontp...
Drop fonts to convert to WOFF2 + CSSSubset to optimize
023
alexis.bernard.io @alexis.bernard.io · 19/08/2026
I have a few contact forms, and only 2% of the submissions are legitimate. Yes, 98% is spam. This is just my personal experience, but I imagine that in some cases it's much worse!
000
alexis.bernard.io @alexis.bernard.io · 11/08/2026
github.com/BaseSecrete/...
github.com
GitHub - BaseSecrete/active_hashcash: Protect Rails applications against bots and brute force attacks without annoying humans.
Protect Rails applications against bots and brute force attacks without annoying humans. - BaseSecrete/active_hashcash
000
alexis.bernard.io @alexis.bernard.io · 11/08/2026
I released ActiveHashcash 0.5.0 this weekend. It gets a nice speedup to solve the Hashcash stamp thanks to Thibaud GG. ActiveHashcash protects Rails applications against spam bots and brute force attacks.
100
alexis.bernard.io @alexis.bernard.io · 31/07/2026
✅
110
Reposted by @alexis.bernard.io
Marco Roth @marcoroth.dev · 29/07/2026
If you haven't submitted a talk proposal for Helvetic Ruby yet, now's the time! The Call for Proposals closes on July 31. Join us in Zurich for Helvetic Ruby, November 19–20, 2026 🇨🇭🍫🧀🗻 Not planning to speak? Early Bird tickets are still available, too! helvetic-ruby.ch
helvetic-ruby.ch
Helvetic Ruby | November 19-20, 2026, Zürich
A single-track conference for Ruby enthusiasts and professionals from Switzerland and abroad.
2106
alexis.bernard.io @alexis.bernard.io · 28/07/2026
With LLM agent writing ultra vvverbose code, golf coding is more important than ever.
001
alexis.bernard.io @alexis.bernard.io · 28/07/2026
I like the video recording inside the video recording 😀
120
alexis.bernard.io @alexis.bernard.io · 09/07/2026
It's kind of funny that it took me several years to realize that GitHub (GH) is the reverse of Mercurial (HG) 🙃 If I were using GitHub CLI, I would have noticed that sooner because of typos ... gti is my most command not found 😅
000
Reposted by @alexis.bernard.io
Andrew Atkinson @andyatkinson.com · 25/06/2026
Posted Part 2 of Scaling Rails at Aura Frames on Lobsters, and it's doing pretty well. If you're active there (or HMU for an invite), please take a look. Thanks! lobste.rs/s/zijb20/sca...
lobste.rs
Scaling Rails: 41M Req/Hour, 8 DBs, disable_joins: true
6 comments
121
alexis.bernard.io @alexis.bernard.io · 10/04/2026
Take care of you Lucian.
010
alexis.bernard.io @alexis.bernard.io · 20/02/2026
Is it recorded?
100
Reposted by @alexis.bernard.io
The Ruby Passport @therubypassport.com · 15/02/2026
Quick PSA: If you're an event organizer who wants the Ruby Passport at your event, get in touch with me at least one month in advance. These things take a while to get made and shipped your way. ✌️
044
alexis.bernard.io @alexis.bernard.io · 17/02/2026
What a promising day of ski !
020
alexis.bernard.io @alexis.bernard.io · 13/02/2026
Can't wait for the next @genevarb.bsky.social
010
alexis.bernard.io @alexis.bernard.io · 13/02/2026
I asked to a LLM to write my prompt. The circle is complete.
000
Reposted by @alexis.bernard.io
Geneva.rb meetup @genevarb.bsky.social · 09/02/2026
This Wednesday: discover how to calculate your ideal concurrency level before running a single benchmark with Alexis Bernard from RoRvsWild — no guesswork, just smart statistics. 🚀 meetu.ps/e/PPF4y/KFPP...
meetu.ps
How to determine the optimal concurrency level for a Rails app on the first try, Wed, Feb 11, 2026, 7:00 PM | Meetup
***👉 Notice to attendees*** *The event will be held **in a different room** than usual. We will meet in room **011** of the **main building** of the UOG, on the **1rst fl
001
alexis.bernard.io @alexis.bernard.io · 02/02/2026
I had a road trip in Spain few years ago and I remember crossing beautiful national parks between Toledo and Sevilla.
020
alexis.bernard.io @alexis.bernard.io · 21/01/2026
One small app only.
010
alexis.bernard.io @alexis.bernard.io · 13/01/2026
`git diff` forever :) I'm too much used to type it so many times before each `git commit` for years. Every time I tried a Git app, I go back to the CLI. Habits are here to last.
000
alexis.bernard.io @alexis.bernard.io · 23/12/2025
If you update or delete often rows watching bloat tables and indexes is important. This article is a great explanation and I also recommend using the gem rails-pg-extras to watch bloat ratios: github.com/pawurb/rails...
github.com
GitHub - pawurb/rails-pg-extras: Rails PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more.
Rails PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more. - pawurb/rails-pg-extras
011
Reposted by @alexis.bernard.io
Aaron Patterson @tenderlove.dev · 13/12/2025
One thing I'm really excited about in Ruby 4.0 is that object allocation is going to get a nice speed boost
Screenshot of a terminal demonstrating object allocation speedup. Ruby 4.0 is about 2x faster
38810
alexis.bernard.io @alexis.bernard.io · 19/11/2025
Yesterday was a good reminder that centralized systems are weak, but decentralized systems are robust. The Internet is robust because it is decentralized. No one can take it down.
000
alexis.bernard.io @alexis.bernard.io · 19/11/2025
Tonight I will be presenting at Geneva.rb on how to protect a web application against bots and brute force attacks without annoying humans and **without relying on a third-party service**.
100
alexis.bernard.io @alexis.bernard.io · 07/11/2025
The subject is broad enough to be of interest to all web developers, not just Ruby developers. I hope to see you there! Zurich: www.meetup.com/rubyonrails-... Geneva: www.meetup.com/geneva-rb/ev...
meetup.com
Railhöck at Swisscom, Wed, Nov 12, 2025, 6:30 PM | Meetup
Hey everyone, this year's last Railshöck is hosted at Swisscom's. Three speakers committed to share their perspective on stage: * **Rage Against the Malicious** by *Alexis
000
alexis.bernard.io @alexis.bernard.io · 07/11/2025
Next Wednesday I will give a presentation at Zurich.rb, and then on the 19th November at Geneva.rb: How to protect web applications against spam bots and brute force attacks without annoying humans, and why I think captchas are not the best solution.
Rage Against The Malicious: The battle of spam bots
252
alexis.bernard.io @alexis.bernard.io · 23/10/2025
I love namespace, it's great to group related things.
110
alexis.bernard.io @alexis.bernard.io · 23/10/2025
As always it's a tradeoff, but when I'm unsure between add column or create table, I always go for the new model.
010
alexis.bernard.io @alexis.bernard.io · 23/10/2025
Migrating a column is painful and particularly if you can't afford interruption since the application must handle both cases at the same time. I don't remember to have regretted to create an extra model, however I already regretted many times adding an extra column instead of a table.
210
Reposted by @alexis.bernard.io
Lucian Ghinda @lucianghinda.com · 23/10/2025
AI can write tests, but it doesn't understand what truly matters to you, your product, or your codebase. Without guidance, it follows patterns, and the output feels sometimes good, sometimes bad. That's why I'm launching a new workshop: Reliable Test Case Generation with AI.
121
alexis.bernard.io @alexis.bernard.io · 23/10/2025
Thus, there is an interesting indicator: number of columns / number of tables. I'm sure that code bases with a lower ratio are healthier.
000
alexis.bernard.io @alexis.bernard.io · 23/10/2025
It's a lot better because it enables to store more data (IP address, timestamps, ...), and gives a lot of statistics such as how many reset password attempts during the last hour for a particular user?
100
alexis.bernard.io @alexis.bernard.io · 23/10/2025
The wrong way is to store confirmation_token, reset_password_token and session_token in the users table. In fact, that should be 3 distinct models: User::Confirmation, User::ResetPassword and User::Session.
210
alexis.bernard.io @alexis.bernard.io · 23/10/2025
If your are unsure about adding a new column to a table or creating a new model, always create a model. Your code base will thank you. Let's have a look to the User model.
231
alexis.bernard.io @alexis.bernard.io · 17/10/2025
TIL: In SQL the RETURNING instruction accepts any expression, not only a column name. That seems so obvious, but I took all that time to notice it 😅
000
Reposted by @alexis.bernard.io
Lucian Ghinda @lucianghinda.com · 08/10/2025
6 spots filled, 9 remaining for the Good Enough Workshop this Friday at 15:00 UTC Here are all the details about the workshop. In case you have questions reply here or via email -> hello@goodenoughtesting.com
Screenshot of Workshop page
131
Reposted by @alexis.bernard.io
Jean Boussier @byroot.bsky.social · 09/10/2025
I tried to explain why I don't believe the recent accusations toward my former teammates, as well as how the Ruby and Rails Infra team at Shopify operates and why it can be trusted. byroot.github.io/opensource/r...
byroot.github.io
Dear Rubyists: Shopify Isn’t Your Enemy
I’ve been meaning to write a post about my perspective on Open Source and corporate entities. I already got the rough outline of it; however, I’m suffering from writer’s block, but more importantly, t...
119335
alexis.bernard.io @alexis.bernard.io · 07/10/2025
Mine is starting to peel too.
000
alexis.bernard.io @alexis.bernard.io · 07/10/2025
Always take both 😀
120
alexis.bernard.io @alexis.bernard.io · 07/10/2025
I am very happy to have become dual citizen 💎 since last @euruko.org. Thanks @adrianthedev.com and @avohq.io 😀
2172
alexis.bernard.io @alexis.bernard.io · 05/10/2025
And Switzerland is in Schengen but not in EU 🙃
010
alexis.bernard.io @alexis.bernard.io · 03/10/2025
Switched to ReActionView in production! Deploy on Friday and go away 🙃
000
alexis.bernard.io @alexis.bernard.io · 24/09/2025
That’s another problem 😅
000
alexis.bernard.io @alexis.bernard.io · 23/09/2025
No internet and no phones is also a good was to increase productivity 🙂
100
alexis.bernard.io @alexis.bernard.io · 11/09/2025
So using Ruby, what is the largest Fibonacci number we can calculate quickly? This article is a deep dive into the world of Fibonacci numbers to show some really neat tools that Ruby provides. www.rorvswild.com/blog/2025/fi...
rorvswild.com
Fibonacci Funhouse: Exploring Ruby Algorithms for Fibonacci Numbers - RorVsWild
Mathematics is often very powerful and elegant. Do you know what else is powerful and elegant? Ruby.
000
alexis.bernard.io @alexis.bernard.io · 02/09/2025
One new subscriber.
010
alexis.bernard.io @alexis.bernard.io · 20/08/2025
And a nice CSS to print the page as PDF, if the invoice is not sent by email.
110