<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Daniel's Tech Blog</title><link>https://tech.daniellbastos.com.br/</link><description>Recent content on Daniel's Tech Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 10 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tech.daniellbastos.com.br/index.xml" rel="self" type="application/rss+xml"/><item><title>Access Path Selection in a Relational Database Management System - Notes Through Chapter 3</title><link>https://tech.daniellbastos.com.br/posts/access-path-selection-relational-database-management-system/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/access-path-selection-relational-database-management-system/</guid><description>&lt;blockquote&gt;
&lt;p&gt;This post is a study dump. I&amp;rsquo;ve been reading &lt;a href="https://courses.cs.duke.edu/compsci516/cps216/spring03/papers/selinger-etal-1979.pdf"&gt;Access Path Selection in a Relational Database Management System (Selinger et al., 1979)&lt;/a&gt; and stopped at chapter 3 to consolidate what I learned. I used available internet resource and tools to go deeper on the examples and make the concepts more concrete.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="what-the-paper-covers"&gt;What the paper covers&lt;/h2&gt;
&lt;p&gt;The paper describes how System R, an experimental relational database built at IBM in the 1970s, chooses access paths to execute SQL queries. You write SQL declaratively, without specifying how data is accessed or in what order joins happen. The optimizer decides both, minimizing total access cost.&lt;/p&gt;</description></item><item><title>About</title><link>https://tech.daniellbastos.com.br/about/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/about/</guid><description/></item><item><title>tottime = 0 doesn’t mean fast</title><link>https://tech.daniellbastos.com.br/posts/tottime-zero-doesnt-mean-fast/</link><pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/tottime-zero-doesnt-mean-fast/</guid><description>&lt;p&gt;Adam Johnson released a new library recently called &lt;a href="https://adamj.eu/tech/2026/04/03/python-introducing-profiling-explorer/"&gt;profiling-explorer&lt;/a&gt;. A browser-based interface for &lt;code&gt;.pstats&lt;/code&gt; files, the binary output that &lt;code&gt;cProfile&lt;/code&gt; writes to disk when you profile Python code. Fancy and friendly UI, kind of tool that makes a familiar workflow suddenly feel less like archaeology.&lt;/p&gt;
&lt;p&gt;Looking at it triggered a question that had nothing to do with the tool itself. What&amp;rsquo;s actually in there the &lt;code&gt;.pstats&lt;/code&gt; files? How it gets produced. What it means when &lt;code&gt;cumtime&lt;/code&gt; on a function is 20 times larger than &lt;code&gt;tottime&lt;/code&gt;.
The tool was the rock. The investigation was the wave.&lt;/p&gt;</description></item><item><title>What fork() actually copies and how it impact your celery service</title><link>https://tech.daniellbastos.com.br/posts/what-fork-actually-copies/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/what-fork-actually-copies/</guid><description>&lt;p&gt;Shallow changes can have consequences at the bottom of the ocean. This post is an account of something that happened to me recently, and the story is still open. The services are stable, the revert held, and a pull request is sitting there waiting for the team to review. The proposed solution makes sense on paper. Whether it fully solves the problem in practice is something we’ll only know after thorough testing in staging next week.&lt;/p&gt;</description></item><item><title>Teaching AI to teach itself: Why configuration beats correction</title><link>https://tech.daniellbastos.com.br/posts/teaching-ai-to-teach-itself/</link><pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/teaching-ai-to-teach-itself/</guid><description>&lt;p&gt;I spent weeks fighting with AI agents, giving detailed prompts every single time. &amp;ldquo;Write good commit messages. Add proper tests. Follow the project structure.&amp;rdquo; Over and over.&lt;/p&gt;
&lt;p&gt;It worked. Kind of. But it was exhausting.&lt;/p&gt;
&lt;p&gt;Then I realized: &lt;strong&gt;the quality of work you get from an AI agent is directly proportional to the effort you put into its configuration files.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not the prompts. Not the model. The configuration.&lt;/p&gt;
&lt;h2 id="fix-the-workflow-not-the-instance"&gt;Fix the workflow, not the instance&lt;/h2&gt;
&lt;p&gt;When the AI makes the same mistake repeatedly—vague commit messages, incomplete tests, missing documentation—your instinct is to correct it in the moment.&lt;/p&gt;</description></item><item><title>The best code is the one you don't write</title><link>https://tech.daniellbastos.com.br/posts/the-best-code-is-the-one-you-dont-write/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/the-best-code-is-the-one-you-dont-write/</guid><description>&lt;p&gt;As software developers, our goal has always been to build good software. In the AI era, this remains true. But here is what changed: our job is not just &amp;ldquo;writing good code&amp;rdquo; anymore.&lt;/p&gt;
&lt;p&gt;I have been building software for years. I wrote a lot of code. Good code. Bad code. Code that lasted. Code that I wish I could erase from existence. And now, looking back, I realize the game has changed. The role evolved.&lt;/p&gt;</description></item><item><title>Less hands, more brain</title><link>https://tech.daniellbastos.com.br/posts/less-hand-more-brain/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/less-hand-more-brain/</guid><description>&lt;p&gt;Recently, I started a new project.&lt;/p&gt;
&lt;p&gt;Nothing absurdly complex. Not a moonshot. Just a real project with real deadlines, real expectations, and a team that needs things to work.&lt;/p&gt;
&lt;p&gt;At first sight, it was a greenfield initiative, &amp;ldquo;from zero.&amp;rdquo; But if we are honest, almost nothing in software is truly from zero. We had references from other projects, existing patterns, hard lessons from previous mistakes, and a company context that should not be ignored.&lt;/p&gt;</description></item><item><title>Dev x AI: between rejection and excitement</title><link>https://tech.daniellbastos.com.br/posts/dev-x-ai-between-rejection-and-excitement/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><guid>https://tech.daniellbastos.com.br/posts/dev-x-ai-between-rejection-and-excitement/</guid><description>&lt;p&gt;From one developer to another, if I ignore the content bubble that needs to surf every &amp;ldquo;new summer trend,&amp;rdquo; I see two very clear feelings when the topic is AI: rejection and excitement.&lt;/p&gt;
&lt;h2 id="feeling-of-rejection"&gt;Feeling of rejection&lt;/h2&gt;
&lt;p&gt;This is the classic one: &amp;ldquo;I don&amp;rsquo;t need this,&amp;rdquo; &amp;ldquo;my code is already better,&amp;rdquo; &amp;ldquo;this only gets in the way,&amp;rdquo; &amp;ldquo;AI is dumb.&amp;rdquo; Deep down, it is almost never only about AI.&lt;/p&gt;
&lt;p&gt;This profile usually also has difficulty listening, collaborating, accepting review, and admitting mistakes. It is the &amp;ldquo;know-it-all&amp;rdquo; profile, always with a ready excuse to explain any bad decision or problem. But software development is not an individual sport.&lt;/p&gt;</description></item></channel></rss>