Blog
Notas sobre engenharia, IA e software que entra em produção.
-

Os €908 que decompus até exatamente zero
Maio de 2026: o dashboard novo estava €908 abaixo do legacy. Recusei-me a chamar-lhe "drift de 2%".
-

Duas fechaduras — e o buraco que o PostgreSQL reserva ao dono
O PostgreSQL deixa o DONO de uma tabela contornar as próprias políticas de RLS — salvo com FORCE ROW LEVEL SECURITY. E nada trava um SUPERUSER. Por isso o isol…
-

Serverless é um contrato com uma allow-list
O serverless da Databricks recusou três idiomas clássicos meus. O melhor erro tinha uma string vazia onde devia estar o nome do tipo — na 21.ª de 43 tabelas, c…
-

Uma prova que podia ter falhado
O check de equivalência passou: fingerprint 35324916267, idêntico nos dois caminhos. Depois apaguei a baseline e corri outra vez.
-

O knob que parece um limite de conexões — e não é
Primeiro load completo, 42 tabelas, e o pool rebentou: «QueuePool limit of size 5 overflow 0 reached». As quatro tabelas-piloto tinham cabido em cinco conexões…
-

O RGPD aplicado no SELECT de extração
A coluna que nunca chega ao lake é a única cuja erasure RGPD custa zero.
-

«It does not fit. Not tight — short.»
O plano dizia: co-alojar o Superset no VPS do Airflow. A medição disse: 1.045 MB disponíveis contra os 1,2–1,5 GB de que o Superset precisa. Veredicto no ADR: …
-

Analytics multi-tenant para negócios de fitness — tenant #1: os meus estúdios
Antes de escolher a arquitetura, fiz grep às job descriptions guardadas: Databricks ×7, Terraform ×7, Airflow ×4, dbt ×2. Ferramentas de BI: ~0.
-

20-docs-nobody-could-find
Os docs que ninguém encontrava.
-

19-production-discoveries
Três coisas que o sandbox não me disse sobre o meu SDK de pagamentos.
-

18-always-honest
"Sempre honesto, nunca assumir." É uma regra que escrevi no topo do guia de contributors do meu SDK. A origem é um erro pequeno que me ensinou uma coisa para a…
-

17-webhook-security
O meu SDK verifica webhooks de duas formas. A maioria só faz uma.
-

16-200-things-changed
200 coisas mudaram, só 2 mudaram a sério.
-

15-api-unification
Duas gerações de API. Três autenticações. Um cliente.
-

14-nif-validate-locally
Validar o NIF antes da rede.
-

13-status-matrix
Publiquei um SDK Python para um gateway de pagamentos. A página de que mais me orgulho é uma tabela de estado.
-

12-open-as-principle
O SDK é princípio arquitectural. Ser open é princípio de vida.
-

Async FastAPI, Medido
Toda a gente diz que async é mais rápido. Finalmente corri os números.
-

Testar FastAPI Sem Mocks da BD
Não mocks o teu banco de dados nos testes.
-

Pydantic + SQLAlchemy: A Stack Real
O FastAPI leva o crédito. Pydantic v2 e SQLAlchemy 2.0 fazem o trabalho pesado.
-

FastAPI no Mundo Real
FastAPI sozinho é um tutorial de 30 linhas. O que faz dele um serviço é tudo o que envolve o framework.
-

Três Sites Um Admin Um Postgres
Três sites, um Postgres, $8/mês. Esse é o meu stack Wagtail em produção.
-

Construir ou comprar o teu agente de voz de IA? Essa é a pergunta errada.
Os líderes de tecnologia fazem-me uma pergunta recorrente: devemos comprar uma plataforma IVR ou de contact centre pronta a usar, ou construir nós próprios um …
-

As escolhas de modelo que definiram o nosso agente de voz
A dar seguimento ao post da semana passada sobre o agente de voz que lancei para dois estúdios de Pilates.
-

Pus um agente de voz ao telefone para um estúdio de Pilates
Há algumas semanas lancei um agente de voz que atende o telefone para dois estúdios de Pilates — por isso, os donos nunca tiveram de contratar uma rececionista.
-

Depois de 15 anos a liderar equipas, ainda faço commits todas as semanas. De propósito.
Há 15 anos deixei de ser developer a tempo inteiro e comecei a liderar equipas. 22 anos depois do início da minha carreira, ainda faço push de código todas as …