<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://blog.siami.fr/</id><title>Adrien Siami</title><subtitle>Software engineer, Ruby, Rails, Web and stuff.</subtitle> <updated>2026-03-06T10:22:11+01:00</updated> <author> <name>Adrien Siami</name> <uri>https://blog.siami.fr/</uri> </author><link rel="self" type="application/atom+xml" href="https://blog.siami.fr/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://blog.siami.fr/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Adrien Siami </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Smooth UI animations on server-rendered HTML</title><link href="https://blog.siami.fr/smooth-ui-animations-on-server-rendered-html" rel="alternate" type="text/html" title="Smooth UI animations on server-rendered HTML" /><published>2026-03-01T00:00:00+01:00</published> <updated>2026-03-01T00:00:00+01:00</updated> <id>https://blog.siami.fr/smooth-ui-animations-on-server-rendered-html</id> <content type="text/html" src="https://blog.siami.fr/smooth-ui-animations-on-server-rendered-html" /> <author> <name>Adrien Siami</name> </author> <category term="Rails" /> <category term="Web" /> <summary>I’ve been using Hotwire in production since the beta release of Turbo, and it’s changed the way I build web apps. It’s a great way to get SPA-like interactivity at a fraction of the complexity. In this article, we’ll explore how we can use Turbo 8’s morphing, the view transitions API, and a sprinkle of Stimulus to create a smooth, interactive experience with minimal code. We’ll see how these t...</summary> </entry> <entry><title>Launching YAMLFish, a simple translations management tool</title><link href="https://blog.siami.fr/launching-yamlfish-a-simple-translations-management-tool" rel="alternate" type="text/html" title="Launching YAMLFish, a simple translations management tool" /><published>2024-12-16T00:00:00+01:00</published> <updated>2024-12-16T00:00:00+01:00</updated> <id>https://blog.siami.fr/launching-yamlfish-a-simple-translations-management-tool</id> <content type="text/html" src="https://blog.siami.fr/launching-yamlfish-a-simple-translations-management-tool" /> <author> <name>Adrien Siami</name> </author> <category term="Rails" /> <category term="Web" /> <summary>As a software engineer, I’ve always dreaded working with translations. It can get increasingly tricky with the number of locales and parallel features being developed. As a CTO of a small company, when updating the YML files manually didn’t cut it anymore, I looked for a simple tool that would help me manage the translations, that would not cost a fortune. I did not find any that suited my ne...</summary> </entry> <entry><title>Avoid constantize in Rails</title><link href="https://blog.siami.fr/avoid-constantize-in-rails" rel="alternate" type="text/html" title="Avoid constantize in Rails" /><published>2024-11-26T00:00:00+01:00</published> <updated>2024-11-26T00:00:00+01:00</updated> <id>https://blog.siami.fr/avoid-constantize-in-rails</id> <content type="text/html" src="https://blog.siami.fr/avoid-constantize-in-rails" /> <author> <name>Adrien Siami</name> </author> <category term="Rails" /> <category term="Programming" /> <summary>What do you do when you need to instanciate a class in Rails, but its name is dynamic? Let’s say we want to serialize an object for use in an API payload and we have to handle different versions. We could have a MySerializer::V1 and MySerializer::V2 classes. And to instanciate the correct one, we could do something like this: serializer_class = "MySerializer::V#{version}".constantize serial...</summary> </entry> <entry><title>Generate magic tokens in Rails with generates_token_for</title><link href="https://blog.siami.fr/generate-magic-tokens-in-rails" rel="alternate" type="text/html" title="Generate magic tokens in Rails with generates_token_for" /><published>2024-04-28T00:00:00+02:00</published> <updated>2024-04-28T00:00:00+02:00</updated> <id>https://blog.siami.fr/generate-magic-tokens-in-rails</id> <content type="text/html" src="https://blog.siami.fr/generate-magic-tokens-in-rails" /> <author> <name>Adrien Siami</name> </author> <category term="Rails" /> <category term="Programming" /> <summary>For a long time, and probably still today, the reference for authentication in Rails is using a gem like Devise. Thing is, you’ll probably end up customizing it a lot: views, emails, onboarding flow, etc. Since Rails 7.1, we have access to several new features that make it easier to implement authentication with minimal extra code, making it a viable option for many projects. One of these fea...</summary> </entry> <entry><title>The Rails asset pipeline, old and new</title><link href="https://blog.siami.fr/rails-asset-pipeline-old-and-new" rel="alternate" type="text/html" title="The Rails asset pipeline, old and new" /><published>2024-01-17T00:00:00+01:00</published> <updated>2024-01-17T00:00:00+01:00</updated> <id>https://blog.siami.fr/rails-asset-pipeline-old-and-new</id> <content type="text/html" src="https://blog.siami.fr/rails-asset-pipeline-old-and-new" /> <author> <name>Adrien Siami</name> </author> <category term="Rails" /> <category term="Web" /> <summary>Sprockets, Webpack(er), Importmaps, esbuild, propshaft, rollup, sass, postCSS, tailwind? It’s easy to get lost between all the tools offered by Rails to manage your assets, especially if you’re a beginner in web software development or new to the Rails ecosystem. In this article, we’ll take a deep dive into the ways Rails has helped us managing assets, starting with sprockets back in 2012, and...</summary> </entry> </feed>
