<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>André Santos</title><link>https://asantosdev.com/</link><description>Recent content on André Santos</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 28 Feb 2025 20:05:08 +0000</lastBuildDate><atom:link href="https://asantosdev.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Functional Options Pattern</title><link>https://asantosdev.com/posts/functional-options-pattern/</link><pubDate>Fri, 28 Feb 2025 20:05:08 +0000</pubDate><guid>https://asantosdev.com/posts/functional-options-pattern/</guid><description>&lt;p&gt;This blog post is about the Functional Options Pattern, which provides a way to pass configuration options into a function or object while keeping the module&amp;rsquo;s API clean, flexible, and easy to use.&lt;/p&gt;
&lt;p&gt;This pattern became very popular in the Go programming language, but it can be applied in other languages.
All the examples will use Go, but they should be readable even if you don&amp;rsquo;t know Go.&lt;/p&gt;
&lt;p&gt;In this blog post, we&amp;rsquo;ll start by illustrating the problem the Functional Options Pattern tries to solve using a simple text rendering function that we want to take some options.
We&amp;rsquo;ll explore some traditional solutions for the problem and see how the Functional Options Pattern has some advantages over them.&lt;/p&gt;</description></item><item><title>Git Tricks: Global .gitignore</title><link>https://asantosdev.com/posts/global-gitignore/</link><pubDate>Tue, 29 Oct 2024 20:10:29 +0000</pubDate><guid>https://asantosdev.com/posts/global-gitignore/</guid><description>&lt;p&gt;Most git repositories have a &lt;code&gt;.gitignore&lt;/code&gt; file in it. If you are new to Git, this file controls the files that should be ignored by git in that specific repository. It&amp;rsquo;s useful to prevent accidentally committing unwanted files to the repository.&lt;/p&gt;
&lt;p&gt;But do you know that you can have a global &lt;code&gt;.gitignore&lt;/code&gt; file that can be applied to all your repositories?&lt;/p&gt;
&lt;p&gt;This can be very useful, mainly for two reasons:&lt;/p&gt;</description></item><item><title>Home</title><link>https://asantosdev.com/home/</link><pubDate>Wed, 21 Apr 2021 21:54:53 +0100</pubDate><guid>https://asantosdev.com/home/</guid><description>&lt;p&gt;Home!&lt;/p&gt;</description></item><item><title>Project Portfolio</title><link>https://asantosdev.com/projects/</link><pubDate>Wed, 21 Apr 2021 21:05:00 +0100</pubDate><guid>https://asantosdev.com/projects/</guid><description>&lt;h2 id="hero-pickers"&gt;Hero Pickers&lt;/h2&gt;
&lt;p&gt;Simple websites I built to learn web development back in 2019.
Now written in React, previously written in Angular and Vue 2.&lt;/p&gt;
&lt;h3 id="overwatch-hero-picker--website--github"&gt;Overwatch Hero Picker · &lt;a href="https://www.owheropicker.com/"&gt;Website&lt;/a&gt; | &lt;a href="https://github.com/andrerfcsantos/overwatch-hero-picker"&gt;Github&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;React website that allows Overwatch players to get a random character to play.
Also has the ability to generate teams with random heroes.
Average of ~13k monthly acive users.&lt;/p&gt;
&lt;h3 id="valorant-hero-picker--website--github"&gt;Valorant Hero Picker · &lt;a href="https://www.valorantpicker.com/"&gt;Website&lt;/a&gt; | &lt;a href="https://github.com/andrerfcsantos/valorant-agent-picker"&gt;Github&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;React website that allows Overwatch players to get a random character to play.
Also has the ability to generate teams with random agents.
Average of ~20k monthly acive users.&lt;/p&gt;</description></item></channel></rss>