<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog – Victor Pierre</title>
    <link>https://victorpierre.dev/blog/</link>
    <description>Recent content in Blog on Victor Pierre</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 28 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://victorpierre.dev/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Aligning Go struct fields to save memory</title>
      <link>https://victorpierre.dev/blog/struct-field-alignment/</link>
      <pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/struct-field-alignment/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;composing-case.png&#34;
         alt=&#34;A printer&amp;#39;s composing case: a wooden tray divided into compartments of different sizes, each holding a sort of movable type. The compositor packs the pieces so no space is wasted.&#34;
         title=&#34;A printer&amp;#39;s composing case: a wooden tray divided into compartments of different sizes, each holding a sort of movable type. The compositor packs the pieces so no space is wasted.&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;A printer&amp;rsquo;s composing case&lt;/h4&gt;&lt;p&gt;each sort of movable type packed so no space is wasted.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Building a Personal Knowledge System with Obsidian</title>
      <link>https://victorpierre.dev/blog/personal-knowledge-system/</link>
      <pubDate>Thu, 22 Jan 2026 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/personal-knowledge-system/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;mexican-obsidian-blade.png&#34;
         alt=&#34;Aztec obisian blade - Louis Petich Collection, 13th–16th century&#34;
         title=&#34;Aztec obisian blade - Louis Petich Collection, 13th–16th century&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;Aztec obsidian blade&lt;/h4&gt;&lt;p&gt;Louis Petich Collection, 13th–16th century.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I tend to &lt;strong&gt;write things down&lt;/strong&gt; a lot. I like to write notes during meeting, as I think through problems, as I need to prepare for a presentation, or a large task, or when I just need to remember something later, that I know I&amp;rsquo;ll forget.&lt;/p&gt;
&lt;p&gt;But the problem is that, with so many notes, it&amp;rsquo;s hard to find what I&amp;rsquo;m looking for. I&amp;rsquo;ve tried various tools over the years to keep things organized, and &lt;a href=&#34;https://obsidian.md&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Obsidian&lt;/a&gt; has been by far my favourite. I would prefer something open source, but for my workflow, nothing else comes close.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>Dual-Writes and the Outbox Pattern</title>
      <link>https://victorpierre.dev/blog/transactional-outbox-pattern/</link>
      <pubDate>Sun, 18 Jan 2026 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/transactional-outbox-pattern/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;the_great_courier.png&#34;
         alt=&#34;The Great Courier - Alois Petrak (Czech, 1811–1888)&#34;
         title=&#34;The Great Courier - Alois Petrak (Czech, 1811–1888)&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;The Great Courier&lt;/h4&gt;&lt;p&gt;Alois Petrak (Czech, 1811–1888).&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Your daily reconciliation job flags a problem: dozens of orders exist in your database, but no corresponding events ever reached Kafka. The email service never sent confirmations. The inventory service never reserved stock. After some digging, you find the culprit - Kafka had a brief hiccup yesterday and returned errors for a few publish attempts. The database writes succeeded, but without the outbox pattern, those events were simply lost.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Cooperation Without Dependency</title>
      <link>https://victorpierre.dev/blog/cooperation-without-dependency/</link>
      <pubDate>Tue, 06 Jan 2026 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/cooperation-without-dependency/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;Allegory_of_the_1st_partition_of_Poland_crop.jpg&#34;
         alt=&#34;Allegory of the 1st partition of Poland. Engraving of European powers dividing Poland, symbolizing loss of national sovereignty.&#34;
         title=&#34;Allegory of the 1st partition of Poland. Engraving of European powers dividing Poland, symbolizing loss of national sovereignty.&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;Allegory of the 1st Partition of Poland&lt;/h4&gt;&lt;p&gt;the European powers carving up a nation.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;ldquo;The greatest danger in times of turbulence is not the turbulence; it is to act with yesterday&amp;rsquo;s logic.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;— Peter Drucker&lt;/p&gt;

