<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Carlo Loguercio on Medium]]></title>
        <description><![CDATA[Stories by Carlo Loguercio on Medium]]></description>
        <link>https://medium.com/@carlo.log?source=rss-f0c4a4f9285a------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*5iTMLKIQBI6Fa7pr</url>
            <title>Stories by Carlo Loguercio on Medium</title>
            <link>https://medium.com/@carlo.log?source=rss-f0c4a4f9285a------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 16 Apr 2026 03:42:28 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@carlo.log/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Keeping It Simple: Lessons from Developing 4CoinsBattle]]></title>
            <link>https://medium.com/@carlo.log/keeping-it-simple-lessons-from-developing-4coinsbattle-74fe38b3a941?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/74fe38b3a941</guid>
            <category><![CDATA[indie-game]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[mobile-app-development]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Sun, 02 Feb 2025 23:50:32 GMT</pubDate>
            <atom:updated>2025-02-02T23:50:32.434Z</atom:updated>
            <content:encoded><![CDATA[<h4>Sometimes, less is more.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ny5YgRFM0vSu_2R8nui0Uw.jpeg" /><figcaption>Four Coins Battle</figcaption></figure><p>In the world of game development, there&#39;s often a temptation to build complex systems, especially as best practices and industry standards evolve. However, for my latest project 4CoinsBattle, a casual mobile game built in Flutter, I took a different approach. I wanted to see what would happen if I stripped down the development process to its essentials, prioritizing simplicity over structure. Here’s what I learned along the way and why simplicity was the best decision I could have made.</p><p><strong>1. Minimalism in Code and Structure</strong></p><p>The guiding principle for <a href="https://play.google.com/store/apps/details?id=it.carlodotlog.fourCoinsBattle">4CoinsBattle</a> was to keep everything as straightforward as possible. From the game mechanics to the code architecture, I aimed to maintain a minimalist approach. The result? Not only was development more enjoyable, but it also allowed me to stay flexible with the code.</p><figure><img alt="Four Coins Battle: project stucture" src="https://cdn-images-1.medium.com/max/428/1*97X9nFS9341n5l-4WZeWeQ.png" /><figcaption>Four Coins Battle: project stucture</figcaption></figure><p>When you’re working on a casual game, this flexibility is invaluable. It means less time spent on debugging complex layers and more time focused on polishing the gameplay itself. Minimalism kept the workflow efficient and the code manageable—perfect for a one-person project like mine.</p><p><strong>2. Choosing Cubit for State Management</strong></p><p>For state management, I went with Cubit, a lightweight, simple-to-use package in the Flutter ecosystem. Typically, I’d use a more complex setup, involving multiple UseCases and Repositories to separate different concerns. But for the first time in the last five years, I decided to skip those layers entirely.</p><p>Why? Because a casual game doesn’t always need the overhead of multiple abstractions. Cubit’s simplicity allowed me to keep state management straightforward, without worrying about layers of logic that would add little value to the project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*DYYizP2U_EXXXc8t5pSxTw.png" /></figure><p>This setup also sped up the development process. By avoiding complex structures, I could work directly on the game features and logic, saving time and energy that would otherwise be spent on maintaining and debugging extra code.</p><p><strong>3. Direct Calls with Facade Classes for Services</strong></p><p>Instead of introducing the usual architectural layers, I let each Cubit make direct calls. However, I still wanted to ensure that my app stayed independent of specific libraries, so I created Facade classes for each service.</p><p>These Facades acted as simple wrappers around my services, ensuring that if I ever needed to swap out a service or library, I wouldn’t have to rework my entire codebase. Facades provided just enough structure to keep things organized and modular while avoiding the overhead that usually comes with more layered approaches.</p><p>This move allowed 4CoinsBattle to be both modular and flexible, qualities that are particularly helpful for indie developers working on tight schedules.</p><p><strong>4. Embracing Simplicity for Efficiency</strong></p><p>This stripped-down approach was refreshing. In the indie dev world, it&#39;s easy to feel pressured into following all the established patterns and best practices. But sometimes, those structures just don’t fit the project you’re working on—especially if it’s a casual game with a straightforward design.</p><p>Choosing simplicity for 4CoinsBattle meant that I could dedicate more time to the things that mattered: gameplay, polish, and user experience. Instead of spending hours on code architecture, I could make the game itself shine.</p><p><strong>Final Thoughts: Why Simple Can Be Better</strong></p><p>Working on 4CoinsBattle reminded me that sometimes, less is more. By focusing on what was essential and leaving out the rest, I was able to create a fun, casual game without the usual development headaches. Indie game development often requires wearing many hats, and keeping things simple can make it easier to juggle those responsibilities.</p><p>For developers, especially those in the indie scene, simplicity isn’t just about having cleaner code. It’s about building something that’s manageable, adaptable, and ultimately more enjoyable to work on. As I look back on this project, I feel more convinced than ever that simplicity should be a tool in every developer’s kit.</p><p>If you’re an indie developer or just looking to try a different approach in your next project, consider stripping things back. You might find, as I did with 4CoinsBattle, that simplicity is exactly what you need to bring your vision to life without overcomplicating the process.</p><p>If you want to see the app in action you can download it <a href="https://play.google.com/store/apps/details?id=it.carlodotlog.fourCoinsBattle">HERE</a> 🤓</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=74fe38b3a941" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Creating inclusive apps with Flutter: Best practices for accessibility]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/1080/1*92tidzethkwV5-3_EqqNrQ.jpeg" width="1080"></a></p><p class="medium-feed-snippet">An overview of built-in features and best practices</p><p class="medium-feed-link"><a href="https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d?source=rss-f0c4a4f9285a------2">Continue reading on Flutter Community »</a></p></div>]]></description>
            <link>https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/c7cebe0beb4d</guid>
            <category><![CDATA[accessibility]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[mobile-development]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Sun, 08 Jan 2023 16:51:32 GMT</pubDate>
            <atom:updated>2023-01-17T14:36:19.822Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[SSL Certificate pinning on Flutter]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://systemweakness.com/ssl-certificate-pinning-on-flutter-d3c364df2e53?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/1080/1*PxnyWm5Izt9XvKRCs1iMJw.jpeg" width="1080"></a></p><p class="medium-feed-snippet">Allow your app to make only trusted connections</p><p class="medium-feed-link"><a href="https://systemweakness.com/ssl-certificate-pinning-on-flutter-d3c364df2e53?source=rss-f0c4a4f9285a------2">Continue reading on System Weakness »</a></p></div>]]></description>
            <link>https://systemweakness.com/ssl-certificate-pinning-on-flutter-d3c364df2e53?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/d3c364df2e53</guid>
            <category><![CDATA[mobile-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[owasp]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Tue, 12 Jul 2022 15:28:27 GMT</pubDate>
            <atom:updated>2022-07-12T15:28:27.264Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Biometric authentication with Flutter]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/flutter-community/biometric-authentication-with-flutter-4112abf9b27a?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/1600/1*vLVmSs6taL2FkMzGwXkl-A.jpeg" width="1600"></a></p><p class="medium-feed-snippet">Charge your Flutter apps with superpowers.</p><p class="medium-feed-link"><a href="https://medium.com/flutter-community/biometric-authentication-with-flutter-4112abf9b27a?source=rss-f0c4a4f9285a------2">Continue reading on Flutter Community »</a></p></div>]]></description>
            <link>https://medium.com/flutter-community/biometric-authentication-with-flutter-4112abf9b27a?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/4112abf9b27a</guid>
            <category><![CDATA[ios-app-development]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[android-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Fri, 22 Apr 2022 18:41:33 GMT</pubDate>
            <atom:updated>2023-01-26T22:49:42.642Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to store login credentials, the right way in Flutter. [2023 Update]]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://systemweakness.com/how-to-store-login-credentials-the-right-way-in-flutter-857ba6e7e96d?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/1920/1*iiRnVKWopUNc3UnPb5FRLQ.jpeg" width="1920"></a></p><p class="medium-feed-snippet">If you have used shared preferences to save login credentials or access tokens, well, this article is for you.</p><p class="medium-feed-link"><a href="https://systemweakness.com/how-to-store-login-credentials-the-right-way-in-flutter-857ba6e7e96d?source=rss-f0c4a4f9285a------2">Continue reading on System Weakness »</a></p></div>]]></description>
            <link>https://systemweakness.com/how-to-store-login-credentials-the-right-way-in-flutter-857ba6e7e96d?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/857ba6e7e96d</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Sun, 20 Mar 2022 16:28:14 GMT</pubDate>
            <atom:updated>2023-03-07T17:08:41.853Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Flutter — How to check for rooted or jailbroken devices.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@carlo.log/flutter-how-to-check-for-rooted-or-jailbroken-devices-b80769deba3a?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/2600/1*FH1XDO23I4p4N1FeJDi6Yw.png" width="5748"></a></p><p class="medium-feed-snippet">This time I&#x2019;ll show you how to check if your app is running on a rooted or jailbroken device.</p><p class="medium-feed-link"><a href="https://medium.com/@carlo.log/flutter-how-to-check-for-rooted-or-jailbroken-devices-b80769deba3a?source=rss-f0c4a4f9285a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@carlo.log/flutter-how-to-check-for-rooted-or-jailbroken-devices-b80769deba3a?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/b80769deba3a</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[cross-platform]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Fri, 18 Feb 2022 23:34:49 GMT</pubDate>
            <atom:updated>2022-04-02T22:45:37.930Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[How to hide app preview when switching apps, with Flutter.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@carlo.log/how-to-hide-app-preview-when-switching-apps-with-flutter-6afcefe83ee5?source=rss-f0c4a4f9285a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*UPcNCeoTZ7QNFUSq" width="5391"></a></p><p class="medium-feed-snippet">This is an important feature when your app displays sensitive data.</p><p class="medium-feed-link"><a href="https://medium.com/@carlo.log/how-to-hide-app-preview-when-switching-apps-with-flutter-6afcefe83ee5?source=rss-f0c4a4f9285a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@carlo.log/how-to-hide-app-preview-when-switching-apps-with-flutter-6afcefe83ee5?source=rss-f0c4a4f9285a------2</link>
            <guid isPermaLink="false">https://medium.com/p/6afcefe83ee5</guid>
            <category><![CDATA[mobile-development]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[cross-platform]]></category>
            <dc:creator><![CDATA[Carlo Loguercio]]></dc:creator>
            <pubDate>Thu, 03 Feb 2022 13:34:02 GMT</pubDate>
            <atom:updated>2022-04-02T20:55:40.242Z</atom:updated>
        </item>
    </channel>
</rss>