<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Alexandre's Blog</title>
  <subtitle>Articles about Ruby, Rails and programming in general.</subtitle>
  <id>https://alexbarret.com/blog</id>
  <link href="https://alexbarret.com/blog"/>
  <link href="https://alexbarret.com/feed.xml" rel="self"/>
  <updated>2025-10-16T20:27:00+00:00</updated>
  <author>
    <name>Blog Author</name>
  </author>
  <entry>
    <title>What's new Alex?</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2025/whats-new/"/>
    <id>https://alexbarret.com/blog/2025/whats-new/</id>
    <published>2025-10-16T20:27:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">A quick update about the blog and where I'm at</summary>
  </entry>
  <entry>
    <title>Perfecting Your Rails Form: Nested Attributes</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2024/perfecting-your-rails-form-part-2/"/>
    <id>https://alexbarret.com/blog/2024/perfecting-your-rails-form-part-2/</id>
    <published>2024-11-09T00:00:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">In this second part of the series, let's explore nested attributes how they work and why they are so complex.</summary>
  </entry>
  <entry>
    <title>Perfecting Your Rails Form: Atribute Accessors</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2024/perfecting-your-rails-form-part-1/"/>
    <id>https://alexbarret.com/blog/2024/perfecting-your-rails-form-part-1/</id>
    <published>2024-10-26T00:00:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">In this first part of a series diving into Rails forms, let's explore Rails conventions used to bridge object accessors with forms.</summary>
  </entry>
  <entry>
    <title>RSpec Testing Levels</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2024/rspec-testing-levels/"/>
    <id>https://alexbarret.com/blog/2024/rspec-testing-levels/</id>
    <published>2024-10-11T21:40:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">Testing journey when using RSpec.</summary>
  </entry>
  <entry>
    <title>What is business logic?</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2024/what-is-business-logic/"/>
    <id>https://alexbarret.com/blog/2024/what-is-business-logic/</id>
    <published>2024-01-29T23:39:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">Writing code that understands business needs</summary>
  </entry>
  <entry>
    <title>Empathetic coding</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2024/empathetic-coding/"/>
    <id>https://alexbarret.com/blog/2024/empathetic-coding/</id>
    <published>2024-01-28T05:01:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">Code like a leader, not a micromanager</summary>
  </entry>
  <entry>
    <title>To Push or Not to Push the Crosswalk Button?</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2023/to-press-or-not-to-press/"/>
    <id>https://alexbarret.com/blog/2023/to-press-or-not-to-press/</id>
    <published>2023-09-30T08:30:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">A story about responsibility, mental load, design, empathetic coding and traffic lights.</summary>
  </entry>
  <entry>
    <title>Identify i18n translation keys</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2023/identify-i18n-keys/"/>
    <id>https://alexbarret.com/blog/2023/identify-i18n-keys/</id>
    <published>2023-03-05T03:44:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">A simple module to help us identify what translation keys are on any page.</summary>
  </entry>
  <entry>
    <title>On writing better service objects</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2022/on-writing-better-service-objects/"/>
    <id>https://alexbarret.com/blog/2022/on-writing-better-service-objects/</id>
    <published>2022-11-16T04:28:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">Let's write Ruby like we write Rails applications and see how we can improve our use of service objects in the process.</summary>
  </entry>
  <entry>
    <title>Testing Rails Scopes</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2022/testing-rails-scopes/"/>
    <id>https://alexbarret.com/blog/2022/testing-rails-scopes/</id>
    <published>2022-11-06T09:35:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">A method to test ActiveRecord model scopes properly.</summary>
  </entry>
  <entry>
    <title>Please show me a Gemfile</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2022/please-show-me-a-gemfile/"/>
    <id>https://alexbarret.com/blog/2022/please-show-me-a-gemfile/</id>
    <published>2022-10-17T06:28:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">One simple file to learn all about a Ruby application.</summary>
  </entry>
  <entry>
    <title>Service object alternatives: Serializers</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2021/you-might-not-need-service-objects-serializers/"/>
    <id>https://alexbarret.com/blog/2021/you-might-not-need-service-objects-serializers/</id>
    <published>2021-06-11T01:28:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">How to improve a specific type of service object and, who knows, get rid of it completely.</summary>
  </entry>
  <entry>
    <title>Skipping existing ActiveRecord validations</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2021/skip-existing-validations-in-rails/"/>
    <id>https://alexbarret.com/blog/2021/skip-existing-validations-in-rails/</id>
    <published>2021-05-13T23:48:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">How to skip existing rails validations with validations contexts.</summary>
  </entry>
  <entry>
    <title>Retest - Docker &amp; feature Specs</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2021/retest-docker-and-feature-specs/"/>
    <id>https://alexbarret.com/blog/2021/retest-docker-and-feature-specs/</id>
    <published>2021-04-20T05:38:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">This article describes the Docker setup used in the end-to-end (2E2) testing of the rubygem retest.</summary>
  </entry>
  <entry>
    <title>Pragmatic refactoring</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2021/pragmatic-refactoring/"/>
    <id>https://alexbarret.com/blog/2021/pragmatic-refactoring/</id>
    <published>2021-03-15T21:55:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">99 Bottles of OOP book review and introducing retest, a gem to help you refactor code on the fly.</summary>
  </entry>
  <entry>
    <title>Testing ActiveRecord concerns</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2021/testing-model-concerns/"/>
    <id>https://alexbarret.com/blog/2021/testing-model-concerns/</id>
    <published>2021-01-14T10:00:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">How to test Rails concerns for ActiveRecord models with temporary database tables.</summary>
  </entry>
  <entry>
    <title>Service object alternatives: ActiveModel</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2020/service-object-alternative/"/>
    <id>https://alexbarret.com/blog/2020/service-object-alternative/</id>
    <published>2020-12-05T10:00:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">How to use ActiveModel::Model to substitute service objects encountered in Rails codebases.</summary>
  </entry>
  <entry>
    <title>Reflect on past commits</title>
    <link rel="alternate" href="https://alexbarret.com/blog/2020/reflect-on-past-commits/"/>
    <id>https://alexbarret.com/blog/2020/reflect-on-past-commits/</id>
    <published>2020-08-25T09:33:00+00:00</published>
    <author>
      <name>Alexandre Barret</name>
    </author>
    <summary type="html">Can you understand your old code? A quick way to reflect and give feedback to your past self.</summary>
  </entry>
</feed>
