Ramin's Post
An experience-driven reflection on software complexity, exploring how technical skills and business knowledge shape better system design.
A comprehensive guide for conducting effective code reviews, combining a technical checklist with process-oriented best practices.
A practical comparison of Prisma, TypeORM, and direct PostgreSQL clients in Node.js + TypeScript projects, focusing on performance, type safety, developer workflow, and flexibility, with clear examples to help ...
As a senior software engineer with years of experience in large-scale systems, I reflect on the psychological, organizational, and cultural reasons why we often don’t do the right thing — even when we know what...
Learn how to create native, animated transitions between UI states in your single-page applications using the View Transitions API. This post walks through the basics, provides a practical example, and links to...
List virtualization in React is a powerful technique to boost performance when rendering large datasets, by only displaying items visible in the viewport instead of the entire list. This post explores its benef...
Building a blog can feel overwhelming, especially when you want something fast, customizable, and easy to maintain. If you're a developer who loves working with modern tools, combining Next.js, Contentlayer, an...
The @property CSS at-rule is part of the CSS Houdini set of APIs. It allows developers to explicitly define CSS custom properties, allowing for property type checking and constraining, setting default values, a...
On my birthday, I decided to give my personal website a full redesign and rebuild. Using the latest features in Next.js 15, I created a cleaner, faster, and more modern place to share my work and experience. It...