&lt;/blockquote&gt;
&lt;p&gt;The institutional order built after 1945 is fraying. I did not expect to be writing in 2026 about digital infrastructure as a matter of national security. Yet here we are: the critical systems of Western democracies sit concentrated in foreign jurisdictions, vulnerable precisely when stability matters most.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>2025 - Retrospective</title>
      <link>https://victorpierre.dev/blog/2025-retrospective/</link>
      <pubDate>Mon, 22 Dec 2025 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/2025-retrospective/</guid>
      <description>&lt;p&gt;As we approach the end of 2025, I want to reflect once again on what I&amp;rsquo;ve experienced and learned this year, as well as my hopes and goals for the next. I&amp;rsquo;m reminded of how fortunate I am to have had the experiences and opportunities I&amp;rsquo;ve had.&lt;/p&gt;
&lt;h2&gt;Personal&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;personal&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#personal&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;ve revived an old hobby: photography. This is something I&amp;rsquo;ve always enjoyed. I remember when I was 10 or 11, my parents got me an old &lt;a href=&#34;https://en.wikipedia.org/wiki/Instamatic&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Kodak Instamatic 333-X&lt;/a&gt; (I think) camera that was popular in the 60s and 70s. By the 90s, it was being rebranded and promoted as a cheap camera for kids, complete with Disney characters and all. I must still have some of those random pictures at my parents&amp;rsquo; house.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>Distributed Tracing in Go</title>
      <link>https://victorpierre.dev/blog/distributed-tracing-in-go/</link>
      <pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/distributed-tracing-in-go/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;spinning-by-hand.png&#34;
         alt=&#34;An illustration showing the silk throwing by hand. It shows the silk being stretched between two points multiple times, and is used here to represent metaphorically the trace between two points. (THE PENNY MAGAZINE, VOL XII No. 711. 1843)&#34;
         title=&#34;An illustration showing the silk throwing by hand. It shows the silk being stretched between two points multiple times, and is used here to represent metaphorically the trace between two points. (THE PENNY MAGAZINE, VOL XII No. 711. 1843)&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;Silk-throwing by hand&lt;/h4&gt;&lt;p&gt;the thread traced between two fixed points. (The Penny Magazine, 1843)&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Stacked git branches with git-spice</title>
      <link>https://victorpierre.dev/blog/git-spice/</link>
      <pubDate>Thu, 05 Jun 2025 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/git-spice/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;git-spice-logo.png&#34;
         alt=&#34;A Golang gopher dressed as a worm from the movie/book Dune&#34;
         title=&#34;A Golang gopher dressed as a worm from the movie/book Dune&#34; width=&#34;250&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;Ever find yourself working on a feature that requires either creating a massive PR, which is hard to review, or waiting for each small change to be merged before you can proceed? Implementations that can naturally be broken into smaller PRs, but it is hard to keep them in sync as you get reviews requiring changes.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>2024 - Retrospective</title>
      <link>https://victorpierre.dev/blog/2024-retrospective/</link>
      <pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/2024-retrospective/</guid>
      <description>&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; viewBox=&#34;0 0 800 200&#34;&gt;
  &lt;!-- Background gradient --&gt;
  &lt;defs&gt;
    &lt;linearGradient id=&#34;bgGradient&#34; x1=&#34;0%&#34; y1=&#34;0%&#34; x2=&#34;100%&#34; y2=&#34;0%&#34;&gt;
      &lt;stop offset=&#34;0%&#34; style=&#34;stop-color:#2c3e50&#34;/&gt;
      &lt;stop offset=&#34;100%&#34; style=&#34;stop-color:#3498db&#34;/&gt;
    &lt;/linearGradient&gt;
  &lt;/defs&gt;
  &lt;rect width=&#34;800&#34; height=&#34;200&#34; fill=&#34;url(#bgGradient)&#34;/&gt;
  &lt;!-- Calendar icon --&gt;
  &lt;rect x=&#34;50&#34; y=&#34;60&#34; width=&#34;60&#34; height=&#34;60&#34; fill=&#34;white&#34; rx=&#34;5&#34;/&gt;
  &lt;rect x=&#34;50&#34; y=&#34;60&#34; width=&#34;60&#34; height=&#34;20&#34; fill=&#34;#e74c3c&#34; rx=&#34;5&#34;/&gt;
  &lt;text x=&#34;65&#34; y=&#34;75&#34; font-family=&#34;system-ui, -apple-system, &#39;Segoe UI&#39;, Roboto, Helvetica, Arial, sans-serif&#34; font-size=&#34;14&#34; fill=&#34;white&#34;&gt;2024&lt;/text&gt;
  &lt;!-- Timeline arrow --&gt;
  &lt;path d=&#34;M150 90 H700&#34; stroke=&#34;white&#34; stroke-width=&#34;4&#34; fill=&#34;none&#34;/&gt;
  &lt;polygon points=&#34;690,80 710,90 690,100&#34; fill=&#34;white&#34;/&gt;
  &lt;!-- Milestone circles --&gt;
  &lt;circle cx=&#34;250&#34; cy=&#34;90&#34; r=&#34;8&#34; fill=&#34;#f1c40f&#34;/&gt;
  &lt;circle cx=&#34;400&#34; cy=&#34;90&#34; r=&#34;8&#34; fill=&#34;#f1c40f&#34;/&gt;
  &lt;circle cx=&#34;550&#34; cy=&#34;90&#34; r=&#34;8&#34; fill=&#34;#f1c40f&#34;/&gt;
