Welcome to my blogHere are some recent posts:Three Key Steps to Fast Loader FunctionsDon't fall for these common mistakes. Instead, make sure you follow these three key steps to write performant loader functions.Migrating from Meteor.js to Remix in 2022We successfully switched from Meteor.js to Remix, but there were many challenges to solve along the way. This post is a summary of the challenges we faced and solutions we implemented to make the switchover as painless as possible.Setting up Production Monitoring for Remix on Fly.ioFly.io has been a dream to work with so far, and the monitoring story is no different. Learn how to quickly set up production monitoring for your remix app on fly.io.Here are some posts that stand the test of time:Taking the 'D' Out of CRUD with Soft DeletesIf you are like me, you cringe every time you see .destroy in someone's ORM code. For most businesses, data is one of the most important assets. Here, we'll use soft deletes instead.Taking the 'D' Out of CRUD with Soft UpdatesSoft deletes are nice, but what about updates? Updates are pretty destructive too, so let's take a look at implementing soft updates on top of soft deletes.