Otelize, add OpenTelemetry to your Python project easily

Otelize, add OpenTelemetry to your Python project easily OpenTelemetry (sometimes abbreviated as OTEL) is a standard for telemetry and monitorization of software applications that has gain a lot of traction in these last years. We will learn here how to use the Python package otelize to add this telemetry to our Python applications without having to rely on much boilerplate. How did I use to add OTEL telemetry to my Python code? [Read More]

How to work in a toxic environment

How to work in a toxic environment There are many posts about growing a good culture of empathy in teams. But how could you deal with a toxic culture? In this post we are going to delve into this question. Toxic behaviors What is a toxic environment? A toxic environment is one where the bad behaviors are not corrected or they are ignored. As simple as that. There are people doing things that affect negatively to others, and nobody is correcting them. [Read More]

Remote work

Remote work In this post I would like to voice my opinion about remote work. Introduction Remote work grew a lot in the 2020 because of the COVID-19 pandemic, but now it has started to being seen as diminishing from the corporate world. Less and less remote positions, more in-office requirements, and more one-sided conversations about the benefits of in-person work, or blaming remote workers for slacking or being simply lazy (as if there weren’t people who go to the office and do nothing all day). [Read More]

Everybody has value

Everybody has value In this post I tell a war story that happened during my time in a medium-sized multi-national company where I had a leadership role. Introduction Working there I had a good developer in my team with some physical disabilities (vision related). Others hand the idea that they were frustrated in their day-to-day role, and indeed it looked like they were. This developer felt not being used at their 100% capacity, and consequently, they felt undervalued. [Read More]

Write tests. Not too many. Mostly integration.

Write tests. Not too many. Mostly integration. This is some advice that appear first at Twitter by Guillermo Rauch. Years have passed since I read it and now I am at a position to reflect on them and how I was following this advice even when I did not know that explicitly. Introduction Some years ago I was developing an internal web application for a non-techie team. I was working with React and reading a lot of tutorials, guides, and documentation (in case you are wondering I was mostly focused on backend those days). [Read More]

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]