<?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 Fernando Doglio on Medium]]></title>
        <description><![CDATA[Stories by Fernando Doglio on Medium]]></description>
        <link>https://medium.com/@deleteman123?source=rss-d55832d5b3b1------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*gOZB0_zGrIvTLT20MtP6uA.jpeg</url>
            <title>Stories by Fernando Doglio on Medium</title>
            <link>https://medium.com/@deleteman123?source=rss-d55832d5b3b1------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 02:50:09 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@deleteman123/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[To the Parent of a Non-Speaking Child: You Are Not Crazy. You Are Connected]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/illumination/to-the-parent-of-a-non-speaking-child-you-are-not-crazy-you-are-connected-8322a63267e5?source=rss-d55832d5b3b1------2"><img src="https://cdn-images-1.medium.com/max/2600/1*Pw89sFfgE9hUTCMZiA5sLw.png" width="3168"></a></p><p class="medium-feed-snippet">Why 1 in 36 children might be leading a spiritual evolution, and why science is finally catching up</p><p class="medium-feed-link"><a href="https://medium.com/illumination/to-the-parent-of-a-non-speaking-child-you-are-not-crazy-you-are-connected-8322a63267e5?source=rss-d55832d5b3b1------2">Continue reading on ILLUMINATION »</a></p></div>]]></description>
            <link>https://medium.com/illumination/to-the-parent-of-a-non-speaking-child-you-are-not-crazy-you-are-connected-8322a63267e5?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/8322a63267e5</guid>
            <category><![CDATA[autism]]></category>
            <category><![CDATA[spirituality]]></category>
            <category><![CDATA[neurodiversity]]></category>
            <category><![CDATA[parenting]]></category>
            <category><![CDATA[consciousness]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Wed, 14 Jan 2026 17:08:00 GMT</pubDate>
            <atom:updated>2026-01-14T17:08:00.659Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[My 20-Year Marriage Didn’t Fail. It Just Ended]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/illumination/my-20-year-marriage-didnt-fail-it-just-ended-a70be90fe28e?source=rss-d55832d5b3b1------2"><img src="https://cdn-images-1.medium.com/max/1408/1*3ZKHlVTBfvSpPydqo0MJQg.png" width="1408"></a></p><p class="medium-feed-snippet">How I overcame the crushing guilt of being the one who walked away.</p><p class="medium-feed-link"><a href="https://medium.com/illumination/my-20-year-marriage-didnt-fail-it-just-ended-a70be90fe28e?source=rss-d55832d5b3b1------2">Continue reading on ILLUMINATION »</a></p></div>]]></description>
            <link>https://medium.com/illumination/my-20-year-marriage-didnt-fail-it-just-ended-a70be90fe28e?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/a70be90fe28e</guid>
            <category><![CDATA[parenting]]></category>
            <category><![CDATA[psychology]]></category>
            <category><![CDATA[mental-health]]></category>
            <category><![CDATA[divorce]]></category>
            <category><![CDATA[self-improvement]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Mon, 05 Jan 2026 23:47:33 GMT</pubDate>
            <atom:updated>2026-01-05T23:47:33.862Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[I Ended My 20-Year Marriage and received a Cosmic Bitchslap in Return.]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://deleteman123.medium.com/i-ended-my-20-year-marriage-and-received-a-cosmic-bitchslap-in-return-c583c2968410?source=rss-d55832d5b3b1------2"><img src="https://cdn-images-1.medium.com/max/2600/1*QqkVD4-_KLn00WaS1_IusA.png" width="2816"></a></p><p class="medium-feed-snippet">I thought I was destroying my foundation. Instead, I found the family I&#x2019;d neglected for a decade.</p><p class="medium-feed-link"><a href="https://deleteman123.medium.com/i-ended-my-20-year-marriage-and-received-a-cosmic-bitchslap-in-return-c583c2968410?source=rss-d55832d5b3b1------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://deleteman123.medium.com/i-ended-my-20-year-marriage-and-received-a-cosmic-bitchslap-in-return-c583c2968410?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/c583c2968410</guid>
            <category><![CDATA[personal-growth]]></category>
            <category><![CDATA[life-lessons]]></category>
            <category><![CDATA[divorce]]></category>
            <category><![CDATA[personal-development]]></category>
            <category><![CDATA[life]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Fri, 28 Nov 2025 12:42:10 GMT</pubDate>
            <atom:updated>2025-11-28T12:42:10.091Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Next-Level Design-to-code Automation]]></title>
            <link>https://itnext.io/next-level-design-to-code-automation-77285f73bd7a?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/77285f73bd7a</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[figma]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Thu, 13 Mar 2025 08:55:18 GMT</pubDate>
            <atom:updated>2025-03-13T22:40:13.095Z</atom:updated>
            <content:encoded><![CDATA[<h4>How Anima’s Prompt Feature Transforms Figma into React Code</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VLd9rf7HW7e4p3AzvZKufA.jpeg" /></figure><p>AI-assisted coding is not new, and if you haven’t been doing it then you’re missing out. However, what Anima is doing takes web development to the next level.</p><p>In prior versions of <a href="https://www.animaapp.com/">Anima</a>, you were able to take a Figma design and turn it into working code in seconds (I literally <a href="https://medium.com/itnext/from-zero-to-landing-page-in-less-than-10-minutes-b69ad55622a6">wrote an article about it</a>), however, with the latest version you’re also able to talk to your code!</p><p>That’s right, with the latest version of AnimaApp, their online playground got upgraded into an agentic playground.</p><p>You’re not ready for this level of coding efficiency!</p><h3>Getting the design</h3><p>Like with my latest experiment, we’re taking the design right off the Figma Community. This time around, we’re building a nice online portfolio.</p><p>The generic design looks like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*aIVe6bHOmJHuDLPm" /></figure><p><a href="https://www.figma.com/community/file/1095695980466714349/portfolio-template-edit-this-portfolio-and-export-it-as-html-get-your-portfolio-live-in-no-time">Nice-looking design</a>, however, it’s also quite generic and it would also seem to be aimed at designers, but I’m a developer. So let’s take a quick look at how we can transform this beautiful design into an actual working site.</p><h3>Getting the initial code</h3><p>First things first, to get this going I’m assuming you’ve already signed up to AnimaApp and configured the plug-in. If you haven’t, you can check out <a href="https://medium.com/itnext/from-zero-to-landing-page-in-less-than-10-minutes-b69ad55622a6">my previous article</a>.</p><p>With that out of the way, let’s get the code generation going. First, while you’re on Figma, right click on the design and select “Plugins -&gt; Anima — Figma to Code”.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/0*TshTJcuWJUv3dnr0" /></figure><p>This will start generating the code using MUI with React by default. You can of course customize the code generation with multiple options like Shadcn, AntD, TypeScript or even going all the way to changing the underlying tech (like Vue or simple HTML).</p><p>For the sake of this example, we’ll stick to the default settings, after all we want to customize it further.</p><p>Once the code generation ends, you’ll have the option to open it in the playground.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/757/0*Yu5vJzFBcL_EQTvj" /></figure><p>This will open up Anima’s playground, which is an online IDE that runs your code and even gives you a live preview of your site.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9PlxuNHoAoFq-1LE" /></figure><p>You can either start editing the files on your own, or, like we’re about to do, start prompting away.</p><h3>Customize your code with Anima’s agent</h3><p>Like with any good LLM, you can give the agent orders and it will use the context of the project to follow them to the letter.</p><p>In this scenario, I’m using the agent to customize my own portfolio. There are two main things we need to worry about:</p><ol><li>Making sure the website is under my name. My name and the fact that I’m a software developer should be front and center, after all, it’s my portfolio site, right?</li><li>Adding a few projects of my own. The website should show my work, so I need to add a few projects I’ve built, probably also mentioning the technologies I’ve used on them.</li></ol><h4>Retargeting the website</h4><p>For the first prompt, I’m going to explain to Anima’s agent that I’m a software developer and I’m going to give it my name.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/571/0*WBXrejLRlXvDbwGr" /></figure><p>Notice how I barely gave it my name and a small detail about me (my profession and for how long I’ve been doing it). The result, however, is quite interesting:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*e940TJl0rxxexPkZ" /></figure><p>The agent was able to pick up extra details from my name, either already having that information or gleaning it from a quick internet search. Either way, the agent crafted a very accurate description, and leaving the layout issues, we’re already in good shape.</p><p>Let’s keep going.</p><h4>Adding my projects</h4><p>For the sake of simplicity, I’ll just make up a few projects, however feel free to add your own here. Also, here would be a great place to add as much detail as you can (unlike what I did with my prompt):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/688/0*B2EmSqfwUSPjwBqq" /></figure><p>Through this simple prompt, I’m adding 3 new projects related to my actual experience without me having to write a single line of code. In fact, I didn’t even have to understand the code structure, or consider any new component to be added into the existing code.</p><p>Notice the highlighted projects, those are the ones I prompted for (see how it actually added custom names to them), and then it also added a few more to fill in the gaps.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*LToWcPSHc3xiTCiJ" /></figure><p>Of course, if I wanted to remove them, I could’ve prompted them away, however I’ll leave that to you as an extra exercise.</p><p>You can check out the working <a href="https://celadon-kringle-dc62be.netlify.app/">final version here</a>.</p><h3>The conclusion</h3><p>Anima’s new prompt-based code customization is a game-changer for developers and designers. They managed to remove much of the manual effort typically involved in turning a Figma design into a polished, functional website through the addition of agentics into their playground.</p><p>Something that used to require meticulous hand-coding can now be achieved with simple, natural language instructions and in a fraction of the time, making web development faster and more accessible.</p><p>This evolution of Anima’s platform is more than just an incremental improvement — it represents a leap ahead in terms of how we interact with code.</p><p>For developers, this means more time spent on building unique features rather than wrestling with boilerplate code. For designers, it bridges the gap between static designs and real, interactive products with minimal friction. And for anyone looking to speed up their workflow, Anima’s agentic approach offers an intuitive solution.</p><p>If you haven’t tried Anima’s latest features yet, now’s the perfect time!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=77285f73bd7a" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/next-level-design-to-code-automation-77285f73bd7a">Next-Level Design-to-code Automation</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[From Zero to Landing Page in Less Than 10 Minutes]]></title>
            <link>https://itnext.io/from-zero-to-landing-page-in-less-than-10-minutes-b69ad55622a6?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/b69ad55622a6</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[entrepeneurship]]></category>
            <category><![CDATA[landing-pages]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Fri, 20 Dec 2024 21:03:21 GMT</pubDate>
            <atom:updated>2024-12-20T21:03:21.439Z</atom:updated>
            <content:encoded><![CDATA[<h4>Get your landing page up &amp; running with minimum coding experience</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6dSPt9FBer5P-IkMhj2HiA.jpeg" /></figure><p>Launching a product or service is challenging, and you only get one shot to make a great first impression. A well-crafted landing page can make all the difference, turning visitors into loyal customers. But creating one from scratch can feel overwhelming — especially if you’re not a designer or a developer.</p><p>What if you could skip the struggle entirely? Imagine transforming a professional Figma design into a fully functional landing page in less time than it takes to drink a cup of coffee.</p><p>Thanks to <a href="https://www.animaapp.com/"><strong>Anima</strong></a> and a touch of AI, you can.</p><p>In this article, I’ll walk you through how to generate clean, ready-to-use code for a stunning landing page — all in under 10 minutes. No extensive coding. No design headaches. Let’s get started!</p><h3>Getting the design from the Figma community</h3><p>To maximize the impact of this experiment, we’re going to get the design from Figma’s community for free. Of course, if you’d like to pay for one of the more elaborate designs, you’re more than welcome. The key here is to find a good-looking landing page design that fits your product’s look and feel.</p><p>For the purpose of this article, we’ll be using the “Whitespace” design which you can find <a href="https://www.figma.com/community/file/1156860863353724933/whitepace-saas-landing-page">here</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0ARV9alZx-8AJa6S" /></figure><p>If you’re familiar with these designs, you’ll know that there are many different variations inside it, so feel free to browse a bit and pick the one you like.</p><p>Once you’re done and before we move on to Anima, make sure you right-click on the version you like and select the “Add auto layout” option.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*BnxQtTzLgIcnQEsp" /></figure><p>With that step out of the way, let’s move on to getting the full source code of our new landing page.</p><h3>Turning a design into code</h3><p>For this, we’ll be using the Anima App, which uses AI to generate readable and maintainable code. Pay special attention to the last part, “maintainable code”, because generating code through some form of AI-model is trivial at this stage, however, ensuring the generated code is usable and easy to maintain is a whole different beast, that not many even dared to try and tame.</p><p>Lucky for you, Anima has cracked the code, and through their Figma plug-in, you’re able to generate working code without human supervision.</p><p>So let’s get started!</p><h3>Step 1: Sign up for Anima</h3><p>The first thing you gotta do is go to <a href="https://www.animaapp.com/">https://www.animaapp.com</a> and click on the “Start for Free” button located on the top right corner of the screen.</p><p>Through that button, you’ll be able to set up your brand new account, and you won’t have to pay a dime.</p><p>It’s that easy!</p><h3>Step 2: Create a new project</h3><p>Once logged in, you’ll be redirected to your main dashboard, where you can see the currently available projects.</p><p>This is what I see, but in your case, you’ll probably only see the option to create a new project.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*UgtS_pnZEBoGSkcs" /></figure><p>Now look on the left-side menu, click on “Plugins” like it’s shown on the following image:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/549/0*n2QFn1pMJcoR0tzQ" /></figure><p>After that, you should be redirected to the plugin’s landing page, which shows all three options.</p><h3>Step 3: Install Figma’s Plugin</h3><p>In this tutorial we’re going to use the first option, so click on “Anima for Figma”. As an added note, you’ll see that you also have the option to use Sketch or XD, however, that’s outside of the scope of this article.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*80bstDS4atcsDKof" /></figure><p>By now, you should’ve landed on the plugin’s landing page with a big green button titled “Open in…”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4Djo99BviL7gK7kw" /></figure><p>When clicked, you’ll be presented with a list of your latest Figma files. Decide the one you’re working on, and click on it.</p><h3>Step 4: Generate the code</h3><p>It’s magic time!</p><p>Let’s open the chosen Figma design, and pick the page you like the most, in my case that is the following one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*79MAwk9efNxWeytJ" /></figure><p>If you’ve been following along so far, you’ll see the option to use Anima’s plugin.</p><p>You can see in the following image where the option is located.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/979/0*jY_o3nn0OsHk2Y4M" /></figure><p>Once clicked, that option will open a modal window and it will immediately start generating your code!</p><p>Anima’s specialized AI will go through the components defined in the Figma file and it will create clean, maintainable, and best practices-filled code that you can take home and expand on, without a problem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*gAOSiBxs0bgEeg4w" /></figure><h3>Step 5: Customizing the code generation</h3><p>Let me be clear, at this stage, you already have what you were looking for: your own coded landing page that follows an attractive design. You can take this code and run with it.</p><p>However, Anima’s plugin allows you to customize the results even more, by letting you pick between React-based code, Vue-based code, or plain HTML.</p><p>For React-based code, you have the following options:</p><ul><li><a href="https://mui.com/">MUI</a>, which is the Material UI library.</li><li><a href="https://ant.design/">AntD</a> a clean and beautiful-looking React framework.</li><li><a href="https://ui.shadcn.com/">Shadcn</a> a library of clean and minimalistic React components you can use to build a UI.</li></ul><p>Of course, you also have the option of not going with anything on top of React, however, using one of these libraries will usually render shorter, more maintainable code.</p><p>Now, in the case of Vue, right now you only have the choice between Vue 2 and 3.</p><p>On top of all these options, you have the ability to choose between JavaScript code and TypeScript code. And finally, you also have a choice when it comes to CSS framework.</p><p>This is all to say, you don’t have to adapt to Anima’s code, you can adapt the code to your own standards, which is a fantastic feature if we’re talking about having the ability to create code you can easily maintain.</p><h3>Step 6: Exporting your code</h3><p>Now that we have our code, we have two options: we can either download it right there and then, or open it on an online playground, where we can play with it, tweak it and test it before we’re ready to download it.</p><p>For the sake of speed, we’re going to set up a React-based project (we’ll be using MUI as a library):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/831/0*FrjOkwIcV_YTkIf4" /></figure><p>And then, let’s click on “Download selection” now (see below image) and get the full website’s code in less than a minute.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*PGh7NCE_fwMCOjWJ" /></figure><p>And here’s the output we get as a result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/318/0*pUFh6szCXNccs3KH" /></figure><p>Notice how this is a full-blown project. We’re not just getting isolated code that needs to be injected into a working project, this IS a working project.</p><h3>Step 7: Running &amp; deploying the project</h3><p>Now that we have a full project, let’s try to run it. The first and easiest test is to execute npm install from the root of the folder.</p><p>This process will install all dependencies and leave you ready to execute it with a simple npm run dev.</p><p>That will take care of your <strong>local version</strong>, simply visit <a href="http://localhost:5173/">http://localhost:5173</a> and you’ll see the site working (note that this will only work if you executed the command prior to clicking the link, otherwise the link won’t work for you):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*BnVh4z9iHKc7BskS" /></figure><p>With the site working on dev mode, let’s test the build process with: npm run build</p><p>If everything goes according to plan, you should get all good results, meaning we’re ready to deploy our site.</p><p>For this article, I’ll be using Netlify to host the website, since it has great compatibility with React-based projects. For this you can follow <a href="https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/">this detailed guide</a>, however, in a nutshell, this is what you’ll have to do:</p><ol><li>Push your code into a Github repo.</li><li>Log in to Netlify.</li><li>Create a new site and link it to the new repo.</li><li>Hit the “Deploy” button.</li></ol><p>All the default configurations should do the trick, so you don’t really have to do much (reason why I love Netlify so much).</p><p>Once the process is done, the website will be publicly available. I’ve done it myself, you can click <a href="https://anima-landing.netlify.app/">here</a> to check it out.</p><h3>Conclusion</h3><p>Thanks to Figma and AnimaApp, creating a stunning, functional landing page no longer requires extensive coding or design expertise. In less than 10 minutes, you can:</p><ul><li>Source a design from Figma’s community.</li><li>Generate clean, maintainable code with Anima.</li><li>Customize the output to match your standards.</li><li>Deploy it live with Netlify.</li></ul><p>This combination of AI tools empowers entrepreneurs, designers, and developers to focus on what truly matters: delivering value to users.</p><p>What are you waiting for? Get your next landing page live in <strong>10 minutes or less!</strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b69ad55622a6" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/from-zero-to-landing-page-in-less-than-10-minutes-b69ad55622a6">From Zero to Landing Page in Less Than 10 Minutes</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Every Developer Should Be Using AI in Their Workflow]]></title>
            <link>https://deleteman123.medium.com/why-every-developer-should-be-using-ai-in-their-workflow-b79f279e3f94?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/b79f279e3f94</guid>
            <category><![CDATA[career-advice]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Fri, 11 Oct 2024 07:04:01 GMT</pubDate>
            <atom:updated>2024-10-11T07:04:01.591Z</atom:updated>
            <content:encoded><![CDATA[<h4>You’re missing out if you aren’t!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9Bdogmyn8wiCotLP-j2TVw.jpeg" /></figure><p>Artificial Intelligence (AI) is no longer a futuristic concept or a buzzword — it’s here, and it’s changing the way we work, particularly for developers. Despite all the excitement around AI, I still see many developers who hesitate to integrate AI into their daily workflow. Why? Well, the most common reason is they don’t fully understand what it can do for them. They see AI tools like GitHub Copilot and worry that using them will disrupt their code or even replace them in the future.</p><p>Let me tell you, that couldn’t be further from the truth. In this article, I’m going to show you the many ways AI can benefit your development process and how you should be taking advantage of it right now.</p><p>And if you don’t want to read but rather listen/watch, there is a video version of this article here:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FV5y-P3xDZ9U%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DV5y-P3xDZ9U&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FV5y-P3xDZ9U%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/c5db93ce7304b5069b612293850c0c01/href">https://medium.com/media/c5db93ce7304b5069b612293850c0c01/href</a></iframe><h3>The Misconception: AI is Just a Co-Pilot</h3><p>Many developers view AI as nothing more than a “co-pilot” — something that might help you write code but doesn’t do much else. This mindset often leads to developers ignoring AI altogether because they think it interferes with their unique coding style. But here’s the reality: AI isn’t here to take over how you code; it’s here to enhance it.</p><p>AI tools can assist you in ways that go beyond just auto-suggesting lines of code. They can help you debug faster, test more efficiently, automate repetitive tasks, and even provide insights that would take you hours to discover on your own.</p><h3>Why You Should Be Using AI?</h3><p>Still not convinced? Let’s look at why AI should be part of your daily workflow.</p><h4><strong>Boost Efficiency</strong></h4><p>AI can help you automate mundane tasks like testing, debugging, and even writing documentation.</p><p>In other words, right now I’m referring to LLMs and their ability to generate text at a mind-boggling speed.</p><p>Is it the correct text? That’s definitely up for debate, and there are many ways in which you can help make sure it is.</p><p>However, LLMs tackle one aspect of our profession that we’ve made core even though is one of the lest impactful parts of it: writing.</p><p>We write code every single day, however, that code is just the output of all of our other tasks, like problem solving, coming up with innovative solutions, implementing or even creating new algorithms, and so on.</p><p>In other words, our biggest tool is not our keyboard, but rather our brain and our originality.</p><blockquote>Writing code is just the inevitable output of using those tools.</blockquote><p>At least until now.</p><p>Having LLMs write the code for us, under our guidance, is a fantastic way to increase the speed at which we deliver solutions. Not a way to replace us.</p><p>We as developer will still be doing all the hard work, AI will only do the boring part: writing.</p><p>Writing unit tests.</p><p>Writing documentation.</p><p>Writing features.</p><p>We do the thinking, AI does the writing. It’s a Win-Win!</p><h4><strong>Catch Bugs Earlier</strong></h4><p>With AI-powered tools, you can spot errors and inconsistencies in your code early on. You can have an LLM review your code looking for obvious issues like trying to modify the value of a constant, or logic errors, when you try to solve a problem incorrectly.</p><p>Mind you, some of the hardest problems to detect would only be picked up by some of the most advanced models, but that’s just now. Think 5 years from now.</p><p>The quality of these models will be so high that we’ll probably be using them to review entire codebases in seconds.</p><h4><strong>Improve Code Quality</strong></h4><p>Right now, we use linters to make sure teams of many developers generate the same type of code, following the same rules. However, there are many nuances that linters just can’t pick up on.</p><p>AI can offer suggestions that you might not have thought of, improving the overall quality and performance of your code and ensuring that entire teams work together following the same quality standards.</p><p>In the end, all of these benefits translate to the same single point: <em>we become better developers through AI.</em></p><h3>Addressing the Big Question: Will AI Replace Developers?</h3><p>Now, whenever AI comes up in conversation, the inevitable question is: “Is AI going to replace developers?”</p><p>The short answer is no, <strong>absolutely not</strong>.</p><p>AI is not here to replace us, but to augment our abilities and make us more efficient. It takes care of the repetitive, low-impact work so we can focus on the more meaningful aspects of development.</p><p>As I’ve already mentioned, writing code, as important as it is, is just a small piece of the puzzle.</p><p>Our value lies in designing solutions, solving real problems, and thinking critically — things AI simply can’t do.</p><p>Instead of fearing AI, we should see it as a powerful tool that allows us to focus on the tasks that really matter.</p><h3>The Tools You Should Start Using Today</h3><p>Now that we’ve stablished why you should be using AI for your day-to-day as a developer, the question is: what tools are out there for me?</p><p>There are a ton of AI tools out there, but which ones should you start with? Here are my top recommendations:</p><ul><li><a href="https://copilot.microsoft.com/"><strong>GitHub Copilot</strong></a><strong>:</strong> You’ve probably heard of it, but the real question is — are you using it to its full potential? Copilot goes beyond just code suggestions; it helps you think through complex problems and even generates test cases. Many companies are already paying for it for their developers, so ask around if you’re interested but you just don’t want to pay for it.</li><li><a href="https://codeium.com/"><strong>Codeium</strong></a><strong>:</strong> A solid alternative to Copilot that prioritizes code privacy. It’s a great option if you’re concerned about keeping your proprietary code secure while still benefiting from AI-powered assistance. It features all the functionalities from Copilot plus a few others. And the best part? It’s completely free for individual users, so you can test it right now!</li><li><strong>OpenAI’s models or Claude for Documentation:</strong> Writing documentation can be tedious, but it’s crucial. Tools like ChatGPT (or OpenAI’s assistants) or even Claude can help generate documentation based on your code, making the process smoother and faster. In fact, if you feed it your code (careful here about privacy concerns), it’ll be able to explain the code back to you. Give it a more elabore prompt, and you’ll get some fantastic documentation about it, much better than what you would get through tools like Doxygen.</li><li><strong>AI-Driven Test Automation:</strong> Tools like <a href="https://www.mabl.com/">Mabl</a> can speed up the testing process by automating various types of tests, helping you push higher-quality code faster.</li><li><strong>Code reivew &amp; security: </strong>Because it’s not just about writing the code and push it, code review is a critical part of the SDLC (Software Development Lifecycle). Of course, we always do this with coleagues, after all, who better to audit our code than other humans? Right? Well, yes, but the second best and much faster alternative is AI. Tools like <a href="https://snyk.io/">Snyk</a> and <a href="https://www.codacy.com/">Codacy</a> can help us find problems with our code, both in the form of unmet standards, hidden bugs or even security vulnerabilities that we haven’t picked up on.</li></ul><h3>The AI Hype: Should You Be Worried About Your Job?</h3><p>Whenever the topic of AI comes up in developer circles, there’s always the inevitable question: “Is this going to replace us?” The short answer is no, it won’t. AI is here to assist and augment your capabilities, not take over your job. If anything, it will make you more efficient and open up more opportunities for you to focus on higher-level tasks rather than getting bogged down in repetitive work.</p><p>AI is not replacing developers — it’s freeing them up to be more innovative and productive.</p><h3>Final Thoughts</h3><p>AI is no longer an optional add-on for developers. It’s becoming an essential part of the workflow, allowing you to work faster, smarter, and with fewer errors. I</p><p>f you’ve been hesitant to dive into AI tools, now is the time. Start small with tools like Copilot or Codeium, and gradually explore more advanced options. Trust me, once you get the hang of it, you’ll wonder how you ever worked without it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b79f279e3f94" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Is the MERN Stack Still Valid?]]></title>
            <link>https://itnext.io/is-the-mern-stack-still-valid-bc4aa65a690a?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/bc4aa65a690a</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[tech-stack]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Mon, 16 Sep 2024 22:09:12 GMT</pubDate>
            <atom:updated>2024-09-16T22:09:12.048Z</atom:updated>
            <content:encoded><![CDATA[<h4>Is it the dinosaur of web stacks or is it still a strong option for new projects?</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ahAY18DD4EMr63gnQ7JwPA.jpeg" /><figcaption>Photo by Grok</figcaption></figure><p>Remember when the MERN stack was the Beyoncé of web development stacks? It was everywhere, and if you weren’t using it, you were probably missing out on some secret sauce.</p><p>But here we are in 2024, and it’s time to ask the question that’s been on the minds of developers everywhere: Is the MERN stack still relevant, or has it become the MySpace of web development?</p><h3>What is the MERN Stack?</h3><p>The MERN stack is a full-stack development bundle that combines four powerful technologies, all revolving around JavaScript. It allows developers to build robust, dynamic web applications using a single programming language from the front end to the back end, simplifying the development process and improving efficiency.</p><p>Let’s break down each component:</p><ul><li><strong>MongoDB</strong>: Serving as the database layer, MongoDB is a NoSQL database known for its flexibility and scalability. Unlike traditional SQL databases that use tables and rows, MongoDB stores data in a JSON-like format called BSON (Binary JSON). This makes it particularly adept at handling large amounts of unstructured data and allows developers to store complex data structures without needing to define a schema upfront. This flexibility is one of the reasons MongoDB became the go-to choice for many developers looking for a more adaptable database solution.</li><li><strong>Express.js</strong>: This is the web application framework sitting on top of Node.js, providing a set of robust features for building web and mobile applications. Express makes it simpler to write server-side code, offering a lightweight and minimalistic structure that doesn’t impose too many restrictions on how you organize your app. It provides essential functionality like routing, middleware support, and templating engines, allowing developers to create APIs and handle HTTP requests and responses efficiently.</li><li><strong>React</strong>: React is the “R” in MERN and arguably the star of the stack when it comes to front-end development. Created and maintained by Facebook, React has revolutionized how we build user interfaces with its component-based architecture. It allows developers to build reusable UI components that manage their own state, resulting in a more organized and efficient way to develop complex, interactive user interfaces. React’s virtual DOM and one-way data flow contribute to its high performance, making it a popular choice for building dynamic, high-performing web apps.</li><li><strong>Node.js</strong>: The “N” in MERN stands for Node.js, a runtime environment that allows you to run JavaScript on the server side. Before Node.js, JavaScript was confined to the browser, but with the introduction of Node, developers could now use JavaScript to write server-side code. Node.js is built on the V8 JavaScript engine (the same engine used in Chrome) and is known for its non-blocking, event-driven architecture, making it ideal for building scalable network applications. Its ability to handle multiple connections concurrently without blocking makes it perfect for real-time applications like chat apps and online gaming.</li></ul><p>The beauty of the MERN stack lies in its unified language across the stack. This means developers can use JavaScript everywhere, from querying the database with MongoDB to managing the server with Express and Node.js, to building interactive user interfaces with React. This homogeneity reduces the need for context switching between languages, leading to a more streamlined and efficient development process. It’s no wonder the MERN stack has been a favorite among startups and small teams looking to build full-featured web applications quickly and efficiently.</p><p>But as the web development landscape evolves, it’s important to question whether sticking to this tried-and-true stack is the best choice moving forward.</p><h3>The Current State of the MERN Stack</h3><p>So, how does the MERN stack fare in today’s rapidly changing development landscape?</p><p><strong>Pros</strong>:</p><ul><li><strong>Unified Language</strong>: JavaScript rules both the client and server sides, reducing context switching and making development more streamlined.</li><li><strong>Vast Ecosystem</strong>: The community around the MERN stack is massive, providing countless libraries, tools, and resources.</li><li><strong>Active Support</strong>: From numerous tutorials to extensive documentation, getting help with MERN-related issues is relatively easy.</li></ul><p><strong>Cons</strong>:</p><ul><li><strong>Performance Bottlenecks</strong>: While great for many applications, the MERN stack can run into performance issues, especially with complex, data-heavy apps.</li><li><strong>Scaling Challenges</strong>: As applications grow, scaling can become a headache, often requiring additional tools and infrastructure.</li><li><strong>Rise of New Technologies</strong>: With new stacks and frameworks emerging, MERN is no longer the shiny new toy in the playground.</li></ul><h3>Alternatives and Modern Trends</h3><p>In the world of web development, alternatives are plenty. Let’s briefly look at some of the contenders:</p><ul><li><strong>MEVN Stack</strong>: A slight twist on MERN, replacing React with Vue.js. For those who prefer Vue’s simplicity and ease of integration, this is an attractive option. <a href="http://code-clash.net/stacks/MEVN">Learn more about MEVN</a></li><li><strong>MEAN Stack</strong>: Another popular variant, using Angular instead of React. It’s known for its robustness and extensive tooling. <a href="https://www.code-clash.net/stacks/MEAN">Check out MEAN</a></li><li><strong>JAMstack</strong>: A modern approach emphasizing performance and scalability by decoupling the front-end from the back-end. Perfect for static sites and dynamic apps, JAMstack is all about speed and security. <a href="https://www.code-clash.net/stacks/JAMStack">Dive into JAMstack</a></li></ul><p>Other trends are also changing how we build web applications, including:</p><ul><li><strong>Next.js</strong>: Offering server-side rendering and static site generation for React apps, making it a powerful tool for building fast, SEO-friendly applications.</li><li><strong>Serverless Architectures</strong>: Reducing the need to manage servers, allowing developers to focus more on code and less on infrastructure.</li><li><strong>Microservices</strong>: Breaking applications into smaller, independent services for better scalability and maintainability.</li></ul><h3>When to Use the MERN Stack</h3><p>While the MERN stack may not be the shiny new tech on the block anymore, it still has its place in the developer toolkit. It’s not about whether the MERN stack is the “best” option, but whether it’s the right fit for the specific needs of your project. Here are some scenarios where the MERN stack shines and is worth considering:</p><h4><strong>Rapid Prototyping and Development</strong>:</h4><ul><li><strong>Startups and MVPs</strong>: If you’re building a Minimum Viable Product (MVP) or a prototype to test an idea quickly, MERN is a solid choice. The stack allows for rapid development due to its simplicity and the fact that developers can use JavaScript across the entire stack. This unified language approach speeds up the development process, making it easier to get your product to market quickly.</li><li><strong>Iterative Development</strong>: MERN is great for projects that require frequent updates and iterations. With React’s reusable components and MongoDB’s flexible schema, you can easily modify your application as new requirements arise or user feedback is gathered.</li></ul><h4><strong>Single Page Applications (SPAs)</strong>:</h4><ul><li><strong>Dynamic and Interactive UIs</strong>: If your project involves building a highly interactive Single Page Application (SPA) where user experience and responsiveness are paramount, React within the MERN stack is an excellent choice. React’s virtual DOM and efficient rendering make it well-suited for applications that require real-time updates without refreshing the page.</li><li><strong>Complex Front-End Logic</strong>: For apps that need to handle complex front-end logic, React offers a structured way to manage state and components. This makes it easier to develop and maintain intricate user interfaces, like dashboards or data visualization tools.</li></ul><h4><strong>JavaScript-Centric Projects</strong>:</h4><ul><li><strong>Unified Language Across the Stack</strong>: If your development team is well-versed in JavaScript and prefers to stick to a single language across the entire application, MERN is ideal. This minimizes context switching between different programming languages and can streamline the development process. It’s also beneficial for smaller teams or individual developers who want to manage both the front-end and back-end without learning additional languages.</li><li><strong>Full-Stack JavaScript</strong>: Projects that aim to leverage the power of JavaScript on both the client and server sides will benefit from the MERN stack’s capabilities. This can lead to a more consistent and cohesive codebase, easier debugging, and faster development.</li></ul><h4><strong>Flexible Data Structure Needs</strong>:</h4><ul><li><strong>Dynamic and Evolving Data Models</strong>: If your application deals with data that doesn’t fit neatly into a traditional SQL schema or is subject to change frequently, MongoDB’s document-oriented database is a strong choice. Its flexible schema allows you to store complex data types without the need for predefined structures, making it ideal for projects where the data model is expected to evolve over time.</li><li><strong>High Data Variety</strong>: Applications that need to store diverse types of data, such as user profiles, content management systems, or IoT data, can benefit from MongoDB’s ability to handle various data formats and types with ease.</li></ul><h4><strong>Small to Medium-Sized Projects</strong>:</h4><ul><li><strong>Scalability at a Modest Scale</strong>: MERN is well-suited for small to medium-sized applications where scalability is required but not to an extreme level. It can handle a fair amount of traffic and data if set up correctly, making it suitable for applications like blogs, e-commerce platforms, and social networking sites with a moderate user base.</li><li><strong>Resource-Conscious Development</strong>: For teams or organizations with limited resources, the MERN stack offers an efficient way to build a complete web application without the need for a large team or extensive infrastructure. Its open-source nature and large community support also mean you can find plenty of free resources and libraries to enhance your project.</li></ul><h4><strong>Projects Requiring Reusable Components</strong>:</h4><ul><li><strong>Modular Development</strong>: React’s component-based architecture allows you to build reusable UI components, which can save development time and effort. If your project can benefit from modular design, where elements like buttons, forms, and navigation can be reused across different parts of the application, the MERN stack’s React component system is a major advantage.</li><li><strong>Consistent User Interfaces</strong>: For applications that need a consistent look and feel across various sections or features, React makes it easier to maintain uniformity by reusing components and ensuring consistent styling and behavior.</li></ul><h4>When to Look Elsewhere</h4><p>However, the MERN stack isn’t a one-size-fits-all solution. There are situations where you might want to consider other options:</p><ul><li><strong>High-Performance Requirements</strong>: If your application demands the utmost performance, such as in high-frequency trading platforms or real-time analytics, other stacks or technologies might offer better optimization and speed.</li><li><strong>Heavy Data Processing</strong>: For applications that need to handle complex data processing or transactions, a relational database like PostgreSQL or a stack specifically tailored for heavy data manipulation might be more suitable.</li><li><strong>Scalability Concerns</strong>: If you’re building an application that expects to scale massively, such as a large-scale social media platform or a cloud-based service with millions of users, you might encounter challenges with MERN’s scalability. In such cases, microservices architecture or a more robust backend solution might be preferable.</li></ul><p>In other words, the MERN stack is still a valid choice for many scenarios, especially when you need to move quickly and efficiently with a JavaScript-centric approach. But like any tool, it’s essential to evaluate it against your project’s unique needs and constraints before diving in.</p><h3>Is the MERN Stack Here to Stay?</h3><p>That’s the question, isn’t it?</p><p>The MERN stack has shown a remarkable ability to adapt and remain relevant. With a huge community and a wealth of resources, it’s still a great way for new developers to learn full-stack development using JavaScript.</p><p>Plus, it’s not like MongoDB, Express, React, or Node.js are going away anytime soon; they’re all still evolving and improving.</p><p>So give it a try! (maybe?)</p><h3>Conclusion</h3><p>So, is the MERN stack still valid? Absolutely, but with caveats. While it’s no longer the only player in town, it remains a solid choice for certain projects and use cases. It’s particularly great for developers looking to leverage their JavaScript knowledge across the full stack.</p><p>But as with any technology decision, it’s crucial to assess the specific needs of your project. If you’re curious to see how other stacks compare or want to join in on the debate, check out <a href="https://www.code-clash.net/stacks/MERN">Code-clash.net</a> for more insights on stack wars and modern development trends.</p><p>Whether you’re team MERN, JAMstack, or something else entirely, the key is finding the right tool for the job.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bc4aa65a690a" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/is-the-mern-stack-still-valid-bc4aa65a690a">Is the MERN Stack Still Valid?</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Don’t Know How To Pick Your Next Technology? Check Out CodeClash]]></title>
            <link>https://itnext.io/dont-know-how-to-pick-your-next-technology-check-out-codeclash-07f0b781359e?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/07f0b781359e</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[programming-languages]]></category>
            <category><![CDATA[career-advice]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Wed, 14 Aug 2024 10:55:52 GMT</pubDate>
            <atom:updated>2024-08-14T10:55:52.477Z</atom:updated>
            <content:encoded><![CDATA[<h4>The ultimate place to understand how different technologies compare to each other</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*paVa7H6thpNoj_tZ" /></figure><p>Whether you’re just starting out on your programming journey or you’ve recently graduated and are ready to take your skills to the next level, you’ve probably realized something: the tech world is HUGE. There are dozens of programming languages out there, each with its own strengths, quirks, and learning curves. It’s exciting, but let’s be honest — it can also be pretty overwhelming.</p><p><em>How do you know which language to learn first?</em></p><p><em>Which one will best align with your career goals?</em></p><p><em>And what if you pick the wrong one?</em></p><p>That’s where <a href="https://www.code-clash.net/"><strong>CodeClash</strong></a> comes in. Think of it as your go-to resource in this vast and sometimes confusing landscape of programming languages. They’re here to help you cut through the noise, so you can focus on what really matters — building awesome projects, learning new skills, and landing that dream job!</p><h3>The Problem — Too Many Choices, Not Enough Guidance</h3><p>Let’s face it: The sheer number of programming languages available today can make your head spin. Should you start with Python because it’s known to be beginner-friendly? Or maybe dive into Java since it’s used by tons of large companies? What about JavaScript, the backbone of web development? And then there’s C++, Swift, Ruby, Rust, Go… the list seems endless!</p><p>For students and new graduates, especially, this abundance of choices can feel more paralyzing than empowering. You want to make sure you’re investing your time in learning something that will pay off in the long run, but without clear guidance, it’s easy to get stuck in analysis paralysis — spending more time researching than actually coding.</p><h3>How CodeClash Simplifies Decision-Making</h3><p>This is exactly where <a href="https://www.code-clash.net/"><strong>CodeClash</strong></a> shines — by making it easier for you to make informed choices without having to spend hours or even days sifting through endless articles and forums.</p><p>CodeClash provides detailed, side-by-side comparisons of popular programming languages and technologies. But they don’t just bombard you with technical jargon and expect you to figure it out. Their comparisons are specifically designed with students and new graduates in mind. They break down the pros, cons, and best use cases for each language in a way that’s easy to understand — even if you’re just starting out.</p><p>For example, if you’re torn between learning <a href="https://www.code-clash.net/articles/Rust-Go">Rust and Go</a>, you can quickly see how they stack up against each other in terms of performance, ease of learning, and real-world applications. This means you can spend less time worrying about whether you’re choosing the “right” language and more time actually learning and building.</p><h3>Key Features of CodeClash</h3><p>So, what makes CodeClash the ultimate resource for budding developers? Let’s break it down:</p><ul><li><strong>In-Depth Comparisons</strong>: They don’t just skim the surface. Their comparisons dig deep, covering everything from performance and syntax to community support and real-world applications. Whether you’re deciding between Python and JavaScript or trying to figure out if Rust is worth your time, they got you covered.</li><li><strong>Beginner-Friendly Content</strong>: Not everyone starts out as a seasoned developer, and that’s okay. They avoid confusing technical terms and instead use straightforward language that anyone can grasp. Whether you’re still in your first coding class or recently graduated, their content is designed to be accessible.</li><li><strong>Real-World Applications</strong>: It’s one thing to read about a language’s features, but it’s another to see how those features play out in real life. Some of their comparisons provide examples of where and how different languages are used in the industry, helping you understand which ones align with your interests and career goals.</li><li><strong>Roadmaps and Learning Paths</strong>: Not sure where to start? No problem! As part of their analysis, they’ll link you to learning paths and roadmaps that guide you from beginner to pro, helping you focus on the skills and languages that will make the biggest impact on your future career.</li></ul><h3>The Benefits for Students and New Graduates</h3><p>Now, let’s talk about what all this means for you, the student or new graduate looking to make your mark in the tech world.</p><ul><li><strong>Building Confidence</strong>: When you understand why you’re learning a particular language, you feel more confident in your choices. CodeClash helps you make informed decisions, so you can dive into your coding journey with a clear direction and purpose, knowing you’re on the right path.</li><li><strong>Preparing for the Job Market</strong>: Understanding the strengths and weaknesses of different languages is crucial when you’re job hunting. With CodeClash, you’ll know exactly what employers are looking for and how to position yourself as the ideal candidate. Whether it’s knowing that JavaScript is key for front-end roles or understanding that Python is essential for data science, you’re better prepared to match your skills with job market demands.</li><li><strong>Enhancing Learning Efficiency</strong>: Time is precious, especially when you’re balancing studies, projects, and maybe even job applications. CodeClash helps you cut through the noise, allowing you to focus on learning the languages and technologies that will give you the biggest return on your investment. No more wasting time on languages that won’t serve your goals — just clear, actionable advice to get you where you want to be.</li></ul><h4>Conclusion</h4><p>Choosing the right programming language can be daunting, especially when you’re just starting out. But with the right guidance, it doesn’t have to be. <a href="https://www.code-clash.net/"><strong>CodeClash</strong></a> is here to help you navigate the world of programming languages with confidence, so you can focus on what you love — learning, building, and coding your way to success.</p><p>So why wait? Start exploring the world of programming languages with CodeClash today, and take the first step toward mastering the skills that will shape your future!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=07f0b781359e" width="1" height="1" alt=""><hr><p><a href="https://itnext.io/dont-know-how-to-pick-your-next-technology-check-out-codeclash-07f0b781359e">Don’t Know How To Pick Your Next Technology? Check Out CodeClash</a> was originally published in <a href="https://itnext.io/">ITNEXT</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[X-Bows Crystal Programmable Mechanical Keyboard: A Developer’s Best Friend?]]></title>
            <link>https://deleteman123.medium.com/x-bows-crystal-programmable-mechanical-keyboard-a-developers-best-friend-a9ada660b8b8?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/a9ada660b8b8</guid>
            <category><![CDATA[keyboard]]></category>
            <category><![CDATA[mechanical-keyboards]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[review]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Fri, 29 Mar 2024 07:38:37 GMT</pubDate>
            <atom:updated>2024-04-01T07:16:57.626Z</atom:updated>
            <content:encoded><![CDATA[<h4>Is this mechanical keyboard the right one for you as a developer? Let’s find out!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lo6TNjiThkKQ0u70OvXn7g.png" /></figure><p>Keyboards are an essential part of any developer’s toolkit, and when you find one that feels like it was made just for you, it’s a game-changer.</p><p>In this review, we’ll delve into the <a href="https://x-bows.com/products/crystal-bluetooth-ergonomic-mechanical-keyboard">X-Bows Crystal Programmable Mechanical Keyboard</a>, which might just be the next must-have for coding enthusiasts.</p><p>FYI, this article is also in video format, so feel free to watch it here:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FkEa3aBd0sCY%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DkEa3aBd0sCY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FkEa3aBd0sCY%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/07a6aeb26dd88b025b83ad09d027706f/href">https://medium.com/media/07a6aeb26dd88b025b83ad09d027706f/href</a></iframe><h3>First Impressions: Unboxing the X-Bows Crystal</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xChnlT33ox9kDf6m" /></figure><p>The unboxing experience of the X-Bows Crystal keyboard sets the tone for the quality of the product. The keyboard arrives in a hefty package with a magnetic lid, which adds a touch of elegance right from the start.</p><p>Inside, you find the keyboard nestled in foam, displaying its sleek design and transparent background. The X-Bows Crystal is a 70 percent keyboard, meaning it foregoes some keys for a more compact size, and it’s also wireless, which adds to its modern appeal.</p><p>Specifically, as a 70% keyboard, the Crystal doesn’t have any function keys nor a numpad section, however, as we’ll see in a second, that’s not an issue for this keyboard.</p><p>Included in the box are a USB-A to USB-C cable and a key switch puller, a hint at the keyboard’s hot-swappable feature. This allows users to customize their typing experience further by easily changing out the switches.</p><h3>Customizability for the Developer</h3><p>As a developer, having a keyboard that can be tailored to your specific needs is crucial. The X-Bows Crystal shines in this department. It comes with silent red, normal red, or brown switches, and the choice between Mac or Windows layouts.</p><p>The keyboard boasts RGB lighting, enhancing its aesthetic appeal with 16.8 million colors, especially elegant due to the transparent body. While not necessarily a productivity booster, it’s a nice touch that many will appreciate.</p><p>But the real draw is the keyboard’s programmability. It’s fully customizable through QMK, a powerful firmware that allows for extensive key remapping, macro creation, and layer configurations. And in this particular case, the entire configuration is done through a Web UI, which simplifies the process even further!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JASXmnupa9PKQKVRdNu1sA.png" /></figure><p>Simply go to KeyboardLab.club, select the “Crystal” keyboard, and start configuring your ideal layout. Once you’re done, click on “Download Config File” and drop the new configuration into your USB-connected keyboard (more details on the video at the top of this article!).</p><p>These features enable users to access more functionality without additional physical keys, a boon for any developer looking to streamline their workflow.</p><h3>Ergonomic Design</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2W2eqqIj9dvit8K45o53PQ.png" /><figcaption>The X-Bows Crystal’s design is a good first attempt at ergonomics</figcaption></figure><p>While the X-Bows Crystal isn’t a fully ergonomic keyboard, it does offer several ergonomic benefits.</p><p>The key columns are aligned to reduce finger travel (it’s a columnar layout), and the keys are angled to match the natural positioning of your hands allowing you to use your hands in a relaxed position, which can help prevent repetitive strain injuries (RSIs).</p><p>See the following “hyper-detailed” visual explanation of what a natural typing position looks like vs the standard one you’re forced to adopt with regular keyboards.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AHIloAnOnobbAuhgiEJItw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R64gXjq6LD85x3GBNq-7vA.png" /></figure><p>However, it lacks the ability to tent or tilt like some other ergonomic keyboards, so while it’s a step in the right direction, it might not be THE ultimate solution for those already suffering from RSIs.</p><h3>Build Quality and Sound</h3><p>The X-Bows Crystal mechanical keyboard impresses not only with its transparent design aesthetics but also with its robust build quality.</p><p>The heft of the keyboard is immediately noticeable, suggesting that the materials used are of high caliber. This is not a keyboard that feels like it will slide around your desk or show wear and tear after a few months of heavy use. Its substantial weight “feels right”, conveying a sense of durability that you’d want from a device that is an integral part of your daily routine.</p><p>When it comes to the sound of the keyboard, the X-Bows Crystal offers a satisfying tactile feedback that auditory and touch typists will appreciate.</p><p>The choice between silent red, normal red, or brown switches allows for personalization not only in feel but also in sound. The brown switches, often favored for their tactile bump and audible click (which I love!), provide a typing experience that is both engaging and efficient.</p><p>The keyboard’s hot-swappable nature takes this customization further, allowing users to replace switches without soldering, which is a welcome feature for enthusiasts who may prefer a different switch feel or sound over time.</p><p>The keycaps themselves contribute to the overall acoustics of the keyboard, with a sound profile that strikes a balance between “clacky” and “thocky” (those are the actual technical terms BTW!)— providing a deep, satisfying sound on each keystroke without being too loud or distracting.</p><p>For developers and typists who take pleasure in the auditory feedback of their keystrokes, the X-Bows Crystal does not disappoint.</p><h3>Pricing and Value: Worth the Investment?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aSyTSXiHK2KyqKVZOGle5A.png" /></figure><p>At approximately $260, the X-Bows Crystal is positioned as a premium keyboard within the mechanical keyboard market.</p><p>While the price tag might seem steep for those accustomed to more conventional keyboards, it’s important to consider the value that the Crystal provides.</p><p>For professionals who spend countless hours coding, writing, or gaming, the return on investment can be measured in terms of comfort, efficiency, and satisfaction.</p><p>The keyboard’s fully programmable nature means that it can adapt to the user’s workflow, potentially streamlining tasks and reducing the likelihood of repetitive strain from unnecessary key travel or awkward hand positions.</p><p>Moreover, the build quality suggests that the X-Bows Crystal is built to last, potentially outliving cheaper alternatives that might need to be replaced more frequently. This longevity, combined with the ability to modify and replace switches, means the keyboard can evolve with your preferences and requirements over time.</p><p>In comparison to other high-end mechanical keyboards, particularly those targeted at the ergonomic and customizability-conscious market, the Crystal holds its own.</p><p>Competitors such as the Moonlander or Dygma Raise may offer additional ergonomic features like split design and thumb clusters but come at a higher cost. The X-Bows Crystal provides a middle ground, offering a significant number of high-demand features while remaining more accessible price-wise.</p><p>Ultimately, whether the Crystal’s price tag is justified will depend on the individual user’s needs and priorities. For those who view their keyboard as an essential tool in their productivity arsenal and are willing to invest in quality, the X-Bows Crystal offers a compelling blend of features that could well justify its cost.</p><h3>A little gift for you!</h3><p>If you’ve made it this far, I have a little present for you!</p><p>The good folks from X-Bows have agreed to create a special discount code for everyone who reads this article.</p><p>During checkout, use the code <strong>FER20</strong> to get a whopping 20% off of any of the <a href="https://x-bows.com/products/crystal-bluetooth-ergonomic-mechanical-keyboard">Crystal keyboards</a>!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/320/0*cb-BSmkPQg3nenq3.gif" /></figure><h3>Conclusion</h3><p>The X-Bows Crystal Programmable Mechanical Keyboard is a solid choice for developers who prioritize customization, comfort, and build quality. Its programmable features and ergonomic design make it a contender for those looking to optimize their setup without breaking the bank. While it may not be the ultimate ergonomic keyboard, it offers a significant step towards a more comfortable typing experience.</p><p>For those on the fence, the X-Bows Crystal might just be worth giving a try. Its blend of style, comfort, and customizability could very well make it a beloved part of your coding life.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a9ada660b8b8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Share Code Between Micro Frontends]]></title>
            <link>https://medium.com/bitsrc/how-to-share-code-between-micro-frontends-13297520fade?source=rss-d55832d5b3b1------2</link>
            <guid isPermaLink="false">https://medium.com/p/13297520fade</guid>
            <category><![CDATA[micro-frontends]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[front-end-development]]></category>
            <dc:creator><![CDATA[Fernando Doglio]]></dc:creator>
            <pubDate>Thu, 21 Mar 2024 16:31:42 GMT</pubDate>
            <atom:updated>2024-03-21T16:32:14.168Z</atom:updated>
            <content:encoded><![CDATA[<h4>Sharing context, functionality, and styles between micro frontends</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cLZLaCFdeIS1ZYD-hNN72w.jpeg" /></figure><p>The biggest benefit of micro frontends, if you don’t know about them, is that you can use them as building blocks for different projects, keeping a consistent look and user experience across all your applications.</p><p>In theory, that sounds great, but then again, building such a “technological wonder” is not trivial. If you’re building multiple projects with them and trying to get the most out of your micro frontends, then you’ll start running into a very common problem: repeated code.</p><p>Granted, more like a problem is, this is the perfect opportunity for you to abstract and share code across multiple individual micro frontends. But how can you do it?</p><p>In this article, I’m going to show you how you can use <a href="https://bit.dev/">Bit</a> to achieve exactly this!</p><p><a href="https://bit.dev/">Bit. Composable software.</a></p><h3>The example project</h3><figure><a href="https://bit.cloud/deletemangroup/microfe"><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*I2TecS8OY7bRdX5W.png" /></a><figcaption><a href="https://bit.cloud/deletemangroup/microfe">https://bit.cloud/deletemangroup/microfe</a></figcaption></figure><blockquote><em>For this example, we’ll be using Bit. And if you don’t know what that is, Bit offers tools for component-driven development, source code control, versioning, dependency management, packaging, distribution, sharing, collaboration, discoverability, search, consumption, installation, and integration. The concept of “component” within Bit encapsulates code, tests, and documentation, making it suitable for shared code among micro frontends</em></blockquote><p>To illustrate how everything works, I’m going to use the <a href="https://bit.cloud/deletemangroup/microfe">following project</a> where I have 2 working micro frontends (bit applications) that have code that could be shared instead of repeated in their individual code bases.</p><p>So for this example I’ll be using 2 micro frontends I’ve created using Bit, they’re actually <a href="https://bit.dev/docs/apps/create-react-apps/">Bit component applications</a>, which means they can be deployed and executed individually. I’ll show you their code and how they share a single component that could be re-used, if refactored properly.</p><p>In the end, using Bit, I will show you how to refactor that component, extract it into an individual Bit component, and modify the other two micro frontends to use the common code instead of repeating logic.</p><h3>Reviewing the micro frontends</h3><p>So let’s start by reviewing our micro frontends and understanding where the repeated code/logic is. We have two micro frontends:</p><ul><li>my-docs: This little micro frontend acts as a small documentation site. It lets you navigate between different sections of the documentation.</li><li>my-blog: This micro frontend acts as a quick and dirty blog, which has 3 different articles inside and also lets you navigate between the different pages using a menu.</li></ul><h3>The documentation site</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/808/0*aCEVO8i49Gtt8zs8.png" /><figcaption>The demo app</figcaption></figure><p>This application shows a navigation bar at the top, and then renders an internal page. Here’s the code for it:</p><pre>import React from &#39;react&#39;;<br>import {  Routes, Route}  from &#39;react-router-dom&#39;;<br>import Home from &#39;./Home&#39;;<br>import GettingStarted from &#39;./GettingStarted&#39;;<br>import APIReference from &#39;./ApiReference&#39;;<br>import &#39;./docs.module.css&#39;<br><br>export function Documentation() {<br>  <br>  let prefix = &quot;&quot;<br>  <br>  const defaultRoutes = [<br>    {<br>      path: prefix + &quot;/getting-started&quot;,<br>      element: &lt;GettingStarted /&gt;<br>    }, <br>    {<br>      path: prefix + &quot;/api-reference&quot;,<br>      element: &lt;APIReference /&gt;<br>    },<br>    {<br>      path: prefix + &quot;/&quot;,<br>      element: &lt;Home /&gt;<br>    }<br>  ]  <br>    return (<br>        &lt;Routes&gt;{<br>            defaultRoutes.map( (r, index) =&gt; {<br>                return (&lt;Route key={index} path={r.path} element={r.element} /&gt;);<br>            })<br>        }<br>        &lt;/Routes&gt;<br>      );<br>    }</pre><p>As you can see, the code is using react-router-dom to navigate between pages. And the code for the nav bar at the top, is the following:</p><pre>import React from &#39;react&#39;;<br>import {  Link, useLocation } from &#39;react-router-dom&#39;;<br><br>export function Nav() {<br>  let location = useLocation()<br>  let pathParts = location.pathname.split(&quot;/&quot;)<br>  let usePrefix = pathParts[1].indexOf(&quot;docs&quot;) != -1<br>  let prefix = &quot;&quot;<br>   <br>  if(usePrefix) {<br>    let pathParts = location.pathname.split(&quot;/&quot;)<br>    prefix = &quot;/&quot; + pathParts[1]<br>  }<br>  return (<br>     &lt;div&gt;<br>        &lt;nav&gt;<br>          &lt;ul&gt;<br>            &lt;li&gt;<br>              &lt;Link to={ prefix + &quot;/&quot;}&gt;Home&lt;/Link&gt;<br>            &lt;/li&gt;<br>            &lt;li&gt;<br>              &lt;Link to={ prefix + &quot;/getting-started&quot;}&gt;Getting Started&lt;/Link&gt;<br>            &lt;/li&gt;<br>            &lt;li&gt;<br>              &lt;Link to= {prefix +  &quot;/api-reference&quot;}&gt;API Reference&lt;/Link&gt;<br>            &lt;/li&gt;<br>          &lt;/ul&gt;<br>        &lt;/nav&gt;<br>      &lt;/div&gt;<br>  )<br>}</pre><p>Granted, the links are hard-coded, but you get the point.</p><p>Let’s now take a look at the next micro frontend.</p><h3>The blog</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/944/0*h74J7gE_MwCc7S40.png" /></figure><p>In the case of this micro frontend, we have yet another top navigation (one that has no styles), and then we can see the content of each post underneath the menu.</p><p>Pretty basic stuff, but if you notice, the navigation logic is the same as before. Let’s take a look at the code now.</p><pre>import React from &#39;react&#39;;<br>import {Routes, Route} from &#39;react-router-dom&#39;<br>import Post1 from &#39;./posts/post1&#39;<br>import Post2 from &#39;./posts/post2&#39;<br>import Post3 from &#39;./posts/post3&#39;<br><br>const posts = [<br>  { url: &#39;/posts/1&#39;, component: &lt;Post1 /&gt;},<br>  { url: &#39;/posts/2&#39;, component: &lt;Post2 /&gt;},<br>  { url: &#39;/posts/3&#39;, component: &lt;Post3 /&gt;},<br>];<br><br>export function BlogComponent() {<br>  return (<br>    &lt;Routes&gt;<br>      {posts.map( (post, index) =&gt; (<br>        &lt;Route key={index} path={post.url} element={post.component} /&gt;<br>      ))}<br>    &lt;/Routes&gt;<br>  );<br>}</pre><p>As you can appreciate, the code for this one is very similar to the other. It’s essentially listing a set of routes and associating different components to these routes. Each of these internal components (the posts), uses the Nav component, which looks like this:</p><pre>import React from &#39;react&#39;;<br>import {  Link, useLocation } from &#39;react-router-dom&#39;;<br><br>export function Nav() {<br>  let location = useLocation()<br>  let pathParts = location.pathname.split(&quot;/&quot;)<br>  let usePrefix = pathParts[1].indexOf(&quot;docs&quot;) != -1<br>  let prefix = &quot;&quot;<br><br>  if(usePrefix) {<br>    let pathParts = location.pathname.split(&quot;/&quot;)<br>    prefix = &quot;/&quot; + pathParts[1]<br>  }<br><br>  return (<br>     &lt;div&gt;<br>        &lt;nav&gt;<br>          &lt;ul&gt;<br>            &lt;li&gt;<br>              &lt;Link to={ prefix + &quot;/posts/1&quot;}&gt;Post1&lt;/Link&gt;<br>            &lt;/li&gt;<br>            &lt;li&gt;<br>              &lt;Link to={ prefix + &quot;/posts/2&quot;}&gt;Post2&lt;/Link&gt;<br>            &lt;/li&gt;<br>            &lt;li&gt;<br>              &lt;Link to= {prefix +  &quot;/posts/3&quot;}&gt;Post3&lt;/Link&gt;<br>            &lt;/li&gt;<br>          &lt;/ul&gt;<br>        &lt;/nav&gt;<br><br>      &lt;/div&gt;<br>  )<br>}</pre><p>In case you haven’t noticed, this is the exact same code as with the other navigation menu, but it has 3 different links.</p><p>So now we understand the problem: the Nav component can be shared between both micro frontends.</p><p>Let’s see how we can do that.</p><h3>The solution</h3><p>Here’s what we need to do:</p><ol><li>We need to access the code of both micro frontends.</li><li>Create a Bit component containing the code of the Nav component, refactored so that it can be used in different places.</li><li>Export the component so that it can be re-used everywhere.</li><li>Install the component in both micro frontends and publish their new version.</li></ol><p>Easy right? Let’s get started!</p><h3>Accessing the code of both micro frontends</h3><p>Given how both micro frontends are Bit components, you can install them through NPM in any application. However, in that situation, they would be downloaded into your node_modules folder, and you wouldn&#39;t have access to their code.</p><p>So, instead, we’re going to use Bit to import the components into an empty project. The bit import command will do two things for us:</p><ol><li>It’ll download the code of our micro frontends into a folder at the root of the project.</li><li>It’ll create symlinks inside the node_modules folder so that if you try to use any of them inside another project as a normal dependency, you&#39;ll still be able to import it as any other regular dependency.</li></ol><p>Now, use the following commands to get you going:</p><pre>mkdir new-project &amp;&amp; cd new-project<br>bit init<br>bit import deletemangroup.microfe/apps/my-docs<br>bit import deletemangroup.microfe/apps/my-blog</pre><p>After running these commands, you’ll have the following folder structure:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/536/0*88uxXa0g07SRaIJ3.png" /></figure><p>We can now start editing one of the versions of theNav component from one of the micro frontends. Let&#39;s pick the version with styles from themy-docs micro frontend.</p><p>But first, we’re going to create a new component, which is where we’re going to put our code:</p><pre>bit create react navigation/topbar</pre><p>At this stage, we have two micro frontends and an empty component. If we run bit start at the root of our folder, we&#39;ll get the dev server, which will let us test everything we have:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HtfUIM-o8MBEZWge.png" /></figure><p>Let’s now perform the code updates on the component we want.</p><p>Let’s edit the topbar.tsx file inside our new component and add the following code:</p><pre>import React, { ReactElement } from &#39;react&#39;;<br>import {  Link, useLocation } from &#39;react-router-dom&#39;;<br><br>export type TopbarProps = [<br>  {<br>    url: string,<br>    text: string<br>  }<br>]<br><br>export function Topbar({routes}: { routes: TopbarProps}) {<br>  let location = useLocation()<br><br>  let pathParts = location.pathname.split(&quot;/&quot;)<br>  let usePrefix = pathParts[1].indexOf(&quot;docs&quot;) != -1<br>  let prefix = &quot;&quot;<br><br>  if(usePrefix) {<br>    let pathParts = location.pathname.split(&quot;/&quot;)<br>    prefix = &quot;/&quot; + pathParts[1]<br>  }<br><br>  return (<br>     &lt;div&gt;<br>        &lt;nav&gt;<br>          &lt;ul&gt;<br>            { routes.map( r =&gt; (<br>              &lt;li&gt;<br>                &lt;Link to={r.url}&gt;{r.text}&lt;/Link&gt;<br>              &lt;/li&gt;<br>            ))}<br>          &lt;/ul&gt;<br>        &lt;/nav&gt;<br>      &lt;/div&gt;<br>  )<br>}</pre><p>This code is now accepting the list of routes as a mandatory prop, and it’s also exporting the type definition for the format of the routes array, so we make sure we know exactly how to create it.</p><p>With this change, we can now go to our my-docs component (inside the same project) and edit the internal pages of the documentation.</p><p>For example, the “Home” section looked like this before:</p><pre>import React from &#39;react&#39;;<br>import { Nav } from &#39;./nav&#39;<br><br>function Home() {<br>  return (<br>    &lt;div&gt;<br>      &lt;Nav /&gt;<br>      &lt;h2&gt;Home&lt;/h2&gt;<br>      &lt;p&gt;Welcome to the documentation site!&lt;/p&gt;<br>    &lt;/div&gt;<br>  );<br>}<br><br>export default Home;</pre><p>And now, it should look like this:</p><pre>import React from &#39;react&#39;;<br>import { MenuItems } from &#39;./MenuItems&#39;;<br>import { Topbar, TopbarProps } from &#39;@deletemangroup/microfe.navigation.topbar&#39;;<br><br>function Home() {<br>  return (<br>    &lt;div&gt;<br>      &lt;Topbar routes={MenuItems as TopbarProps} /&gt;<br>      &lt;h2&gt;Home&lt;/h2&gt;<br>      &lt;p&gt;Welcome to the documentation site!&lt;/p&gt;<br>    &lt;/div&gt;<br>  );<br>}<br>export default Home;</pre><p>Notice how I’m importing the new Topbar component as a regular module, instead of referencing the relative path of my file. This is thanks to the fact that I&#39;ve created the component with Bit first. Bit created the symlink inside my node_modules folder so I could do this without having to first upload and publish the component somewhere.</p><p>I’ve also defined the list of routes (as you can see), inside another local file. It simply exports an array of objects like this:</p><pre>export const MenuItems = [<br>    {url: &quot;/&quot;, text: &quot;Home&quot;},<br>    {url: &quot;/getting-started&quot;, text: &quot;Getting Started&quot;},<br>    {url: &quot;/api-reference&quot;, text: &quot;API Reference&quot;}<br>]</pre><p>We can now proceed to do this on the other project, the my-blog project. We&#39;ll edit the posts for this one, when before they looked like this:</p><pre>import { Nav } from &quot;../nav&quot;<br><br>export default function () {<br><br>    return (<br>        &lt;div&gt;<br>            &lt;Nav /&gt;<br>            &lt;h1&gt;Post #1&lt;/h1&gt;<br>            &lt;p&gt;<br>                This is the text of the first blog post<br>            &lt;/p&gt;<br>        &lt;/div&gt;<br>    )<br>}</pre><p>Now, they’ll look like this:</p><pre>import { MenuItems } from &quot;../BlogRoutes&quot;<br>import { Topbar, TopbarProps } from &quot;@deletemangroup/microfe.navigation.topbar&quot;<br><br>export default function () {<br><br>    return (<br>        &lt;div&gt;<br>            &lt;Topbar routes={MenuItems as TopbarProps} /&gt;<br>            &lt;h1&gt;Post #1&lt;/h1&gt;<br>            &lt;p&gt;<br>                This is the text of the first blog post<br>            &lt;/p&gt;<br>        &lt;/div&gt;<br>    )<br>}</pre><p>As before, I’ve defined the list of routes for my blog inside a new file called BlogRoutes and now I’m importing the Topbar component instead of the local Nav one.</p><p>Wanna see the results? Simply go back to the browser, using the dev server, and visit each micro frontend, the automatic documentation will render each component for you:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*S3xvsHt5ByzsEvC3.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*SY2sPaYpTkveKMsP.png" /></figure><p>We’re now clearly importing the same component, with the added benefit that now both micro frontends have the same styles on the nav menu (which wasn’t the case before).</p><p>The last thing to do, is to publish the new component, and to update the micro frontends by publishing the new, updated code into Bit.cloud.</p><p>We can easily do that with the following commands:</p><pre>bit install add-missing-deps #to make sure all dependencies are already installed<br>bit tag #to version all components<br>bit export #to publish the new versions</pre><p>Once you’ve tagged all components correctly, you should get something like this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/828/0*_Lc5bCIl_-5CUVGl.png" /></figure><p>You can see how the new versions have been auto-assigned to both the micro frontends and the new component.</p><p>Now simply export them with bit export and you&#39;re done!</p><h3>Compiling everything together</h3><p>One last detail that I haven’t mentioned yet: thanks to Bit’s understanding of the relationship between these components (our new component and the two micro frontends), whenever we change our common code, it will automatically re-build all dependent packages (in our case, both micro frontends).</p><p>This is called RippleCI, and you can see it if you go to your scope and click on the RippleCI option. This is what I see when I push a new version of the Topbar component:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*IsQAVu_37vou8Nf_.png" /><figcaption><a href="https://bit.cloud/">bit.cloud</a></figcaption></figure><p>You’ll notice how the Topbar component is being built, but the other two are queued up waiting for it to finish, so they can also be built (and tested).</p><p>If everything goes according to plan, you should see something like this (all green):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ieHK8tjSkSYstBsq.png" /><figcaption><a href="https://bit.cloud/">bit.cloud</a></figcaption></figure><p>This way, whenever you make a change to one of your components, all other components that use it, will be re-tested to make sure the updates are valid.</p><p>Cool right?!</p><h3>Conclusion</h3><p>Alright, we’re done.</p><p>During this article, we saw how you can use Bit to extract common code from micro frontends, turn that code into a component, and then reuse it everywhere. All with a single tool: Bit.</p><p>Why did we do this?</p><p>Because by doing so, we’ve:</p><ul><li>Simplified to code of our micro frontends by removing code that didn’t have to live inside them.</li><li>Removed duplicated logic.</li><li>Homogenized the look and feel of our components by using the same one everywhere.</li></ul><p>We did all of this without creating new repositories or assigning ownership of this new component to any external team. As you can see, through Bit, you can easily collaborate with others without too much hustle.</p><p>Let me know what you thought about it and if you have any questions, you can always check out <a href="https://bit.cloud/deletemangroup/microfe">the code of the components here</a>.</p><p>To learn more about Bit, see the official documentation:</p><p><a href="https://bit.dev/">Bit. Composable software.</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=13297520fade" width="1" height="1" alt=""><hr><p><a href="https://medium.com/bitsrc/how-to-share-code-between-micro-frontends-13297520fade">How to Share Code Between Micro Frontends</a> was originally published in <a href="https://medium.com/bitsrc">Bits and Pieces</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>