<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>diogo.dev</title>
    <link>https://diogo.dev/</link>
    <description>Recent content on diogo.dev</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 06 Dec 2025 01:01:07 +0100</lastBuildDate>
    <atom:link href="https://diogo.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[en-us] Quick Rails Tip: Change Database Adapter</title>
      <link>https://diogo.dev/posts/quick-rails-tip-change-database-adapter/</link>
      <pubDate>Sat, 06 Dec 2025 01:31:35 +0200</pubDate>
      <guid>https://diogo.dev/posts/quick-rails-tip-change-database-adapter/</guid>
      <description>&lt;h1 id=&#34;quick-rails-tip-changing-database-adapter-with-one-command&#34;&gt;Quick Rails Tip: Changing Database Adapter with one command&lt;/h1&gt;&#xA;&lt;h2 id=&#34;the-magic-command&#34;&gt;The magic command&lt;/h2&gt;&#xA;&lt;p&gt;Rails introduced a command a while back that simplifies database adapter changes.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rails db:system:change --to&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;postgresql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;what-does-this-command-do&#34;&gt;What does this command do&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Updates the Gemfile&lt;/strong&gt; - Adds/removes the necessary gems&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Modifies the database.yml&lt;/strong&gt; - Configures the new connections&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Generates the migrations&lt;/strong&gt; - Creates the migration files for the new database&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Updates the configurations&lt;/strong&gt; - Adjusts the schema.rb and other files&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;more-practical-examples&#34;&gt;More practical examples&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Changing from SQLite to PostgreSQL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rails db:system:change --to&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;postgresql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Changing to MySQL&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rails db:system:change --to&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;mysql&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Going back to SQLite&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rails db:system:change --to&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sqlite3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;important-considerations&#34;&gt;Important considerations&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Always backup!&lt;/strong&gt; - Backup your data before making changes&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Test in development&lt;/strong&gt; - Never test in production&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Check data types&lt;/strong&gt; - Some types may need adjustments&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dependencies&lt;/strong&gt; - Make sure you have the database installed on your machine (or Dockerfile)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;&#xA;&lt;p&gt;Rails is full of hidden gems, and this is one of them. I think it&amp;rsquo;s super useful, especially when you start a small project with SQLite and then want to migrate to PostgreSQL, for example.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[pt-br] Por que seus pull requests devem ser pequenos</title>
      <link>https://diogo.dev/posts/porque-seus-pr-devem-ser-pequenos/</link>
      <pubDate>Tue, 29 Apr 2025 00:15:37 +0100</pubDate>
      <guid>https://diogo.dev/posts/porque-seus-pr-devem-ser-pequenos/</guid>
      <description>&lt;h2 id=&#34;motivação&#34;&gt;Motivação&lt;/h2&gt;&#xA;&lt;p&gt;Tudo começou quando percebi um padrão preocupante no meu trabalho atual: os desenvolvedores demoravam muito mais tempo para revisar PRs grandes. Curioso com essa situação, decidi fazer uma pesquisa(interna) com a equipe para entender melhor o problema. A resposta foi unânime: quando um PR era grande, os desenvolvedores precisavam de um período significativo de tempo para fazer uma revisão adequada, o que significava interromper o trabalho que estavam fazendo. Isso criava um bloqueio muito grande para o autor do PR.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] Setup Rails Active Storage with Hetzner</title>
      <link>https://diogo.dev/posts/setup-rails-active-storage-with-hetzner/</link>
      <pubDate>Fri, 11 Apr 2025 22:07:11 +0200</pubDate>
      <guid>https://diogo.dev/posts/setup-rails-active-storage-with-hetzner/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;If you don&amp;rsquo;t know what &lt;a href=&#34;https://www.hetzner.com/de/&#34;&gt;Hetzner&lt;/a&gt; is, you&amp;rsquo;re missing out. It is a cloud provider very similar to Digital Ocean, but with incredibly cheap prices. Currently, it&amp;rsquo;s my first choice when it comes to deploying my side projects.&lt;/p&gt;&#xA;&lt;p&gt;While Hetzner doesn&amp;rsquo;t have as many features as Digital Ocean, they have the important ones. And today I&amp;rsquo;d like to talk about one in particular, the &lt;a href=&#34;https://www.hetzner.com/de/&#34;&gt;Object Storage&lt;/a&gt;. It&amp;rsquo;s basically a wrapper for AWS S3 with cheap prices and none of the complexity to set up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[pt-br] 8 Anos de Alemanha e como isso me mudou</title>
      <link>https://diogo.dev/posts/8-anos-de-alemanha-e-como-isso-me-mudou/</link>
      <pubDate>Sun, 23 Mar 2025 14:19:37 +0100</pubDate>
      <guid>https://diogo.dev/posts/8-anos-de-alemanha-e-como-isso-me-mudou/</guid>
      <description>&lt;p&gt;No dia 20 de fevereiro de 2025, eu e minha esposa completamos 8 anos na Alemanha. Cheguei aqui com apenas 32 anos e agora sou um quarentão. Nossa filha nasceu aqui em 2018 e hoje fala alemão melhor que nós dois. Aliás, até português ela fala melhor que eu.&lt;/p&gt;&#xA;&lt;p&gt;Tudo começou em 2016, quando a startup que eu co-fundei faliu. De repente, me vi sem emprego, sem salário e sem saber o que fazer. E isso tudo no meio de um planejamento de casamento.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] My first side project was a success—and then I blew it</title>
      <link>https://diogo.dev/posts/my-first-side-project-was-a-successand-then-i-blew-it/</link>
      <pubDate>Mon, 09 Dec 2024 21:44:55 -0300</pubDate>
      <guid>https://diogo.dev/posts/my-first-side-project-was-a-successand-then-i-blew-it/</guid>
      <description>&lt;p&gt;The year was 2005, and I was in my second year of Computer Science. I loved web development and wanted to learn a language that could help me build real applications.&lt;/p&gt;&#xA;&lt;p&gt;At the time, tabletop RPG players—myself included—had a problem. Games like &lt;em&gt;Vampire: The Masquerade&lt;/em&gt; required groups to meet in person, but as we grew older, got jobs, and scattered across cities, gathering became impossible. There were no online tools to play RPGs with friends.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] Docker Compose and Rails 8, Tailwind and SQLite</title>
      <link>https://diogo.dev/posts/docker-compose-and-rails-8-tailwind-sqlite/</link>
      <pubDate>Mon, 18 Nov 2024 23:03:11 +0100</pubDate>
      <guid>https://diogo.dev/posts/docker-compose-and-rails-8-tailwind-sqlite/</guid>
      <description>&lt;p&gt;Hello, long time no see!&lt;/p&gt;&#xA;&lt;p&gt;In this guide I&amp;rsquo;m going to show you how to use Docker Compose to setup and run a Ruby On Rails application using the brand new version 8. In this guide I&amp;rsquo;m not going to list all new features that are shipped with the newest version. If you want to know more about, you can check the &lt;a href=&#34;https://rubyonrails.org/2024/9/27/rails-8-beta1-no-paas-required&#34;&gt;official release note&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s only one requirement to make this guide work, which is having &lt;a href=&#34;https://www.docker.com/products/docker-desktop/&#34;&gt;Docker&lt;/a&gt; or &lt;a href=&#34;https://orbstack.dev/download&#34;&gt;OrbStack&lt;/a&gt; installed on your computer. That&amp;rsquo;s it. You don&amp;rsquo;t need to install Ruby, Postgres, SQLite, Redis&amp;hellip; nothing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[pt-br] Ideias de projetos para iniciantes em Ruby on Rails</title>
      <link>https://diogo.dev/posts/ideias-de-projetos-para-iniciantes-em-ruby-on-rails/</link>
      <pubDate>Fri, 14 Jul 2023 21:35:28 +0000</pubDate>
      <guid>https://diogo.dev/posts/ideias-de-projetos-para-iniciantes-em-ruby-on-rails/</guid>
      <description>&lt;h3 id=&#34;olá&#34;&gt;Olá!&lt;/h3&gt;&#xA;&lt;p&gt;Quando eu estava aprendendo a programar para a web, o que me ajudou a melhorar minhas habilidades foi desenvolver um projeto sozinho, definindo funcionalidades das quais eu não tinha ideia de como implementá-las. Isso me desafiou bastante e, ao mesmo tempo em que meu projeto progredia, mais eu aprendia sobre a linguagem (PHP, na época) e todo o ambiente web, como, por exemplo, HTML, CSS, banco de dados e, por fim, como colocar em produção.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] Good alternatives to heroku</title>
      <link>https://diogo.dev/posts/good-alternatives-to-heroku/</link>
      <pubDate>Thu, 15 Jun 2023 17:09:07 +0000</pubDate>
      <guid>https://diogo.dev/posts/good-alternatives-to-heroku/</guid>
      <description>&lt;p&gt;A while ago, I attempted to deploy a side project on Heroku, and, to my surprise, a lot had changed on the platform. Basically, Heroku&amp;rsquo;s free-tier service was no longer available. This was not only bad news for me, but also for every Rails developer who had side projects running there.&lt;/p&gt;&#xA;&lt;p&gt;So, I went to Twitter to express my concerns about these changes and received many replies suggesting good alternatives. As a result, I have compiled all these suggestions here for you and for my future reference&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] Learning Rails 7 and hotwire</title>
      <link>https://diogo.dev/posts/learning-rails-7-and-hotwire/</link>
      <pubDate>Thu, 09 Feb 2023 22:14:14 +0000</pubDate>
      <guid>https://diogo.dev/posts/learning-rails-7-and-hotwire/</guid>
      <description>&lt;h3 id=&#34;hey-you&#34;&gt;Hey, you!&lt;/h3&gt;&#xA;&lt;p&gt;In this article, you&amp;rsquo;re not going to learn how to use &lt;a href=&#34;https://hotwired.dev/&#34;&gt;Hotwire&lt;/a&gt;. I&amp;rsquo;ll just be going to give some of my input about this new approach and explain how I normally set up a rails application from scratch.&lt;/p&gt;&#xA;&lt;p&gt;First of all, if you want to learn how to use Hotwire, follow this &lt;a href=&#34;https://www.hotrails.dev/turbo-rails&#34;&gt;tutorial&lt;/a&gt;, which is what I did and by the time you finish you&amp;rsquo;ll be understanding this new approach and will be ready to apply it by yourself.&lt;/p&gt;</description>
    </item>
    <item>
      <title>[en-us] Welcome to my first blog ever!</title>
      <link>https://diogo.dev/posts/welcome-to-my-first-blog-ever/</link>
      <pubDate>Tue, 07 Feb 2023 09:03:20 -0800</pubDate>
      <guid>https://diogo.dev/posts/welcome-to-my-first-blog-ever/</guid>
      <description>&lt;p&gt;Hi there,&lt;/p&gt;&#xA;&lt;p&gt;For those who don’t know me, my name is Diogo, and I’ve been living in Berlin since 2017, although I’m originally from Brazil. If you want to know more about my career in software development, &lt;a href=&#34;https://diogo.dev/about&#34;&gt;click here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Originally, this blog post was just going to say that this is my first blog post (not just blog), but then I remembered that I’ve written blog posts before on different platforms back in 2007 when I worked with PHP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Me</title>
      <link>https://diogo.dev/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://diogo.dev/about/</guid>
      <description>&lt;h3 id=&#34;hi-there-&#34;&gt;Hi there! 👋&lt;/h3&gt;&#xA;&lt;p&gt;I’m a seasoned software engineering and management professional with over 15 years of experience. My career spans a variety of roles, including Co-Founder, Tech Lead, Engineering Manager, and Consultant for companies like Macy’s and GAP.&lt;/p&gt;&#xA;&lt;p&gt;I have a solid and diverse educational background, which gives me both technical expertise and strategic business skills. My international experience has also helped me work effectively across cultural and technical differences.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
