<?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: Arthur Coudouy</title>
    <description>The latest articles on DEV Community by Arthur Coudouy (@arthurcoudouy).</description>
    <link>https://dev.to/arthurcoudouy</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%2F672582%2Ffce53f95-03e7-44de-be78-c155bfce240d.jpeg</url>
      <title>DEV Community: Arthur Coudouy</title>
      <link>https://dev.to/arthurcoudouy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arthurcoudouy"/>
    <language>en</language>
    <item>
      <title>Top 10 code smells every engineer should know to improve their pull requests</title>
      <dc:creator>Arthur Coudouy</dc:creator>
      <pubDate>Fri, 08 Mar 2024 17:20:00 +0000</pubDate>
      <link>https://dev.to/arthurcoudouy/top-10-code-smells-every-engineer-should-know-to-improve-their-pull-requests-18mn</link>
      <guid>https://dev.to/arthurcoudouy/top-10-code-smells-every-engineer-should-know-to-improve-their-pull-requests-18mn</guid>
      <description>&lt;p&gt;How to avoid difficult code reviews? Identify code smells!&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Code_smell"&gt;Wikipedia&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In computer programming, a code smell is any characteristic in the source code of a program that possibly indicates a deeper problem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After a few years of helping developers review code, I came up with 10 code smells and how to fix them while building my project &lt;a href="https://axolo.co"&gt;Axolo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧐 Refactoring Large or Complex Methods
&lt;/h3&gt;

&lt;p&gt;Navigating through methods that sprawl across numerous lines or twist into complexity can be daunting. Simplification is key!&lt;/p&gt;

&lt;p&gt;The fix? Employ a linter to enforce a maximum number of lines. Deconstruct these behemoths into smaller, more focused methods, each dedicated to a singular task.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤔 Addressing Long Parameter Lists
&lt;/h3&gt;

&lt;p&gt;A lot of parameters can muddle method signatures, making them prone to mistakes.&lt;/p&gt;

&lt;p&gt;The fix? Consolidate related parameters into a single object. Adopt the "parameter object" pattern to streamline your functions, enhancing their readability and maintainability.&lt;/p&gt;

&lt;h3&gt;
  
  
  🙄 Minimizing Excessive Comments
&lt;/h3&gt;

&lt;p&gt;An overload of comments often signals that the code isn't speaking for itself as clearly as it should.&lt;/p&gt;

&lt;p&gt;The fix? Strive for code that explains itself through judicious naming and structure. Reduce reliance on comments, allowing the code's purpose and function to be immediately apparent.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤦 Eliminating Duplicate Code
&lt;/h3&gt;

&lt;p&gt;Repetitive code fragments are not just a nuisance; they complicate updates and can introduce inconsistencies.&lt;/p&gt;

