5 rules for picking long-lasting method names in OOP

When you write a piece of code for the first time, names don’t matter that much. You obviously know what everything is and what it does. However, while it’s cheap and easy to understand now, code written using poor names will grow to be incomprehensible as time passes and your application gets bigger. The price […]

InertiaJS – How to refresh state when browsing back

I’ve been using InertiaJS on all my new projects, and it’s been a great choice so far. But as it happens with everything in the world, there have been a few hiccups. One of those hiccups has to do with refreshing state when navigating back. Inertia is designed to mimic the default browser behavior, which […]

How to approach refactoring legacy applications without hindering your ability to release new features

If you read my article on why rewriting applications from scratch is almost always a bad idea and agreed with it, this article acts as a short guideline on how should one approach refactoring legacy applications without hindering their ability to release new features. Find the biggest pain point. Look at the codebase and ask […]

Photo by Luke Carliff on Unsplash

Don’t throw away the past. Learn from it.

My article on why rewriting applications from scratch is almost always a bad idea got a few responses on medium. One of which got me thinking more deeply about how valuable are the lessons learned during the initial development of the application. Adam is right. The lessons from v1 are immensely valuable and should bear […]

Why rewriting applications from scratch is almost always a bad idea

There are many good reasons to rewrite a legacy application, but most of the time, the cost outweighs the benefits. In this article, I try to balance the pros and cons of rewriting applications from scratch and articulate why it is almost always a bad idea. Many developers, including myself, can live with a legacy […]

A few things that might help you keep going to the gym for the next five years

I believe 2020 is my fifth(?) year of consistently going to the gym. Since the beginning, I found myself almost quitting every few months, but there were a few things I believe that helped me keep going. In this article, I want to share those things in the hope of helping others wishing to make […]


Actions in Laravel beyond CRUD

In the past couple of months, I’ve been enjoying reading Brent’s writing on PHP & Laravel. The test and types article is one of my favorites, as it highlights the importance of types and creating objects that reflect precise concepts, rather than just using primitives for everything. Recently he’s been writing a mini-series titled “Laravel […]

Testing a Laravel app with hundreds of migration files

And stay sane while doing it. Testing Laravel is usually fast. You can use an in-memory database, and all your tests run hella fast; even going directly with MySQL is fast enough. But when you inherit an application (rarely for good reasons), and you find out it has more than 370 migration files adding up […]

4 ways to deal with complexity in your eloquent models

I think everyone loves to work on completely greenfield applications. You get to plan your own course, chose your current favourite technologies, structures, and patterns to follow. There is no legacy code, no technical debt, nothing that stands in your way. You can do whatever you want and building features is a breeze. But you […]

When things go wrong, draw something funny

A couple of months ago we went to Amsterdam for a city break. Lively city, too many reckless bikers. We wake up one morning to find out our hotel’s elevators stopped working. That’s not something you want to see when you’re on vacation trying to relax, especially when your room is at the sixth floor. […]