&lt;/svg&gt;
&lt;p&gt;As 2024 draws to a close, I want to put into words my year-end reflection. It&amp;rsquo;s been an eventful journey filled with opportunities and unexpected changes.&lt;/p&gt;
&lt;h2&gt;Personal: I feel so lucky&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;personal-i-feel-so-lucky&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#personal-i-feel-so-lucky&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Despite worrisome global events, I find myself profoundly grateful for my personal circumstances - I&amp;rsquo;m in good health, I love what I do for a living, and I&amp;rsquo;m always surrounded by better people than me.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>Reproducible macOS Configurations with Nix</title>
      <link>https://victorpierre.dev/blog/declarative-macos-configurations-with-nix/</link>
      <pubDate>Tue, 09 Jul 2024 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/declarative-macos-configurations-with-nix/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;nix-logo.png&#34;
         alt=&#34;The Nix logo&#34;
         title=&#34;The Nix logo&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;h2&gt;What is Nix?&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-is-nix&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-is-nix&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://nixos.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nix&lt;/a&gt; is a powerful package manager &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; for Linux/Unix systems that offers a declarative approach to system configuration. With Nix, you define your system&amp;rsquo;s state in a configuration file (known as a &lt;em&gt;flake&lt;/em&gt;), ensuring that your setup is reproducible across different machines.&lt;/p&gt;
