Automating Tailwind Builds with Kamal Post-Deploy Hooks

I was recently working on a small Sinatra application that used Tailwind CSS for a few internal pages. The application itself was deployed using Kamal, and the deployment process was pretty smooth. The only annoying part was that after every deployment, I had to SSH into the server and run: bundle exec rake tailwind:build It isn’t a difficult command to run. The problem is remembering to run it. After forgetting a couple of times and wondering why my UI changes weren’t showing up, I figured this was exactly the kind of repetitive task that should be automated. ...

January 5, 2026 · Mausam Pun

Setting Up CI for a Multi-Database Rails App When One Database Is Read-Only

I was working on a Rails application that used two PostgreSQL databases. The primary database was owned by our application, so we could create it, run migrations, and modify the schema whenever we needed to. The second database was different. It belonged to another application, and our application only connected to it for reading data. We didn’t own its schema, and we weren’t responsible for running migrations against it. Everything worked perfectly on my local machine, so I didn’t think much about it. ...

December 19, 2025 · Mausam Pun

How Caching Helped Us Avoid Slack API Rate Limits

I was working on a Rails application that integrated with Slack. The integration had two main responsibilities. The first was allowing users to map their Slack accounts with their profiles in our application. The second was sending notifications to users or channels whenever certain events occurred. Everything worked well while we were developing locally, but once the application reached staging and production, we started seeing an issue that hadn’t shown up before. ...

October 23, 2025 · Mausam Pun