Practical Software Development

Practical Software Development

    • About me
    • Privacy Policy
  • The Big O Confusion

    The Big O Confusion

    It is sometimes hard to notice, but many of the foundations of computer science and programming come from mathematics and their many branches. One example of that is the famous Big O notation, a technique so useful to evaluate an algorithm’s time and space complexity that nowadays it is part of most job interviews. The…

    September 10, 2025
  • Commit As A Team

    Commit As A Team

    A couple of years ago I was working on a very challenging and interesting project, which had many features competing to go live. We had a line of internal customers ready to use our product as soon as we added the features they needed, and everything was working fine as we had a clear roadmap…

    September 3, 2025
  • Intro to UML

    Intro to UML

    The traditional saying goes “An image is worth a thousand words”, and I strongly believe this applies to diagrams as well. It doesn’t matter how many words we spend trying to explain the nuances of a system: sometimes we just need a simple diagram to put all the pieces together. For many decades, there were…

    August 27, 2025
  • Inverting Logical Expressions

    Inverting Logical Expressions

    Part of our day-to-day tasks is to do code refactoring. As part of this process, I’m sure that many of us have had to negate the logical expressions in if or while statements at least once. For example, we may want to change this code: into something like this: This is indeed a very simple…

    August 20, 2025
  • Why Output Variables Are (Usually) a Bad Idea

    Why Output Variables Are (Usually) a Bad Idea

    One of the many things I’ve learnt from the Clean Code book is about the evils of output variables. Functions can take arguments and can return values. An output variable is one of those arguments that the function uses to give a result by changing its value instead of, or in addition to, the function’s…

    August 13, 2025
  • Learning From Our Mistakes

    Learning From Our Mistakes

    Early in my career, I managed to land a great job that would allow me to work on a bunch of interesting features, with amazing people, while getting hands-on skills that I could use at other companies, and also paying a good salary: It was the whole package! After so many attempts at landing a…

    August 6, 2025
  • Load Testing with Shadow Traffic

    Load Testing with Shadow Traffic

    Some time ago, I worked on a feature that would increase the load on my team’s backend service from 5 thousand to 50 million requests per day, a 10,000 times increase in traffic, and we needed to make sure that it could handle that huge grow, which was a bit daunting. In this article, I…

    July 30, 2025
  • Decoupling Code With The Law Of Demeter

    Decoupling Code With The Law Of Demeter

    It is usually well understood that decoupled software helps us easily change, test, reuse, understand, and extend our code. For this reason, many of us will either advocate or hear someone promoting decoupled code when we build our systems. There are a number of techniques that we can use to do this, and today I’ll…

    July 23, 2025
  • Three Reasons Why I ❤️ Ghostty

    Three Reasons Why I ❤️ Ghostty

    As a backend developer, I do a lot of my work in a terminal (although, admittedly, not as much as I used to). That is why I had no doubt about trying out Ghostty, a new terminal emulator, as soon as it was released a few months ago, late last year. Ghostty provides a number…

    July 16, 2025
  • A Practical Guide To Git Stash

    A Practical Guide To Git Stash

    Several years ago, while pairing with a teammate, I noticed he was taking a lot of time to perform a simple task, because his working environment was not clean. To help him save some time, I suggested he use git stash, a Git command that saves local changes for later in a stack-like structure, so…

    July 9, 2025
1 2 3 … 5
Next Page→