Oi!

Software Engineer and PhD student AI for Public Health. Latina.

Feliz em trocar. Vamo?

Hugo Content Adapter

This post is more of a story about how I used Hugo and its features. 🤠 I’m creating a website for something related to my research (I’ll share it here soon) where I need to generate multiple pages from JSON files for a static site. I’ve been using Hugo on this blog since 2018, and although there are other great options out there, I always end up trying to do things with it. ...

April 14, 2025 · 3 min

Incredible Shortcuts in Local Makefiles

Using Docker Compose is a marvel, unless you have multiple projects to manage, and they’re not running on the same ports with enormous commands. My first thought was to create a Makefile, but the project already has one! 🤡 How do I then achieve: having local shortcuts running in concise commands? The first step: creating my own Makefile and calling it MyMakefile. .PHONY: test # pega todos os argumentos da linha de comando após o alvo ARGS = $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) test: docker-compose exec app pytest project/ --no-migrations $(ARGS) To prevent it from being committed in the project, I added it to my global .gitignore. ...

March 21, 2025 · 2 min · Ana Paula Gomes

I don't have a private PyPI, what now?

The situation is as follows: the company you work for is small, and you want to publish a Python package internally. However, you don’t want to pay for a service to do this or add a new tool. Although this may seem like a specific situation, we can say that it can happen quite frequently. In Brazil, literally 99% of companies are small businesses. According to Forbes, the statistic is exactly the same in the USA (the first country that appeared in the search :)). ...

January 26, 2024 · 2 min

From manual to automated: how I do it

My Strategy on When and How to Automate Things After having worked in both large and small companies, product teams and project teams, with gigantic codebases and some not so big, I feel confident to say that: every place has manual routines that could be automated. And there’s no escaping it: every process that is automated probably stemmed from some manual real-world task, gradually built up with different tasks and expectations. But what to do when faced with a large number of manual steps in a process that’s either too big or not a priority? ...

October 7, 2023 · 4 min

Printing Tracebacks

Sometimes you’re in a situation where you need to debug something that is inside a piece of code like this: try: [...] except Exception as e: [...] An option would be printing e but it will show only the exception message, instead of the traceback. You can solve this by adding: import traceback try: [...] except Exception as e: [...] print(''.join(traceback.format_exception(None, e, e.__traceback__))) It will show the exception and the traceback. Please avoid catching generic exceptions. It can disguise many important errors and bring a lot of headache for you in the future. ...

May 4, 2021 · 1 min