<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Belli</title>
    <description>The latest articles on DEV Community by Belli (@andersonbelli).</description>
    <link>https://dev.to/andersonbelli</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2253034%2Fb22bdec9-8126-4631-b496-9de436598c17.png</url>
      <title>DEV Community: Belli</title>
      <link>https://dev.to/andersonbelli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andersonbelli"/>
    <language>en</language>
    <item>
      <title>Mixins in Dart: A Better Way to Share Code</title>
      <dc:creator>Belli</dc:creator>
      <pubDate>Wed, 13 Aug 2025 09:57:25 +0000</pubDate>
      <link>https://dev.to/andersonbelli/mixins-in-dart-a-better-way-to-share-code-5b8o</link>
      <guid>https://dev.to/andersonbelli/mixins-in-dart-a-better-way-to-share-code-5b8o</guid>
      <description>&lt;p&gt;The &lt;a href="https://dart.dev/language/mixins" rel="noopener noreferrer"&gt;official (and confusing) documentation&lt;/a&gt; of &lt;em&gt;mixins&lt;/em&gt; in Dart does not highlight — at least not for me — the usefulness of this amazing property. &lt;strong&gt;Programming is literally having the knowledge of a new language&lt;/strong&gt; and as developers, our job is to understand the language we're "speaking." The deeper our understanding, the more valuable our solutions can be.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mixins&lt;/em&gt; allow software to make use of an important concept from the SOLID principles: the &lt;strong&gt;O&lt;/strong&gt; — &lt;em&gt;Open/Closed Principle&lt;/em&gt;.&lt;br&gt;
This principle states that software entities such as classes, modules, and functions should be &lt;strong&gt;open for extension but closed for modification&lt;/strong&gt;. In other words, you should be able to add new functionality to your code without changing existing, stable code.&lt;/p&gt;

&lt;p&gt;The bigger the project, the more important it is to follow this principle. Consider a scenario where multiple devs are working on a feature at the same time, or even more critical, when the project lacks test coverage to guarantee existing functionalities. Modifying a class, even if it doesn’t break the code immediately, will eventually cause problems at some edge case (If you haven’t been there yet, don’t worry, you will).&lt;/p&gt;

&lt;p&gt;All this introduction to explain a “simple” concept: &lt;strong&gt;&lt;em&gt;class extension without hierarchies&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A mixin in Dart is a way to reuse a class’s code in multiple class hierarchies. Mixins let you add methods and properties to classes without using inheritance.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Key differences:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A normal class can be instantiated (you can create objects from it), while a &lt;em&gt;mixin&lt;/em&gt; cannot.&lt;/li&gt;
&lt;li&gt;A &lt;em&gt;mixin&lt;/em&gt; is used to add functionality to other classes, not to create objects.&lt;/li&gt;
&lt;li&gt;You use the &lt;code&gt;with&lt;/code&gt; keyword to apply a &lt;em&gt;mixin&lt;/em&gt; to a class.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s see an example of usage in code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;mixin&lt;/span&gt; &lt;span class="nc"&gt;Logger&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Log: &lt;/span&gt;&lt;span class="si"&gt;$message&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyClass&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;Logger&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;MyClass&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Hello'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// prints: Log: Hello&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  In Summary
&lt;/h2&gt;

&lt;p&gt;Use &lt;em&gt;&lt;strong&gt;mixins&lt;/strong&gt;&lt;/em&gt; to share code and add new behaviors to classes without creating a rigid inheritance hierarchy. They're a flexible and powerful tool for adhering to the &lt;em&gt;Open/Closed Principle&lt;/em&gt; and keeping your codebase clean and modular.&lt;/p&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Thank you AI</title>
      <dc:creator>Belli</dc:creator>
      <pubDate>Wed, 06 Nov 2024 19:52:53 +0000</pubDate>
      <link>https://dev.to/andersonbelli/thank-you-ai-44gm</link>
      <guid>https://dev.to/andersonbelli/thank-you-ai-44gm</guid>
      <description>&lt;p&gt;Have you said &lt;em&gt;&lt;strong&gt;thank you&lt;/strong&gt;&lt;/em&gt; to your AI buddy lately?&lt;br&gt;
