<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Cleidson Oliveira</title>
  <subtitle>Notes, essays and technical series by Cleidson Oliveira — software engineering, architecture, and whatever fits between them.</subtitle>
  <id>https://blog.cleidsonoliveira.dev/en/</id>
  <link rel="self" href="https://blog.cleidsonoliveira.dev/en/atom.xml"/>
  <link href="https://blog.cleidsonoliveira.dev/en/"/>
  <updated>2026-04-21T00:00:00.000Z</updated>
  <author>
    <name>Cleidson Oliveira</name>
    <uri>https://blog.cleidsonoliveira.dev/en/</uri>
  </author>
  <entry>
    <title>The Case for a Repo-Centric Backlog CLI</title>
    <id>https://blog.cleidsonoliveira.dev/en/blog/backlog-local-cli-sqlite</id>
    <link href="https://blog.cleidsonoliveira.dev/en/blog/backlog-local-cli-sqlite"/>
    <published>2026-04-21T00:00:00.000Z</published>
    <updated>2026-04-21T00:00:00.000Z</updated>
    <summary>Why I moved my engineering roadmap to a local SQLite database—isolated by project—instead of using Linear, Notion, or scattered Markdown files.</summary>
    <content type="html">&lt;p&gt;Why I moved my engineering roadmap to a local SQLite database—isolated by project—instead of using Linear, Notion, or scattered Markdown files.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.cleidsonoliveira.dev/en/blog/backlog-local-cli-sqlite&quot;&gt;Read more →&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>17 Rust Crates Powering a Small CLI</title>
    <id>https://blog.cleidsonoliveira.dev/en/blog/crates-rust-para-cli</id>
    <link href="https://blog.cleidsonoliveira.dev/en/blog/crates-rust-para-cli"/>
    <published>2026-04-21T00:00:00.000Z</published>
    <updated>2026-04-21T00:00:00.000Z</updated>
    <summary>Real-world stack of a ~3k LoC CLI in Rust: argparse, embedded SQLite, migrations, diagnostic errors, output contract, and interactive prompts.</summary>
    <content type="html">&lt;p&gt;Real-world stack of a ~3k LoC CLI in Rust: argparse, embedded SQLite, migrations, diagnostic errors, output contract, and interactive prompts.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.cleidsonoliveira.dev/en/blog/crates-rust-para-cli&quot;&gt;Read more →&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Hello, world</title>
    <id>https://blog.cleidsonoliveira.dev/en/blog/hello-world</id>
    <link href="https://blog.cleidsonoliveira.dev/en/blog/hello-world"/>
    <published>2026-04-16T00:00:00.000Z</published>
    <updated>2026-04-16T00:00:00.000Z</updated>
    <summary>The first post on this blog. Why it exists, what to expect, and what not to.</summary>
    <content type="html">&lt;p&gt;The first post on this blog. Why it exists, what to expect, and what not to.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://blog.cleidsonoliveira.dev/en/blog/hello-world&quot;&gt;Read more →&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
</feed>