&lt;p&gt;The fix? Seek out and consolidate repetitive code segments into common functions. Adhering to the DRY (Don't Repeat Yourself) principle simplifies future maintenance and modifications.&lt;/p&gt;

&lt;h3&gt;
  
  
  😕 Harmonizing Inconsistent Naming Conventions
&lt;/h3&gt;

&lt;p&gt;Naming chaos confounds understanding and introduces potential errors.&lt;/p&gt;

&lt;p&gt;The fix? Commit to a unified naming convention. Names that are clear and consistent pave the way for code that's more approachable and decipherable.&lt;/p&gt;

&lt;h3&gt;
  
  
  😬 Enhancing Error Handling
&lt;/h3&gt;

&lt;p&gt;Neglecting comprehensive error management can lead to erratic behavior and a codebase that's tough to sustain.&lt;/p&gt;

&lt;p&gt;The fix? Embrace thorough error management. Logically log and manage exceptions to bolster the code's stability and dependability.&lt;/p&gt;

&lt;h3&gt;
  
  
  🤯 Simplifying Overused If/Else Constructs
&lt;/h3&gt;

&lt;p&gt;An abundance of if/else branches can tangle code, making it challenging to read and adjust.&lt;/p&gt;

&lt;p&gt;The fix? Lean on data structures or design patterns, such as polymorphism, to untangle complex logic, thereby enhancing the code's legibility and adaptability.&lt;/p&gt;

&lt;h3&gt;
  
  
  👎 Refining Inheritance Usage
&lt;/h3&gt;

&lt;p&gt;Inappropriate reliance on inheritance can entangle code further, reducing its adaptability.&lt;/p&gt;

&lt;p&gt;The fix? Verify that inheritance is used judiciously. Opt for composition over inheritance to achieve a code structure that's more flexible and straightforward to maintain. &lt;/p&gt;

&lt;p&gt;Be honest, which one do you usually see in your PR? If you think I'm missing something, let me know in the comments!&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>5 tools to improve your productivity as a developer (that are not AI dependent - yes, some still exist) 🤖</title>
      <dc:creator>Arthur Coudouy</dc:creator>
      <pubDate>Mon, 26 Feb 2024 17:57:00 +0000</pubDate>
      <link>https://dev.to/arthurcoudouy/5-tools-to-improve-your-productivity-as-a-developer-that-are-not-ai-dependent-yes-some-still-exist-2g26</link>
      <guid>https://dev.to/arthurcoudouy/5-tools-to-improve-your-productivity-as-a-developer-that-are-not-ai-dependent-yes-some-still-exist-2g26</guid>
      <description>&lt;p&gt;I've listed a few tools that I use personally or heard good things from users. Hopefully, they might help some of you!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I prefer to say that I'm the founder of n°4, but even if it was not my baby, I'd love it as much (honestly). &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://timelyapp.com/"&gt;Timely&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;Automates time tracking. It helps you &amp;amp; your time focus on what's important - it's super helpful if you're a freelancer. &lt;/p&gt;

&lt;p&gt;We don't use it within my team, but I've heard a lot of good things!&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://tuple.app/"&gt;Tuple&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;Enables pair programming in a remote workplace. It includes a thoughtful screen-sharing interface and low-latency remote machine control. &lt;/p&gt;

&lt;p&gt;Who said that distance was an issue? Pair programming is nice, I don't use it every day but I know teams that can live without it.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://www.raycast.com/"&gt;Raycast&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;It is a blazingly fast, totally extendable launcher. It lets you complete tasks, calculate, share common links, and much more. When they say "supercharge productivity", they mean it. &lt;/p&gt;

&lt;p&gt;It's one of the few apps that makes me think a Mac would be useful. &lt;/p&gt;

&lt;p&gt;Yes, I'm on PC (and everything works fine don't worry).&lt;/p&gt;

&lt;h2&gt;
  
  
  4. &lt;a href="https://axolo.co/"&gt;Axolo&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;It is the most complete GitHub (GitLab) and Slack integration for pull requests. We've been working on it for the past three years, and help developers review thousands of pull requests every day. &lt;/p&gt;

