<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>All Posts - Nuno Sousa&#39;s Corner</title>
        <link>https://www.nunomtsousa.com/posts/</link>
        <description>All Posts | Nuno Sousa&#39;s Corner</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>nuno.mt.sousa@gmail.com (Nuno Sousa)</managingEditor>
            <webMaster>nuno.mt.sousa@gmail.com (Nuno Sousa)</webMaster><lastBuildDate>Wed, 25 Jun 2025 21:08:45 &#43;0100</lastBuildDate><atom:link href="https://www.nunomtsousa.com/posts/" rel="self" type="application/rss+xml" /><item>
    <title>Branches or Feature Toggles?</title>
    <link>https://www.nunomtsousa.com/posts/2025-06-featuretoggles/</link>
    <pubDate>Wed, 25 Jun 2025 21:08:45 &#43;0100</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2025-06-featuretoggles/</guid>
    <description><![CDATA[<h3 id="when-and-how-to-use-them">When and how to use them.</h3>
<p>Have you ever been requested to do a change to a system, but that change should not be visible until it is completed? Have you also been requested to launch fixes to the same system while you are changing it? Then you probably faced this problem.</p>
<h2 id="introduction">Introduction</h2>
<p>We have all been there: someone asked us to add some feature to an existing system, but that it should only be visible when it is completed. You go off and start coding. Sometime later, that same someone asks you to fix a bug, a high priority bug. But you have your code half done, and you can’t simply stash it. How will you handle this?</p>]]></description>
</item>
<item>
    <title>Building More Games</title>
    <link>https://www.nunomtsousa.com/posts/2025-03-23-buildingmoregames/</link>
    <pubDate>Sun, 23 Mar 2025 18:05:03 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2025-03-23-buildingmoregames/</guid>
    <description><![CDATA[<p>Have you ever wanted to write your own games? Join me on the <a href="https://www.nunomtsousa.com/posts/2024-08-21-buildinggames/" rel="">quest</a> to sharpen my skill while having fun building games!</p>
<h2 id="context">Context</h2>
<p>In my quest to get <a href="https://www.nunomtsousa.com/posts/2024-08-21-buildinggames/" rel="">back to coding</a>, I decided to start building games again. The last time I wrote about this adventure, I summarized the latest changes I made to my version of the <a href="https://www.nunomtsousa.com/posts/2024-10-16-blockpuzzlecolorscoresandsound/" rel="">blocks puzzle</a>. A few months have passed since then, and I have been busy thinking about what my next step should be.</p>]]></description>
</item>
<item>
    <title>Is the Advent of Code a good way to learn a new programming Language?</title>
    <link>https://www.nunomtsousa.com/posts/2025-02-14-adventofcodetolearnnewlanguages/</link>
    <pubDate>Fri, 14 Feb 2025 09:38:25 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2025-02-14-adventofcodetolearnnewlanguages/</guid>
    <description><![CDATA[<p>As a software developer, you should always be on the lookout for new things and new technologies. You shouldn&rsquo;t use all of them or play with all of them (who has the time?), but at least be informed of what is out there. You should also try new things from time to time, just to keep the curiosity juices going. This article summarizes my foyer into a new programming language, Rust. I will give you a small background, why I was curious about it and if the advent of code is a good way to learn a new language (tldr: it is!).</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Color, Scores and Sound!</title>
    <link>https://www.nunomtsousa.com/posts/2024-10-16-blockpuzzlecolorscoresandsound/</link>
    <pubDate>Wed, 16 Oct 2024 09:08:17 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-10-16-blockpuzzlecolorscoresandsound/</guid>
    <description><![CDATA[<p>Welcome to the last installment of building a Block Puzzle! In our last <a href="https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/" rel="">article</a>, we made the game playable, but it was a little monochromatic. Today, we will be changing that. We will add color, scores and sound. Finally, you’ll be able to play the game yourself!</p>
<h2 id="adding-some-color">Adding some color</h2>
<p>Adding some color to the game is quite easy. Since our game pieces use sprites that are made of string, we can simply <a href="https://github.com/nmtsousa/blocks/commit/7ac52721cea34afcf13e08ea5ef89dad7b954e72" target="_blank" rel="noopener noreffer ">make a mapping between a letter and a specific color</a>. With that mapping, each piece can have its own color, and our game bursts with color.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — We can play it!</title>
    <link>https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/</link>
    <pubDate>Sun, 06 Oct 2024 09:02:50 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-10-06-blockpuzzlewecanplayit/</guid>
    <description><![CDATA[<p>Welcome to another installment on building a Block Puzzle. We are continuing the series of articles that describe the process taken to develop a Tetris-like game.</p>
<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/" rel="">previous</a> article, we made the game almost playable. It was almost playable because we could interact with it, but the logic to remove completed lines was not there. In this article, we are going to add several types of pieces to the game and the logic that detects full lines and removes them.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Almost Playable</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/</link>
    <pubDate>Wed, 25 Sep 2024 18:57:44 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-25-blockpuzzlealmostplayable/</guid>
    <description><![CDATA[<p>Welcome to another article on building a block puzzle. This is a series of articles that describe the process taken to develop a game similar to Tetris (you can find all parts of this series at the end of the article).</p>
<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/" rel="">previous article</a>, we developed the base model for our game. In this article, we will be creating the UI for the game. The UI will use the model previously developed to make a playable game. It will not be the complete game, but having something you can use and play with enables faster feedback. We need feedback to know if the model is easy to use (it should be, because we wrote it using Test Driven Development), but we also need feedback on what&rsquo;s the next functionality that we should develop. I prefer to do development in small steps and collect feedback as I go, even when I am doing it alone.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Base Game Logic</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/</link>
    <pubDate>Sun, 08 Sep 2024 18:51:46 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-08-blockpuzzlebasegamelogic/</guid>
    <description><![CDATA[<p>In the <a href="https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/" rel="">previous article</a> on the Block Puzzle game, I showed how I intended to separate the game logic from its UI. The goal behind this separation is to make it easier to develop and test the game logic without having to do it manually via the UI. In this article, I will show how I am doing the unit tests without writing any UI or even having any dependency on UI code. Although the work was done in small steps, in this article I will explain the reasoning behind them in the hope that I can explain my reasoning behind doing it the way I did it.</p>]]></description>
</item>
<item>
    <title>Block Puzzle — Starting the Project</title>
    <link>https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/</link>
    <pubDate>Tue, 03 Sep 2024 18:48:42 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-09-03-blockpuzzlestartingprject/</guid>
    <description><![CDATA[<p>The first game idea that came to me was inspired by an <a href="https://www.youtube.com/watch?v=4sCSJW3hamE" target="_blank" rel="noopener noreffer ">YouTube</a> video I saw of <a href="https://www.youtube.com/@createdbykoko" target="_blank" rel="noopener noreffer ">Mitch Koko</a> programming a game in Flutter from scratch. The game was a Tetris, programmed in bulk without a lot of care for structure and tests. But that goes against most of the lessons I have collected over the years. I like structure and tests. I believe they allow me to go faster, but before that a small detour.</p>]]></description>
</item>
<item>
    <title>Building Games</title>
    <link>https://www.nunomtsousa.com/posts/2024-08-21-buildinggames/</link>
    <pubDate>Wed, 21 Aug 2024 18:47:08 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-08-21-buildinggames/</guid>
    <description><![CDATA[<p>How to sharpen your skills while having fun!</p>
<h2 id="introduction">Introduction</h2>
<p>As part of my personal growth, I have decided to go back to what captivated my attention in computers when growing up. I was introduced to computers in the time of the <a href="https://en.wikipedia.org/wiki/ZX_Spectrum" target="_blank" rel="noopener noreffer ">ZX Spectrum</a> at around eleven years old. I was sick at home, during the summer holidays, with nothing better to do then to read the computer’s manual and write a game. Have you ever tried to write a computer game using BASIC? Looking back, it doesn’t look as fun as it did back then 🙂 I wrote a game that was like <a href="https://en.wikipedia.org/wiki/Whac-A-Mole" target="_blank" rel="noopener noreffer ">whack-a-mole</a>, but without a hammer to whack them: you would shoot them. Since then, I have never stopped programming and never lost the love for it.</p>]]></description>
</item>
<item>
    <title>Practice Makes Perfect</title>
    <link>https://www.nunomtsousa.com/posts/2024-06-09-practicemakesperfect/</link>
    <pubDate>Thu, 09 May 2024 18:45:25 &#43;0000</pubDate>
    <author>nuno.mt.sousa@gmail.com (Nuno Sousa)</author>
    <guid>https://www.nunomtsousa.com/posts/2024-06-09-practicemakesperfect/</guid>
    <description><![CDATA[<p><strong>We have all heard the saying, Practice Makes Perfect. But does it apply to programming? To write tests? To software design? I believe so and I hope this articles makes you think about doing some Katas, some experiments, writing some side projects, and, if you’re brave, publishing them!</strong></p>
<p>Have you ever seen the <em>great ones</em> do some katas? See how the master works through the code and changes it so effortlessly? It seems like magic, doesn’t it? But they are just humans like us. Whether you follow <a href="https://martinfowler.com/articles/2024-refactoring-code-samples.html" target="_blank" rel="noopener noreffer ">Martin Fowler,</a> <a href="http://www.butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata" target="_blank" rel="noopener noreffer ">Robert &ldquo;Uncle Bob&rdquo; Martin</a> or <a href="https://codingdojo.org/kata/RomanNumerals/" target="_blank" rel="noopener noreffer ">Kent Beck</a>, you’ve probably seen some of their katas. If fact, you can find videos of them trying new techniques like we do, like seeing Kent Beck doing some <a href="https://www.youtube.com/watch?v=Aof0F9DvTFg" target="_blank" rel="noopener noreffer ">TCR (test &amp;&amp; commit || revert)</a>. It is through deliberate practice and being humble that they, and also we, can become better at what we do. We never know everything. There is always something we can learn and something we can improve. If we stop practicing and we assume we know it all, that is a good recipe to let our Ego destroy our careers and our lives.</p>]]></description>
</item>
</channel>
</rss>
