Improve your programs performance with backgroundlog
Posted on July 12, 2025
| Diego J. Romero-López
Improve your programs performance with backgroundlog backgroundlog is a library that allows you to use a background thread to write log messages. The idea for that is to be transparent to the developer, in the sense that they do not need to worry about async functions, the event loop, or managing threads.
Introduction The other day I was having a conversation with another software engineer about how to read lines from a file and write in another file in the most performant way possible.
[Read More]
When are full software rewrites needed?
Posted on July 4, 2025
| Diego J. Romero-López
When are full software rewrites needed? Having dealt with a full rewrite of a software application recently, it left me wondering if it was needed at all, if there was any way to salvage the project or some parts of the project. Could we have avoided the rewrite?
Introduction There was a time where I had to maintain and extend a deprecated project, until the deadline came. I was upset because it was a failure of management to not be able to predict this outcome, and I was the one that was ordered to create the replacement.
[Read More]
The case for LLMs: faster development
Posted on June 29, 2025
| Diego J. Romero-López
The case for LLMs: faster development Introduction Artificial Intelligence is all over the place in software development these days. From the first AI services that could generate images, to the code generation tools like GitHub Copilot, ChatGPT, Google Gemini, etc.
I wrote in other post that LLMs are not going to replace software engineers, but they are going to empower them in a lot of cases.
This post is a war story of mine, where I used a LLM service to create a new command for a CLI command tool written in a compiled language that I do not master.
[Read More]
The testing pyramid
Posted on June 7, 2025
| Diego J. Romero-López
The test pyramid This post revisit one of my favorite topics: testing. We are going to delve into what are the different types of tests that you should do in your software to have some assurance about your code.
Introduction I wrote some time ago a post about the difference between unit and integration testing, and while re-reading it today I was not convinced that it was clear enough.
Integration tests is a concept that has been used many times in different environments and at different levels, so I want to give a proper definition of each one of the test types at project and system level.
[Read More]
I do not like *args and **kwargs in Python
Posted on May 18, 2025
| Diego J. Romero-López
I do not like *args and **kwargs in Python *args and **kwargs are the way to declare positional and keyword function arguments (resp.) in Python.
Introduction This post explains why I am a fan of naming the arguments and I do not like positional arguments nor the *args and **kwargs way of passing arguments.
Why I don’t like *args and **kwargs? Most of the time I only use *args and **kwargs when strictly necessary, like when inheriting from a class that uses them, and I need to pass the parameters to the parent class.
[Read More]
Can LLMs replace engineers?
Posted on May 17, 2025
| Diego J. Romero-López
Can LLMs replace engineers? This post provides my opinion about how a LLMs cannot replace a senior software engineer, even if the CEOs and other executives believe that it is possible.
Introduction I have been using Artificial Intelligence (in the form of LLMs) for several years already. My experience working with LLMs is limited to working with ChatGPT, Cursor and GitHub Copilot as of May 2025 (when this post was written).
[Read More]
How to write a good unit test
Posted on April 5, 2025
| Diego J. Romero-López
How to write a good unit test This post provides some guidelines about how to write a good unit test. There are some examples in Python with unittest.
Introduction In my last post I wrote about software quality not being taken seriously sometimes.
Tests are a good part of the software quality so I wanted to write a bit about the testing effort we should be doing in our code.
[Read More]
Software quality is not negotiable
Posted on March 15, 2025
| Diego J. Romero-López
Software quality is not negotiable From a conversation from one of the best software engineers I have had the please to work with, I heard the following sentence: software quality is not negotiable! And that is one of the axioms of our profession.
Why software quality is seen as optional? Software developers/engineers come from different backgrounds The world of software has no barrier entry. People with different backgrounds can start working as software developers or engineers.
[Read More]
The runtime type-checking operator in TypeScript
Posted on December 5, 2024
| Diego J. Romero-López
The runtime type-checking operator in TypeScript I have been working with TypeScript for a while but for sure I am not an expert in the language (I feel more comfortable with Python).
I like the idea of type-safe but limiting the static type checking process can make you confident about what you are getting from outside sources, and if you do not trust those sources (you should NOT), you would need to include a lot of repetitive checks any time we read data from the outside.
[Read More]
Don't use singletons
Posted on November 10, 2024
| Diego J. Romero-López
Don’t use singletons The Singleton pattern is one of the patterns that appeared in the Design Patterns book by Erich Gamma et al..
What is a singleton? The singleton is one design patter to share a resource in a controlled manner in a code base. That resource could be a configuration, a connection or any other global state that should be unique.
How to implement it? There are several ways to implement this, but in Python (for example) you can implement it by making use of the Python metaclasses.
[Read More]