Improve your programs performance with backgroundlog

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?

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

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]
software  ai  llm 

The testing pyramid

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

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?

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]
software  ai  llm 

How to write a good unit test

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

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]

Joining test coverage from several test directories

Joining test coverage from several test directories This post show a simple way of computing the coverage.py’s test coverage from different tests folders. Introduction I have been using coverage.py since I started working with python, and while it works pretty well, let us say that the interface of the command line tool could be better. I struggled for some minutes trying to filter out other folder I have in my tests folder that were not meant to have their test coverage computed. [Read More]

Patching on setUp in Python's unittest

Patching on setUp in Python’s unittest One of my favorite programming languages is Python, and I think that tests should be a foundational part of software development, so it is not strange that I delve a lot in Python’s unittest. In this post we are going to show how to use unittest.mock.patch not in a decorator (the usual case) but in the setUp method. Why should you care about this? Well, I have not cared about this after more than a decade of working with python (intermittently), because I was just used to the patch decorator. [Read More]