
Hey, I'm @remi.
I'm a software engineer helping tech companies build cool stuff on the internet.
Welcome to my corner of the internet. This is where I share what I've learned while building software over the past 10 years. You can read about building reliable Ruby and Rails applications, about testing and career growth, or you can browse the full archive.
Hot from the press
All 77 articles →- 3D modelling is HARD, and news about the pre-sale (Ruby Stained Glass Notes #14)
- Putting it all together for the first time (Ruby Stained Glass Notes #13)
- How much will it cost? (Ruby Stained Glass Notes #12)
- How do you fit a light in a wood stand? (Ruby Stained Glass Notes #11)
- Let there be light (Ruby Stained Glass Notes #10)
- Finishing the square panel – part 02 (Ruby Stained Glass Notes #09)
- Going the extra 100 miles In a recent conversation on Reddit, a user raised doubts about the quality of the Ruby Stained-Glass Panel based on the pictures of the prototype. I’ve had a lot of thought about their remarks but the main takeaway I have right now is: In a world full of grifters, you have to go the extra 100 miles to prove you’re genuinely invested in making something truly beautiful. People can’t assume that without getting to know you more than in passing.
- Today I learned a nifty Turbo Frames trick: how to persist scroll depth accross a page refresh. I’m currently working on bundles for cults3D. On the general index of bundles, I have a section displaying 6 bundles manually selected by the Cults’ team. Then, I have my list of bundles sorted by newest to latest. I’m working on adding a component with some filters in it: toggles, sorting, you know, the work. And this poses a problem: when I toggle a filter, the whole page reloads and I’m back at the top of the page. So to see my filtered
- Iterative redesign Written while listening to Tommy Guerrero’s Dusty Dreams. Over the years, I’ve had people complimenting the design of my website. And while I’m no designer – in the sense that I’ve not practiced design professionally – I studied design some 25 years ago (!!!). That’s what put me onto the path of becoming a stained-glass master. Despite these compliments, I’ve grown unsatisfied with some aspects of my website: I wish I could free myself from the middle narrow-ish column. I added so many colors over the years, that it’s impossible to not see that there is no more cohesive color
- Musing about the future of my profession With the rise of LLMs (and even mandatory AI), I’ve been thinking about what could be done, to lay my own path for the future. By “my own path”, I mean “not the path decided by the current zeitgeist” which is “learn to prompt or be left behind”. For me, the bottom line with vibe coding (coding with AI) is: When LLMs are wrong, they are a pain in the back to work with. When LLMs are right, they steal the joy of learning and challenging myself. I’d rather be a 1X engineer and fucking enjoy solving everyday problems, that
- Notes on Rebuilding Rails Currently reading Rebuilding Rails by Noah Gibbs. Notes: Chapter 3 Sometimes, Noah writes methods in the context of a module, sometimes in the context of a class. Why? Modules are collections of methods and constants. They cannot generate instances. Classes may generate instances (objects), and have per-instance state (instance variables). Source Checking rails/active_support_dependencies/autoload.rb and I see this @_at_path. What is the reason for this @_? So, @_instance_var has no special meaning. Rails internally uses it to distinguish private/protected variables that other should not modify/access. source bundler: failed to load command: rackup Couldn't find handler for: puma, thin, falcon, webrick. (LoadError)
- StringScanner Currently reading Rebuilding Rails by Noah Gibbs. At some point, he writes about checking out Active Support for some pointers on metaprogramming. Currently felt into a rabbit hole on the duration part of the lib. Anyways. Here’s a nifty class in Ruby that facilitates some scanning on strings. StringScanner provides for lexical scanning operations on a String. source Usage: string = StringScanner.new("bob") => #<StringScanner 0/3 @ "bob"> [9] pry(main)> string.eos? => false [10] pry(main)> string.pos => 0 [12] pry(main)> string.peek(5) => "bob" [14] pry(main)> string.getch => "b" [15] pry(main)> string.pos => 1 [16] pry(main)> string.reset => #<StringScanner 0/3 @ "bob">
Can't keep up with your roadmap? Let's talk.
I help small to mid-sized teams build Rails apps that generate 6-figure revenues and make tens of millions of users happy.