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. I know how to read some code, but I am not skilled in the ecosystem nor in many patterns and conventions of the community.
THE TESTING 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.
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. Most of the time, I would rater add 10 parameters with a default value than leaving an unknown interface in a function.
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). So please, if you read this in the future, take my opinion with a grain of salt.
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. Having said that, let us delve in the unit testing world with some examples in Python!
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. That is a good thing as diversity can enrich the organization but there is also the matter of different perceived levels of professionalism in the discipline.
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. Think about some manual tests and other tangential tools.
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. However, we can stop repeating the code and save some precious space (and possible bugs) if we just re-use the code by injecting some code in the setUp method.
THE WORLD IS FULL OF IRRATIONAL PEOPLE
Recently I took a personality test where I ended up being classified as an analytical person, and I am that indeed. How can I thrive in a world where the critical thinking and the rationality are being attacked everyday? Irrational people in software development Our profession, software development, is full of irrational people. First of all, we do not work in Science, and in software development there are multiple ways of do the same thing. In Science you can have an hypothesis, design an experiment, get the data, and hence, refute or corroborate your hunch. In more pure Sciences like Mathematics, it is even better, as you can give proof that your hypothesis is correct (or incorrect).
10 YEARS OF THIS BLOG
I have been blogging about software and technology in this blog for a decade. What was the rationale of this blog? Why should you write a technical blog? How it all started I started blogging in 2014, when I was improving my skills via a Masters Program. I was a bit burned out because studying and working at the same time require an energy I did not have during that time.