&lt;p&gt;(I can't imagine a PR without Axolo today)&lt;/p&gt;

&lt;h2&gt;
  
  
  5. &lt;a href="https://justgetflux.com/"&gt;f.lux&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;f.lux is a color display application that varies based on your needs and the time of day.&lt;/p&gt;

&lt;p&gt;As developers, we spend a significant amount of time in front of screens. The brightness of a screen can interfere with how our bodies normally work, particularly when it comes to sleep, so if you don't already have such a tool, give it a try!&lt;/p&gt;

&lt;p&gt;Also, they have a fun project where you can adapt your environment light while f.lux updates your screen.&lt;/p&gt;

&lt;p&gt;What other tools should I add?&lt;/p&gt;

&lt;p&gt;I'll write a blog post with all the links I receive, so please share some with me!&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Changelog writer GPT and how we automate our changelogs at Axolo.co</title>
      <dc:creator>Arthur Coudouy</dc:creator>
      <pubDate>Mon, 19 Feb 2024 07:43:47 +0000</pubDate>
      <link>https://dev.to/arthurcoudouy/changelog-writer-gpt-and-how-we-automate-our-changelogs-at-axoloco-13mj</link>
      <guid>https://dev.to/arthurcoudouy/changelog-writer-gpt-and-how-we-automate-our-changelogs-at-axoloco-13mj</guid>
      <description>&lt;p&gt;Hey everyone, so today I'm going to explain how we've automated our changelogs at &lt;a href="https://axolo.co"&gt;Axolo&lt;/a&gt;. You'll have access to a GPT I initially built internally and just decided to release to the public. It's simple but effective for us, and I hope it will help some of you!&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Changelog Writer by Axolo GPT works
&lt;/h2&gt;

&lt;p&gt;So who's better than the GPT to explain what it does? Here is a brief description of its role, written by itself:&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://chat.openai.com/g/g-KsaI65Bhr-changelog-writer-by-axolo"&gt;Changelog Writer by Axolo&lt;/a&gt; my primary function is to assist users in transforming their raw development inputs—ranging from bug fixes, new features, tasks, or any other updates—into a polished and structured changelog. This involves meticulously parsing the user's input to identify the essence of each update, then categorizing them into distinct sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;✨ NEW:&lt;/code&gt; for brand-new features or additions&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;🔨 IMPROVEMENT:&lt;/code&gt; for enhancements to existing elements&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;🐞 FIX:&lt;/code&gt; for bug fixes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My role extends beyond mere rephrasing or clarification; I aim to ensure that each entry is presented in a clear, concise, and professional manner, making the changelog both informative and easy to read.&lt;/p&gt;

&lt;p&gt;Soooo, basically what I've done is created a GPT where I can send a huge amount of information concerning our latest update, and the Changelog Writer will return a well-structured changelog composed of 3 sections. It's a simple but effective way to automate our changelogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did we automate our changelogs?
&lt;/h2&gt;

&lt;p&gt;So, I wanted a way to automate most of our changelog writing process. The first thing we needed was to find a way to ask what we'd just developed easily. And as we're hardcore Slack users and have already integrated most of our process with GitHub through Axolo, I decided to develop a workflow around just that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To give you some context, &lt;a href="https://axolo.co"&gt;Axolo &lt;/a&gt;is the most developed Slack-GitHub integration specialized in pull requests, we've been working on for the past 3 years so we know a lot about integrating GitHub &amp;amp; Slack.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's incredibly simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each time we merge a pull request, Axolo writes a DM to the PR author with input and asks if we'd like to add this PR to our next changelog,&lt;/li&gt;
&lt;li&gt;If the author answers yes, the content of the input is sent to a specific channel in our Slack (called &lt;code&gt;#changelog&lt;/code&gt;, surprisingly).&lt;/li&gt;
&lt;li&gt;The changelog content pills up each month in this channel.&lt;/li&gt;
&lt;li&gt;On the 1st day of each month, a cron job queries the whole month's conversation and sends it straight to GPT with a specific prompt (prompt I used to build the Changelog Writer GPT)&lt;/li&gt;
&lt;li&gt;GPT sends the newly created changelog to the &lt;code&gt;#changelog&lt;/code&gt; channel, and we're done! A quick review and it's ready to be published.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvy4bpfaiy9uqjb1b7g33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvy4bpfaiy9uqjb1b7g33.png" alt="Changelog flow" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ushdptq3yb0hf6l424k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ushdptq3yb0hf6l424k.png" alt="Changelog results" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an extract of our January changelog&lt;/p&gt;

&lt;p&gt;So let me know what you think, how we can improve it or if you have any other ideas!&lt;/p&gt;

&lt;p&gt;You can access the &lt;a href="https://chat.openai.com/g/g-KsaI65Bhr-changelog-writer-by-axolo"&gt;Changelog Writer GPT here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>changelog</category>
      <category>openai</category>
      <category>webdev</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