&lt;p&gt;A key component of the Nix ecosystem is &lt;a href=&#34;https://github.com/NixOS/nixpkgs&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nixpkgs&lt;/a&gt;, the default repository of Nix packages, which contains thousands of &lt;a href=&#34;https://search.nixos.org/packages&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;searcheable&lt;/a&gt; packages that you can easily integrate into your configuration.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>User-centric feature design</title>
      <link>https://victorpierre.dev/blog/user-centric-feature-design/</link>
      <pubDate>Sun, 26 May 2024 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/user-centric-feature-design/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;User-Centric_Feature_Design.jpg&#34;
         alt=&#34;An image of a happy user interacting with a mobile app&#34;
         title=&#34;An image of a happy user interacting with a mobile app&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;Early in my career, I learned that the most successful features were those designed with the user in mind. Through regular client demos and feedback sessions, I discovered that keeping users at the center of the design process was essential. As I&amp;rsquo;ve moved to larger companies where users are less accessible and engineers focus more on implementation, I&amp;rsquo;ve maintained this user-first approach.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Resilience and Mental Wellness in Uncertain Times</title>
      <link>https://victorpierre.dev/blog/mental-health/</link>
      <pubDate>Sat, 17 Feb 2024 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/mental-health/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;The_Gulf_Stream.png&#34;
         alt=&#34;The Gulf Stream by Winslow Homer (1899) - A lone stoic Black man on a damaged boat, surrounded by sharks and a swirling waterspout, symbolizing human struggle against nature and the brutal history of empire and slavery.&#34;
         title=&#34;The Gulf Stream by Winslow Homer (1899) - A lone stoic Black man on a damaged boat, surrounded by sharks and a swirling waterspout, symbolizing human struggle against nature and the brutal history of empire and slavery.&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;The Gulf Stream&lt;/h4&gt;&lt;p&gt;Winslow Homer, 1899.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>Hasten Slowly in Software Development</title>
      <link>https://victorpierre.dev/blog/festina-lente/</link>
      <pubDate>Sun, 24 Dec 2023 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/festina-lente/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;festina-lente-dolphin.jpg&#34;
         alt=&#34;The emblem of the dolphin and anchor which has been used since Roman times to illustrate festina lente. This example is the printer&amp;#39;s mark of Aldus.&#34;
         title=&#34;The emblem of the dolphin and anchor which has been used since Roman times to illustrate festina lente. This example is the printer&amp;#39;s mark of Aldus.&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;The dolphin and anchor&lt;/h4&gt;&lt;p&gt;Aldus Manutius&amp;rsquo;s printer&amp;rsquo;s mark for &lt;em&gt;festina lente&lt;/em&gt;.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Legend has it that the Roman Emperor Augustus Caesar held a particular fondness for the maxim &lt;em&gt;Festina Lente&lt;/em&gt;, loosely translated as &lt;em&gt;Make Haste Slowly&lt;/em&gt; or &lt;em&gt;More Haste, Less Speed&lt;/em&gt;. This seemingly paradoxical phrase harbours deep wisdom, encapsulating the art of balancing swift action with thoughtful deliberation. Its essence lies in the understanding that the most expedient path to a goal is not through hurried, reckless efforts, but through measured, considered progress that avoids the pitfalls of undue haste.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>Go Interfaces: Five Best-Practices for Enhanced Code Maintainability</title>
      <link>https://victorpierre.dev/blog/five-go-interfaces-best-practices/</link>
      <pubDate>Wed, 13 Dec 2023 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/five-go-interfaces-best-practices/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;gopher-outline-w.png&#34;
         alt=&#34;The dashed outline of the Go mascot, a blue gopher, representing interfaces in Go&#34;
         title=&#34;The dashed outline of the Go mascot, a blue gopher, representing interfaces in Go&#34; width=&#34;350&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;When you&amp;rsquo;re coding in Go, you&amp;rsquo;ll quickly come to appreciate interfaces. An interface in Go is a type that spells out a set of methods. But here&amp;rsquo;s the interesting part: Go does things differently from other languages. Instead of needing an explicit declaration, a type in Go automatically satisfies an interface as long as it has all the required methods.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Enhancing Data Access with the Decorator Pattern in Go</title>
      <link>https://victorpierre.dev/blog/decorator-pattern-in-go/</link>
      <pubDate>Sun, 03 Dec 2023 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/decorator-pattern-in-go/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;matryoshka_dolls.jpg&#34;
         alt=&#34;Matryoshka Dolls in various sizes&#34;
         title=&#34;Matryoshka Dolls in various sizes&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;Matryoshka dolls&lt;/h4&gt;&lt;p&gt;each shell wrapping the next.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The decorator pattern is a structural design pattern that allows augmenting an object&amp;rsquo;s behaviour without altering its core structure. In Go, this pattern is especially powerful when separating concerns like caching, logging, or instrumentation from your core business logic.&lt;/p&gt;
