Duarte O.Carmo's articles
Episodes
#65 Retrospectiva #6
02 Apr 2026
Contributed by Lukas
Marking my 100th post from an airplane seat, I share a new-format roundup of tools, reads, listens, and watches that shaped my month. I dig into Pi.d...
#64 An opinionated running dashboard
24 Mar 2026
Contributed by Lukas
I introduce a new version of Tanda Runner, focused on letting you plan for any running goal with a redesigned chat interface and a fully automated, p...
#64 Portuguese variety identification: The bitter lesson
08 Mar 2026
Contributed by Lukas
I explore how to reliably distinguish European and Brazilian Portuguese at scale, moving beyond BERT-based approaches that don’t scale for web-scal...
#64 Retrospectiva #5
28 Feb 2026
Contributed by Lukas
I share a February roundup: returning home to Copenhagen, winter runs on Denmark’s flat terrain, and taking Allegra everywhere with the Ergo Baby O...
#64 Bagaço: A pretraining dataset for European Portuguese
22 Feb 2026
Contributed by Lukas
I introduce Bagaço, a European Portuguese-focused subset of FineWeb2 that keeps 16M Portugal-domain documents and adds two classifiers: a nine-categ...
#63 Retrospectiva #4
27 Jan 2026
Contributed by Lukas
In this month’s retrospective, I write from Italy’s Marche region, where slow living, daily runs in Conero, and family time beat the winter blues...
#63 How to police your agents
22 Jan 2026
Contributed by Lukas
I share how I “police” my AI coding agents with a three-layer approach: a personal Constitution (AGENTS.md) that encodes my preferences, project-...
#63 Limpa: Ad-Free podcasts powered by LLMs
04 Jan 2026
Contributed by Lukas
I built Limpa, a simple Django and htmx-powered web app that generates ad-free podcast feeds by transcribing the latest episode, using a large langua...
#63 Retrospectiva #3
24 Dec 2025
Contributed by Lukas
A year-end Retrospectiva from Lisbon: we made a last-minute Christmas trip with our newborn after a passport scramble, and I look back on a packed tw...
#62 From NutriBench to Taralli: How far can you take a prompt?
22 Dec 2025
Contributed by Lukas
I walk through how I used the NutriBench dataset and DSPy to rigorously evaluate and improve Taralli’s calorie estimation, moving beyond “vibes”...
#61 Retrospectiva #2
24 Nov 2025
Contributed by Lukas
In this month’s Retrospectiva, I share the joyful news of Allegra’s arrival, the release of my DeepSeek book, and a pared‑down tool stack that ...
#60 Book release: DeepSeek in Practice
16 Nov 2025
Contributed by Lukas
Back in May this year, my longtime friend Alex reached out and asked me if I wanted to collaborate with him on a book about DeepSeek. I would l...
#59 TTS still sucks
09 Nov 2025
Contributed by Lukas
or at least the open versions of it. I have this very stupid rule. A couple of years ago I decided to turn this blog into a podcast. At the time, I de...
#58 Retrospectiva #1
30 Oct 2025
Contributed by Lukas
Welcome to Retrospectiva. Retrospectiva is a monthly update about what I’ve been up to. In the age of LLMs, I’ve heard many argue that it’s hard...
#57 Faísca: The modern LLM stack in a single script
14 Oct 2025
Contributed by Lukas
Why do this? A small dataset of news headlines GPT2 in PyTorch Pre-training headlines in Portuguese Supervised fine-tuning (SFT) on Portuguese from...
#55 Drowning in News
04 Oct 2025
Contributed by Lukas
The world moves fast, faster every day. For those who work with technology - and even those who don't - it's hard to keep up with the news. But I've a...
#59 Common misconceptions about AI
06 Sep 2025
Contributed by Lukas
It's that time of year again. As usual, we took a couple of weeks off and came south: a bit of Portugal, a bit of Italy, a lot of friends and family...
#58 A Benchmark for language models on European Portuguese
20 Jul 2025
Contributed by Lukas
A couple of weeks ago in Lisbon, I went to a friend's birthday dinner. In front of …
#57 MCPs are mostly hype
05 Jun 2025
Contributed by Lukas
..but they can also be a lot of fun. If you work in tech, I'd say there's a 98% chance you've heard about it. MCPs are the future of agents, MCPs will...
#56 Evals are all you need
03 May 2025
Contributed by Lukas
Last month, I built an app called Taralli. It was fun to close the loop and get it out there. Still - there was an elephant in the room: "...[calorie...
#55 Taralli: Home-Cooked Food Tracking Without the BS
06 Apr 2025
Contributed by Lukas
For years, I never really cared about what I ate, how much I ate, or when I ate it. But sometime late last year, I finally decided to listen to Vitto....
#54 Goodbye Kindle, I don't think I'll miss you
28 Mar 2025
Contributed by Lukas
Even though it never really replaced physical books for me, I've been a big Kindle user for many years. The ability to take hundreds of books with m...
#53 You also hate SQL? Let the LLM handle it
08 Mar 2025
Contributed by Lukas
Last year I made an effort to speak less and learn more. However, I still had the opportunity to present at a couple of conferences. One of them was P...
#52 Simple AI tools
17 Feb 2025
Contributed by Lukas
Last week over lunch, Pedro was telling me how he uses Perplexity to improve the way he searches around the web. He mentioned we're entering a phase w...
#51 What the hell Is GPQA, anyway?
14 Jan 2025
Contributed by Lukas
In the period of the generative AI boom, everything is happening all at once. Every day a new model comes out, every week a billion dollar company tea...
#50 RAG tricks from the trenches
29 Dec 2024
Contributed by Lukas
Some context Our data: A controversial dataset A stupid simple vector store Plain RAG Complicating things: Hybrid Search What if we ask for a summa...
#49 An ode to the Marathon
16 Dec 2024
Contributed by Lukas
I'm flying over the Atlantic just between France and Spain for my yearly Christmas trip back to Lisbon. For some reason, I just remembered the blog po...
#48 Upgrading this website's podcast with F5-TTS
11 Nov 2024
Contributed by Lukas
For the past year, this website's podcast companion has been running on a text-to-speech model called XTTS-v2. It's not horrible. And those who have h...
#46 Classification in the age of LLMs: The emoji problem
06 Oct 2024
Contributed by Lukas
For the past years Vitto and I have used Tricount to track our shared expenses. The app is actually pretty good, but there’s one small thing that...
#45 Around Iceland in 6 days
30 Aug 2024
Contributed by Lukas
For a short summer break, Vitto challenged me to visit Iceland with her. As someone that is used to going south for the summer - this sounded stupi...
#44 Tanda Runner: A personalized running dashboard
22 Jul 2024
Contributed by Lukas
Tanda Runner is a web app that shows me the things I care most about when preparing my next marathon. I've also added a running coach/agent desig...
#43 Do things that don't scale
06 Jun 2024
Contributed by Lukas
I'm lucky enough to work with some pretty talented folks. During a recent offsite, one of them gave a completely improvised talk. He had just gotten b...
#42 How I self-host in 2024
28 Apr 2024
Contributed by Lukas
I'm a sucker for side projects. There's nothing quite like building something to learn about it. Over the last 5+ years I've accumulated a little over...
#41 The best keyboard I've ever had
22 Apr 2024
Contributed by Lukas
There I was. Ready to click the big blue purchase button. 350 Euro, for a keyboard (!) Asking Vitto multiple times: is this really worth it? Should...
#39 NewsHavn: Danish news, in English
26 Feb 2024
Contributed by Lukas
Conversas de café. Literally translated, means "coffee shop conversations". An upcoming election, the weather next week, a corruption scandal, a new...
#38 mistral-doc: Fine-tuning an LLM on my ChatGPT conversations
09 Feb 2024
Contributed by Lukas
Step-by-step instructions to do it yourself If you ever read this blog, you probably already know by now. For the past couple of months, I've been try...
#36 Self-hosting my personal LLM (but not quite)
21 Jan 2024
Contributed by Lukas
ChatGPT is now part of our daily lives. A quick question, an extra input, some quick feedback, I always reach for it. AGI or not AGI, I certainly can'...
#35 Rebuilding /photos
02 Jan 2024
Contributed by Lukas
A couple of years ago, I decided to remove all my photos from Instagram. I wanted something for myself. Something that suited what I needed. The resul...
#34 You can now listen to this blog
08 Dec 2023
Contributed by Lukas
One of my favorite Portuguese columnists has this weird thing about his column. Maybe it's more common than I thought. For every piece he publishes, h...
#33 Should you go into management consulting? Maybe
08 Nov 2023
Contributed by Lukas
A couple of days ago, someone shared this John Oliver video with me. In it, he shows all the ways McKinsey is a terrible organization. Not a minute in...
#32 Changelog neural search
06 Oct 2023
Contributed by Lukas
Search is one of the most important breakthroughs of the internet. Some are saying a list of blue links is not enough - and that AI will overthrow sea...