It increases my productivity so much that I have to show some gratitude 😆&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnon4gituubdx5vexr2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnon4gituubdx5vexr2d.png" alt="ChatGPT screenshot" width="800" height="858"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>funny</category>
    </item>
    <item>
      <title>Lazy or productive?</title>
      <dc:creator>Belli</dc:creator>
      <pubDate>Wed, 23 Oct 2024 15:00:00 +0000</pubDate>
      <link>https://dev.to/andersonbelli/lazy-or-productive-43bp</link>
      <guid>https://dev.to/andersonbelli/lazy-or-productive-43bp</guid>
      <description>&lt;p&gt;As a heavy user of both #IntelliJ and #Xcode, I’ve gotten used to working with Git almost entirely within the IDE. These tools make it so easy to handle version control that using the terminal for simple tasks feels unnecessary. For senior developers juggling many responsibilities, it's tempting to prioritize efficiency and rely on the ‘quickest’ methods to free up time for more complex work.&lt;/p&gt;

&lt;p&gt;However, this convenience comes with a potential downside—by relying too much on these tools, we may lose touch with the core concepts of version control. When everything is done through the interface, it’s easy to forget the manual steps behind Git’s commands and the deeper logic that drives them. This can make us less adaptable when troubleshooting issues or when working outside the safety net of an IDE.&lt;/p&gt;

&lt;p&gt;Code versioning is essential for all developers, no matter their level of seniority. Whether you're just starting out or you're years into your career, understanding how Git works behind the scenes is crucial. While IDE integrations can boost productivity, they shouldn't replace a solid grasp of versioning fundamentals.&lt;/p&gt;

&lt;p&gt;Mastering these fundamentals—not just how to use Git, but how it actually operates—keeps us adaptable and better equipped to handle complex scenarios. It’s this foundational knowledge that empowers developers to work smarter, not just faster, and ensures we don’t lose sight of the bigger picture in pursuit of convenience.&lt;/p&gt;




&lt;p&gt;In &lt;a href="https://www.coursera.org/learn/introduction-to-version-control" rel="noopener noreferrer"&gt;Version Control course &lt;/a&gt; from #Meta, I gained a deeper understanding of not only Git but version control systems as a whole. The course provided hands-on practices to manually execute Git’s features, helping me thoroughly grasp how they function, their terminologies, and best practices - It even covered some Unix commands along the way!&lt;/p&gt;

&lt;p&gt;I highly recommend this course to anyone looking to deepen their understanding of Git and improve their version control skills.&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>learning</category>
      <category>development</category>
    </item>
    <item>
      <title>Backend VS Frontend 🤷‍♂️</title>
      <dc:creator>Belli</dc:creator>
      <pubDate>Tue, 22 Oct 2024 16:53:46 +0000</pubDate>
      <link>https://dev.to/andersonbelli/backend-vs-frontend-25hi</link>
      <guid>https://dev.to/andersonbelli/backend-vs-frontend-25hi</guid>
      <description>&lt;h2&gt;
  
  
  (From a Mobile Engineer perspective)
&lt;/h2&gt;

&lt;p&gt;As a Mobile engineer I have to admit, most of the jobs I had recently envolves way more than just the FrontEnd. BUT &lt;em&gt;(and this is a big "but")&lt;/em&gt;—no one wants to use an app that looks unpolished, isn’t responsive, or ignores fundamental UX principles. This may sound like an advertisement for my field, but creating an app/website that is not only beautiful but also intuitive and easy to use is far from simple. Saying &lt;em&gt;"anyone can do it"&lt;/em&gt; really oversimplifies the work involved.&lt;/p&gt;

&lt;p&gt;Sure, anyone can slap together a basic UI, but &lt;strong&gt;what’s the point of having a robust backend if the user experience is frustrating?&lt;/strong&gt; End users don’t care about your tech stack—they care about how the app feels in their hands. For a product to succeed, both the Frontend and Backend need to work in harmony.&lt;br&gt;
While it’s true that someone with time and dedication can learn backend concepts &lt;del&gt;—since it’s more structured and logical—&lt;/del&gt; it’s a misconception to think frontend is just a matter of &lt;em&gt;"throwing things together"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I’m obviously not saying that backend is easy to learn—there are plenty of concepts and different technologies to master—but saying that frontend can be easily done by anyone is equally absurd. UI/UX design demands creativity, empathy, and a keen eye for detail. Without that passion for creation, even with all the knowledge in the world, frontend work can feel like a frustrating, never-ending chore.&lt;/p&gt;

&lt;p&gt;If a frontend role requires backend knowledge, it’s because there’s an underlying expectation that the developer is already well-versed in UI/UX. Otherwise, &lt;strong&gt;users will not connect with the product, no matter how good the backend is&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>frontend</category>
      <category>learning</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