&lt;p&gt;In Go, since there is no direct support for classes and inheritance as in some other languages like Java or C#, the decorator pattern is typically implemented using interfaces and embedding. This article will explore how to implement the decorator pattern in Go and how to leverage it to create a robust data access layer with stackable functionalities.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>A Beginner&#39;s Guide to Semantic Versioning</title>
      <link>https://victorpierre.dev/blog/beginners-guide-semantic-versioning/</link>
      <pubDate>Sun, 09 Jul 2023 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/beginners-guide-semantic-versioning/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;semver-breakdown.jpg&#34;
         alt=&#34;An image showing the breakdown of each Semantic Version number&#34;
         title=&#34;An image showing the breakdown of each Semantic Version number&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;Semantic Versioning (SemVer) is a versioning scheme used in software development to provide a systematic approach for managing version numbers. It&amp;rsquo;s common for developers to initially find SemVer confusing, especially regarding version increments and release candidates. Understanding SemVer begins with grasping the problem it solves.&lt;/p&gt;
&lt;h3&gt;Purpose of Semantic Versioning&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;purpose-of-semantic-versioning&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#purpose-of-semantic-versioning&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Semantic Versioning primarily aims to communicate meaningful information about software releases. By adopting a structured versioning scheme, developers understand the implications of new versions, such as breaking changes, new features, or bug fixes. SemVer ensures compatibility and predictability in dependent software components by defining clear rules for version number increments.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Understanding Zero Values in Go</title>
      <link>https://victorpierre.dev/blog/zero-values-in-go/</link>
      <pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/zero-values-in-go/</guid>
      <description>&lt;p&gt;In Go, variables of basic types such as &lt;code&gt;int&lt;/code&gt;, &lt;code&gt;float64&lt;/code&gt;, &lt;code&gt;bool&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, and others, will have a default value that is assigned by the compiler or runtime when no value is explicitly assigned to it (they are declared but not initialized). This is called a &lt;em&gt;&amp;ldquo;zero value&amp;rdquo;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The concept of &lt;em&gt;zero values&lt;/em&gt; is important because it allows programs to work with variables even if they have not been assigned a value yet. This is useful in situations where a default value is sufficient or when a value will be assigned later in the program.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Escaping the internet&#39;s walled gardens</title>
      <link>https://victorpierre.dev/blog/escaping-internet-walled-gardens/</link>
      <pubDate>Fri, 16 Dec 2022 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/escaping-internet-walled-gardens/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;The%20balsam%20garden%20of%20Cairo.png&#34;
         alt=&#34;Medieval (14th century) illustration known as the &amp;#39;The Balsam Garden of Cairo&amp;#39;, showing a walled garden protected by soldiers&#34;
         title=&#34;Medieval (14th century) illustration known as the &amp;#39;The Balsam Garden of Cairo&amp;#39;, showing a walled garden protected by soldiers&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;The Balsam Garden of Cairo&lt;/h4&gt;&lt;p&gt;a walled garden under guard. (14th century)&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The Internet has undergone a significant change over the years, shifting from decentralization to centralization. In the early days, many networks and servers connected to form a distributed structure, allowing an open and free flow of information, competition, and innovation. However, the internet of today is controlled by a few major tech companies, leading to a less open and more controlled online space. This concentration of power and control has led to the creation of &amp;ldquo;walled gardens&amp;rdquo; with many users being restricted to accessing only the content and services provided by these major tech companies.&lt;/p&gt;</description>
      <category>opinion</category>
    </item>
    
    <item>
      <title>How I organize (most of) my Go microservices</title>
      <link>https://victorpierre.dev/blog/my-go-project-organization/</link>
      <pubDate>Sun, 06 Nov 2022 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/my-go-project-organization/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;gopher_code_structure.jpg&#34;
         alt=&#34;An image of a blue Gopher in front of a board planning code organization&#34;
         title=&#34;An image of a blue Gopher in front of a board planning code organization&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;When first learning &lt;em&gt;Go&lt;/em&gt;, my initial instinct was to find a framework that would scaffold the basic folder structure and functionality that would allow me to build my first project. It didn&amp;rsquo;t take long to realize that &lt;em&gt;Go&lt;/em&gt;, thanks to its rich standard library ecosystem, didn&amp;rsquo;t really need a framework, and often the framework works against you. Since then, I&amp;rsquo;ve welcomed many new developers to my team who were used to working with different programming languages. Some of them have been surprised by the lack of a consistent folder structure across different parts of our company&amp;rsquo;s codebase.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>End-to-End tests with Venom</title>
      <link>https://victorpierre.dev/blog/e2e-tests-with-venom/</link>
      <pubDate>Fri, 17 Dec 2021 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/e2e-tests-with-venom/</guid>
      <description>&lt;figure class=&#34;plate&#34;&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;snake-glass-beaker.png&#34;
         alt=&#34;Glass beaker with snake-thread decoration (Roman, Gallia Belgica) - 4th century CE&#34;
         title=&#34;Glass beaker with snake-thread decoration (Roman, Gallia Belgica) - 4th century CE&#34;/&gt;&lt;/span&gt;&lt;figcaption&gt;&lt;h4&gt;Glass beaker with snake-thread decoration&lt;/h4&gt;&lt;p&gt;Roman, Gallia Belgica, 4th century CE.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;What is Venom?&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-is-venom&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-is-venom&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&#34;https://github.com/ovh/venom&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Venom&lt;/a&gt; is an Open-Source tool for writing automated end-to-end and integration tests. It is published by &lt;a href=&#34;https://www.ovhcloud.com&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;OVH&lt;/a&gt;, a French cloud company. It is built on top of a popular Go framework called Cobra (hence the name). It aims to be easy and simple to use. It doesn&amp;rsquo;t require you to write your testCases in Python/Java/JavaScript like many other e2e testing tools. You declare your test cases using a simple &lt;code&gt;.yaml&lt;/code&gt; file that resembles CI job declarations. It is written in go and can be easily extendable.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>An introduction to Protocol Buffers 3</title>
      <link>https://victorpierre.dev/blog/introduction-to-protobuf/</link>
      <pubDate>Sun, 09 May 2021 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/introduction-to-protobuf/</guid>
      <description>&lt;figure&gt;
    &lt;span class=&#34;figure-media&#34;&gt;
    &lt;img src=&#34;protobuf-logo.jpg&#34;
         alt=&#34;Protobuf logo&#34;
         title=&#34;Protobuf logo&#34;/&gt;&lt;/span&gt;
