41554 blogs · [ { "id": "01a0b0c6-07ca-739f-8d8b-c3f2a253b129", "title": "AMALIA vs. smaller reasoning models", "url": "https://duarteocarmo.com/blog/amalia-vs-smaller-reasoning-models.html", "published_at": "2026-09-13T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1727428d", "title": "Retrospectiva #11", "url": "https://duarteocarmo.com/blog/retrospectiva-11.html", "published_at": "2026-09-07T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a181e01d7", "title": "How I use Pi", "url": "https://duarteocarmo.com/blog/how-i-use-pi.html", "published_at": "2026-08-29T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a189d7d32", "title": "Bagaço v3: Now with PDFs and Wikipedia!", "url": "https://duarteocarmo.com/blog/bagaco-v3-now-with-pdfs-and-wikipedia.html", "published_at": "2026-08-24T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a18ee8305", "title": "Retrospectiva #10", "url": "https://duarteocarmo.com/blog/retrospectiva-10.html", "published_at": "2026-08-09T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a19391141", "title": "Ginjinha: Pretraining LLMs on European Portuguese", "url": "https://duarteocarmo.com/blog/ginjinha-pretraining-llms-on-european-portuguese.html", "published_at": "2026-08-05T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a19dd9d91", "title": "Retrospectiva #9", "url": "https://duarteocarmo.com/blog/retrospectiva-9.html", "published_at": "2026-07-05T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1a04cbdb", "title": "How I Hermes", "url": "https://duarteocarmo.com/blog/how-i-hermes.html", "published_at": "2026-06-12T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1aab661f", "title": "Retrospectiva #8", "url": "https://duarteocarmo.com/blog/retrospectiva-8.html", "published_at": "2026-06-03T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1b63f02c", "title": "TTS doesn't suck anymore", "url": "https://duarteocarmo.com/blog/tts-doesnt-suck-anymore.html", "published_at": "2026-05-25T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1b9745ac", "title": "The largest open pretraining dataset for European Portuguese", "url": "https://duarteocarmo.com/blog/the-largest-open-pretraining-dataset-for-european-portuguese.html", "published_at": "2026-05-11T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1b9b855b", "title": "Retrospectiva #7", "url": "https://duarteocarmo.com/blog/retrospectiva-7.html", "published_at": "2026-05-03T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1bce1032", "title": "AMÁLIA and the future of European Portuguese LLMs", "url": "https://duarteocarmo.com/blog/amalia-and-the-future-of-european-portuguese-llms.html", "published_at": "2026-04-23T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1ccc6fbf", "title": "Retrospectiva #6", "url": "https://duarteocarmo.com/blog/retrospectiva-6.html", "published_at": "2026-04-02T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1ce8d7c8", "title": "An opinionated running dashboard", "url": "https://duarteocarmo.com/blog/an-opinionated-running-dashboard.html", "published_at": "2026-03-24T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1d21da22", "title": "Portuguese variety identification: The bitter lesson", "url": "https://duarteocarmo.com/blog/portuguese-variety-identification-the-bitter-lesson.html", "published_at": "2026-03-08T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1e11a884", "title": "Retrospectiva #5", "url": "https://duarteocarmo.com/blog/retrospectiva-5.html", "published_at": "2026-02-28T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1efb15d7", "title": "Bagaço: A pretraining dataset for European Portuguese", "url": "https://duarteocarmo.com/blog/bagaco-a-pretraining-dataset-for-european-portuguese.html", "published_at": "2026-02-22T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a1fd9233d", "title": "Retrospectiva #4", "url": "https://duarteocarmo.com/blog/retrospectiva-4.html", "published_at": "2026-01-27T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2065a3a4", "title": "How to police your agents", "url": "https://duarteocarmo.com/blog/how-to-police-your-agents.html", "published_at": "2026-01-22T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a211ed1ef", "title": "Limpa: Ad-Free podcasts powered by LLMs", "url": "https://duarteocarmo.com/blog/limpa-ad-free-podcasts-powered-by-llms.html", "published_at": "2026-01-04T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a21a53102", "title": "Retrospectiva #3", "url": "https://duarteocarmo.com/blog/retrospectiva-3.html", "published_at": "2025-12-24T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2225feb0", "title": "From NutriBench to Taralli: How far can you take a prompt?", "url": "https://duarteocarmo.com/blog/from-nutribench-to-taralli-how-far-can-you-take-a-prompt.html", "published_at": "2025-12-22T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2226f7cd", "title": "Retrospectiva #2", "url": "https://duarteocarmo.com/blog/retrospectiva-2.html", "published_at": "2025-11-24T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a232016cc", "title": "Book release: DeepSeek in Practice", "url": "https://duarteocarmo.com/blog/book-release-deepseek-in-practice.html", "published_at": "2025-11-16T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a232a9d39", "title": "TTS still sucks", "url": "https://duarteocarmo.com/blog/tts-still-sucks.html", "published_at": "2025-11-09T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a23a8efe2", "title": "Retrospectiva #1", "url": "https://duarteocarmo.com/blog/retrospectiva-1.html", "published_at": "2025-10-30T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a242d90e7", "title": "Faísca: The modern LLM stack in a single script", "url": "https://duarteocarmo.com/blog/faisca-the-modern-llm-stack-in-a-single-script.html", "published_at": "2025-10-14T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a25006c9c", "title": "AI: the utility bubble - for Publico.pt", "url": "https://www-publico-pt.translate.goog/2025/10/08/opiniao/opiniao/ia-bolha-utilidade-2150129?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp", "published_at": "2025-10-08T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a256c48f1", "title": "Drowning in News", "url": "https://duarteocarmo.com/blog/drowning-in-news.html", "published_at": "2025-10-04T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a25f4b444", "title": "Common misconceptions about AI", "url": "https://duarteocarmo.com/blog/common-misconceptions-about-ai.html", "published_at": "2025-09-06T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a26a7773b", "title": "A Benchmark for language models on European Portuguese", "url": "https://duarteocarmo.com/blog/a-benchmark-for-language-models-on-european-portuguese.html", "published_at": "2025-07-20T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a27578170", "title": "MCPs are mostly hype", "url": "https://duarteocarmo.com/blog/mcps-are-mostly-hype.html", "published_at": "2025-06-05T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a27fe7193", "title": "Evals are all you need", "url": "https://duarteocarmo.com/blog/evals-are-all-you-need.html", "published_at": "2025-05-03T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a287e5c3d", "title": "Taralli: Home-Cooked Food Tracking Without the BS", "url": "https://duarteocarmo.com/blog/taralli-home-cooked-food-tracking-without-the-bs.html", "published_at": "2025-04-06T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a29102dd0", "title": "Goodbye Kindle, I don't think I'll miss you.", "url": "https://duarteocarmo.com/blog/goodbye-kindle-i-dont-think-ill-miss-you.html", "published_at": "2025-03-28T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a296ad0e3", "title": "You also hate SQL? Let the LLM handle it", "url": "https://duarteocarmo.com/blog/you-also-hate-sql-let-the-llm-handle-it.html", "published_at": "2025-03-08T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a29d60d4f", "title": "Simple AI tools", "url": "https://duarteocarmo.com/blog/simple-ai-tools.html", "published_at": "2025-02-17T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2a01547b", "title": "What the hell Is GPQA, anyway?", "url": "https://duarteocarmo.com/blog/what-the-hell-is-gqpa-anyway.html", "published_at": "2025-01-14T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2a9f1565", "title": "RAG tricks from the trenches", "url": "https://duarteocarmo.com/blog/rag-tricks-from-the-trenches.html", "published_at": "2024-12-29T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2b9ee635", "title": "An ode to the Marathon", "url": "https://duarteocarmo.com/blog/the-marathon.html", "published_at": "2024-12-16T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2bfbc5ee", "title": "Upgrading this website's podcast with F5-TTS", "url": "https://duarteocarmo.com/blog/podcast-tts-f5-tts-python.html", "published_at": "2024-11-11T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2c8cedb1", "title": "What if ChatGPT's memory was a knowledge graph?", "url": "https://knowledgegraphchat.duarteocarmo.com/", "published_at": "2024-10-28T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2d06994e", "title": "Classification in the age of LLMs: The emoji problem", "url": "https://duarteocarmo.com/blog/classification-llms-emoji-open-source-ollama.html", "published_at": "2024-10-06T22:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2df88d70", "title": "Around Iceland in 6 days", "url": "https://duarteocarmo.com/blog/around-iceland-6-days-camping-itinerary.html", "published_at": "2024-08-30T13:30:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2e688f14", "title": "Tanda Runner: A personalized running dashboard", "url": "https://duarteocarmo.com/blog/tanda-runner.html", "published_at": "2024-07-22T15:55:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2f5b0f9e", "title": "Do things that don't scale", "url": "https://duarteocarmo.com/blog/do-things-that-dont-scale.html", "published_at": "2024-06-06T08:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2f8c7c79", "title": "How I self-host in 2024", "url": "https://duarteocarmo.com/blog/how-i-self-host-in-2024.html", "published_at": "2024-04-28T17:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2f940899", "title": "The best keyboard I've ever had", "url": "https://duarteocarmo.com/blog/happy-hacking-keyboard-review.html", "published_at": "2024-04-22T19:30:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2f9b2be2", "title": "An experiment with Gemma 2B and a Portuguese classic", "url": "https://lusiaidas.duarteocarmo.com/", "published_at": "2024-04-10T18:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a2fd347dd", "title": "NewsHavn: Danish news, in English", "url": "https://duarteocarmo.com/blog/newshavn-danish-news-in-english.html", "published_at": "2024-02-26T19:30:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a30061859", "title": "mistral-doc: Fine-tuning an LLM on my ChatGPT conversations", "url": "https://duarteocarmo.com/blog/mistral-doc-fine-tuning-an-llm-on-my-chatgpt-conversations.html", "published_at": "2024-02-09T12:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a303135aa", "title": "What's in my NOW?", "url": "https://kk.org/cooltools/whats-in-my-now-duarte-o-carmo/", "published_at": "2024-02-01T09:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a3034909f", "title": "Self-hosting my personal LLM (but not quite)", "url": "https://duarteocarmo.com/blog/self-hosting-llm-ambrosio.html", "published_at": "2024-01-21T21:35:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a30c6b079", "title": "Rebuilding /photos", "url": "https://duarteocarmo.com/blog/rebuilding-photos.html", "published_at": "2024-01-02T21:35:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a312ef76b", "title": "You can now listen to this blog", "url": "https://duarteocarmo.com/blog/you-can-now-listen-to-this-blog.html", "published_at": "2023-12-08T04:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a31ead541", "title": "Should you go into management consulting? Maybe.", "url": "https://duarteocarmo.com/blog/management-consulting.html", "published_at": "2023-11-08T07:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a322923d3", "title": "Changelog neural search", "url": "https://duarteocarmo.com/blog/changelog-neural-search-superduperdb.html", "published_at": "2023-10-06T03:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a32cc87fe", "title": "A poor man's guide to fine-tuning Llama 2", "url": "https://duarteocarmo.com/blog/fine-tune-llama-2-telegram.html", "published_at": "2023-09-26T11:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a33b52060", "title": "aicoverlettercreator.com", "url": "https://duarteocarmo.com/blog/ai-cover-letter-creator-django-ai.html", "published_at": "2023-07-19T11:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a34786743", "title": "Supercharging my Telegram group with the help of ChatGPT", "url": "https://duarteocarmo.com/blog/supercharging-telegram-bot-chatgpt-python.html", "published_at": "2023-06-10T00:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a3524bf62", "title": "Fine-tuning FLAN-T5 to replace my friends", "url": "https://duarteocarmo.com/blog/fine-tune-flan-t5-telegram.html", "published_at": "2023-05-24T14:15:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a357b4a94", "title": "Governo Sombra transcripts", "url": "https://duarteocarmo.com/blog/governo-sombra-transcripts.html", "published_at": "2023-04-19T14:30:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a35a76fde", "title": "LLMs in production: lessons learned", "url": "https://duarteocarmo.com/blog/llms-lessons-learned.html", "published_at": "2023-03-26T18:35:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a3633e70e", "title": "parlabot - ask the Portuguese parliament", "url": "https://duarteocarmo.com/blog/parlabot.html", "published_at": "2023-02-27T17:55:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a3646ca7f", "title": "An opinionated Python boilerplate", "url": "https://duarteocarmo.com/blog/opinionated-python-boilerplate.html", "published_at": "2023-02-17T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a37394521", "title": "On Rust", "url": "https://duarteocarmo.com/blog/on-rust.html", "published_at": "2023-01-01T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a374ccb78", "title": "Scaling Machine Learning microservices", "url": "https://semaphore.io/blog/machine-learning-microservice", "published_at": "2022-12-17T23:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a38341cdf", "title": "Monitoring Machine Learning APIs", "url": "https://duarteocarmo.com/blog/monitoring-machine-learning-apis.html", "published_at": "2022-12-06T09:30:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a387dccdc", "title": "Goodbye Apple Watch", "url": "https://duarteocarmo.com/blog/coros-pace-2-apple-watch.html", "published_at": "2022-10-29T10:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a38812a35", "title": "infrequent.app - stay in touch with those who matter", "url": "https://duarteocarmo.com/blog/infrequent.html", "published_at": "2022-10-23T17:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a3943885e", "title": "Monitoring ML models with FastAPI and Evidently AI", "url": "https://duarteocarmo.com/blog/monitoring-ml-models-fastapi-evidently.html", "published_at": "2022-09-17T13:00:00+00:00" }, { "id": "01a08770-3c63-7061-b363-d03a39775908", "title": "Down from the Cloud", "url": "https://duarteocarmo.com/blog/down-from-the-cloud-self-hosting.html", "published_at": "2022-08-05T09:00:00+00:00" } ] posts Claim your blog
Back to Duarte O.Carmo
Blog · corpus.blog/blogs/duarteocarmo.com/posts

Duarte O.Carmo

duarteocarmo.com

2026

2025

2024

2023

2022