&lt;/figure&gt;

&lt;p&gt;A little bit of context first:&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve spent most of my professional life building RESTful APIs. Recently I had to build a gRPC service, and learning protobuf for the first time seemed to be a daunting task. It turns out, Protocol Buffer is very easy to learn, feature-rich, and can speed up development significantly.&lt;/p&gt;
&lt;p&gt;If you are looking into protobuf for the first time, my goal in this post is to give you an initial overview of the Protocol Buffer 3 syntax, structure, data types, and best practices.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
    <item>
      <title>Five useful terminal tools for Developers</title>
      <link>https://victorpierre.dev/blog/five-great-terminal-tools/</link>
      <pubDate>Tue, 25 Aug 2020 00:00:00 +0000</pubDate>
<guid>https://victorpierre.dev/blog/five-great-terminal-tools/</guid>
      <description>&lt;p&gt;As a software developers, the terminal is an essential tool in our workflow. It provides a powerful interface to interact with the operating system and execute various commands. While most developers are familiar with basic terminal commands, there are many useful applications that can streamline your workflow and improve productivity. In this blog post, we will discuss five such terminal applications that every developer should know about. Whether you are a seasoned developer or just starting, these applications can help you work more efficiently and effectively in the terminal.&lt;/p&gt;</description>
      <category>technical</category>
    </item>
    
  </channel>
</rss>
