<?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: Loïc Boset</title>
    <description>The latest articles on DEV Community by Loïc Boset (@loicboset).</description>
    <link>https://dev.to/loicboset</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%2F475344%2F7b6dff27-62f4-49fd-bef4-237e61ba6627.jpg</url>
      <title>DEV Community: Loïc Boset</title>
      <link>https://dev.to/loicboset</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/loicboset"/>
    <language>en</language>
    <item>
      <title>Why Asking the Right Questions Can Change How You Build Software</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Wed, 14 Jan 2026 10:57:49 +0000</pubDate>
      <link>https://dev.to/loicboset/why-asking-the-right-questions-can-change-how-you-build-software-gof</link>
      <guid>https://dev.to/loicboset/why-asking-the-right-questions-can-change-how-you-build-software-gof</guid>
      <description>&lt;p&gt;I often wonder how people who think critically come up with the questions they ask. &lt;/p&gt;

&lt;p&gt;Sometimes, when I read good books, I’m struck by how powerful the author’s questions are. It keeps reinforcing a belief I have: good questions are the backbone of innovation and critical thinking.&lt;/p&gt;

&lt;p&gt;If you ask yourself the right questions, you probably get closer to the right answers.&lt;/p&gt;

&lt;p&gt;We know that AI is becoming more capable every day. And as a dev, I got scared of that, at first. &lt;/p&gt;

&lt;p&gt;I am pretty much convinced that in the near future, we won’t spend most of our time writing code. We will be prompting and AI will execute. &lt;/p&gt;

&lt;p&gt;So what’s left for the junior/mid/senior dev?&lt;/p&gt;

&lt;p&gt;To me, the answer is clear: thinking.&lt;/p&gt;

&lt;p&gt;And it's a good thing! That means less dummy work and more clever work. That means more impact. That means software engineering being available to more companies. More solutions created to our problems.&lt;/p&gt;

&lt;p&gt;AI is incredibly good at execution. But someone still needs to decide what to build and how to build it. That future role for us looks much more like an architect than a pure executor. Someone who understands systems, trade-offs, users, constraints, and priorities. Someone who can zoom out.&lt;/p&gt;

&lt;p&gt;Being a developer in this world doesn’t mean knowing everything. It means knowing a lot about many things, having one or two areas of real depth, and being able to connect dots. It means creating the strategy and choosing the tactics, not just blindly executing a plan.&lt;/p&gt;

&lt;p&gt;A lot of fear around AI is driven by the job market and by media narratives. Developers worry about being replaced, about becoming irrelevant, about not keeping up. Juniors and seniors probably feel this differently. Juniors may fear that they don’t yet have enough to offer. Seniors may fear being outpaced by younger, more AI-native developers who move faster and experiment more.&lt;/p&gt;

&lt;p&gt;But what if we flip the perspective and think like someone hiring a developer?&lt;/p&gt;

&lt;p&gt;As an hiring manager I care about productivity. I care whether someone knows how to use AI. But raw output alone isn’t enough. Vibe coding might look fast, but speed without judgment is risky.&lt;/p&gt;

&lt;p&gt;What I really want to see is whether someone can think.&lt;/p&gt;

&lt;p&gt;Can they learn from mistakes? Can they plan instead of jumping on the first solution? Can they compare tools and approaches? Can they ask the right questions to the right people? That’s what critical thinking looks like in practice.&lt;/p&gt;

&lt;p&gt;Being extremely good at one language mostly proves you’re good at execution. But can you think about architecture as a whole? About stakeholders? About users? About what actually makes an experience good? Those are the questions that create leverage.&lt;/p&gt;

&lt;p&gt;Personally, I’m not afraid of AI anymore. It’s helped me elevate my craft. With a few years of experience, I can now operate more like an architect than a pure implementer. I can support my team by asking better questions, by challenging decisions, and by slowing things down when clarity is missing.&lt;/p&gt;

&lt;p&gt;I’ve also become more aware of how my own thinking works. I notice patterns. I notice when someone asks a particularly good question—in a meeting or in a book—and I try to understand where that question came from. I pay attention to how I reason, where I rush, and where I cut corners.&lt;/p&gt;

&lt;p&gt;That awareness leaks into everyday life too. Recently, I noticed I was wasting too much time on my phone right after waking up. So I changed one small thing: I left my phone in another room. The next morning, I have time to read some pages of my book instead. It feels good. I start the day already proud of myself.&lt;/p&gt;

&lt;p&gt;I’m convinced that in the AI era, the developers who stand out won’t just be the fastest coders. They’ll be the ones who think clearly, ask better questions, and make better decisions.&lt;/p&gt;

&lt;p&gt;I’m curious what other developers think! How do you practice critical thinking? Do you feel it becoming more important as AI gets better?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why Reflective Practice Is Your Competitive Advantage in an AI-Driven Workplace</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Thu, 08 Jan 2026 21:57:09 +0000</pubDate>
      <link>https://dev.to/loicboset/why-reflective-practice-is-your-competitive-advantage-in-an-ai-driven-workplace-2ba2</link>
      <guid>https://dev.to/loicboset/why-reflective-practice-is-your-competitive-advantage-in-an-ai-driven-workplace-2ba2</guid>
      <description>&lt;p&gt;You start your day surrounded by tools that make everything faster.&lt;/p&gt;

&lt;p&gt;Your inbox is summarized. Your code is suggested before you type it. Your documents write themselves.&lt;/p&gt;

&lt;p&gt;You are more productive than ever — and yet, by the end of the day, something feels off. You did a lot, but it’s harder to explain &lt;em&gt;why&lt;/em&gt; you made certain decisions, what you actually learned, or whether you’re moving in the right direction.&lt;/p&gt;

&lt;p&gt;This is the paradox of modern work: &lt;strong&gt;output is exploding, but understanding is eroding&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And in an AI-driven workplace, that gap is where careers are now decided.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem Isn’t AI
&lt;/h2&gt;

&lt;p&gt;AI is not replacing thinking outright. It’s doing something subtler — and more dangerous.&lt;/p&gt;

&lt;p&gt;It removes friction. The friction you experience when hitting a thinking wall. &lt;/p&gt;

&lt;p&gt;The same way GPS removed the need to navigate*,* generative AI removes the need to struggle through uncertainty. Answers are instant. Decisions feel easier. Progress feels faster.&lt;/p&gt;

&lt;p&gt;But friction was never the enemy. Friction is where learning happens.&lt;/p&gt;

&lt;p&gt;When you consistently bypass that moment of effort — when you delegate not just execution but also &lt;em&gt;judgment&lt;/em&gt; — you may move faster today but at the cost of growing slower tomorrow, as you are not learning anymore.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Invisible Gap That Separates High Performers
&lt;/h2&gt;

&lt;p&gt;There is a growing gap in our modern workplaces. &lt;strong&gt;The gap between doing and understanding.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many people are busy. Few can clearly answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why did I choose this approach?&lt;/li&gt;
&lt;li&gt;What patterns are emerging in my work?&lt;/li&gt;
&lt;li&gt;What am I actually getting better at?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Activity creates output, while understanding creates growth.&lt;/p&gt;

&lt;p&gt;As philosopher John Dewey said:&lt;/p&gt;

&lt;p&gt;“We do not learn from experience. We learn from reflecting on experience”&lt;/p&gt;

&lt;p&gt;What is the difference between 5 years of experience and 5 times one year of experience?&lt;/p&gt;

&lt;p&gt;Reflection.&lt;/p&gt;

&lt;p&gt;Without reflection, experience doesn’t compound. You do not progress.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Reflective Practice Actually Is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Reflective practice is the deliberate habit of examining your decisions, actions, and outcomes in order to improve future performance.&lt;/strong&gt; **&lt;/p&gt;

&lt;p&gt;It answers questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What worked — and &lt;em&gt;why&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;What didn’t — and &lt;em&gt;what assumption failed&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;What should change next time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This practice has been studied for decades in education, psychology, and business because it directly improves judgment, decision quality, and long-term performance.&lt;/p&gt;

&lt;p&gt;In a world where execution is increasingly automated, &lt;strong&gt;judgment becomes the differentiator&lt;/strong&gt;. Critical thinking is the skill you need to gain a competitive advantage.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI as an Amplifier
&lt;/h2&gt;

&lt;p&gt;AI introduces a fork in the road. On one path, the low performers use AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skip thinking&lt;/li&gt;
&lt;li&gt;Accept first answers&lt;/li&gt;
&lt;li&gt;Copy without understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is cognitive offloading taken too far — turning knowledge workers into passive consumers of suggestions.&lt;/p&gt;

&lt;p&gt;On the other path, the best performers use AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Challenge their reasoning&lt;/li&gt;
&lt;li&gt;Surface blind spots&lt;/li&gt;
&lt;li&gt;Analyze patterns in their decisions&lt;/li&gt;
&lt;li&gt;Track how their thinking evolves over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The same tool. Two very different usages with two different outcomes in the long run.&lt;/p&gt;

&lt;p&gt;Research already suggests that heavy, uncritical AI usage correlates with weaker critical thinking. At the same time, studies also show that &lt;strong&gt;balanced, intentional use of AI can enhance learning and performance&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The difference is not access to AI. It’s whether reflection is added into the loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Matters for Your Career
&lt;/h2&gt;

&lt;p&gt;As AI makes knowledge cheap and execution fast, employers care less about &lt;em&gt;what&lt;/em&gt; you can produce and more about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How you reason&lt;/li&gt;
&lt;li&gt;How you learn&lt;/li&gt;
&lt;li&gt;How you adapt&lt;/li&gt;
&lt;li&gt;How you explain your decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those who develop reflective practice will compound their advantage. Those who don’t may feel efficient — until they’re easily replaced.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reflection Is Trainable — and Measurable
&lt;/h2&gt;

&lt;p&gt;The good news is that reflection is not a personality trait. It’s a skill, and it can be trained.&lt;/p&gt;

&lt;p&gt;A Harvard Business study paper demonstrated that even &lt;strong&gt;15 minutes a day of structured reflection&lt;/strong&gt; for only 10 days can already significantly improve your work performance. &lt;/p&gt;

&lt;p&gt;The challenge has never been &lt;em&gt;whether&lt;/em&gt; reflection works, but how to do it consistently, do it well and see progress over time.&lt;/p&gt;

&lt;p&gt;This is where tools matter. Not tools that think &lt;em&gt;for&lt;/em&gt; you, but tools that help you think &lt;em&gt;better&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Opportunity
&lt;/h2&gt;

&lt;p&gt;AI doesn’t have to weaken your thinking. It can sharpen it, if reflection is part of your workflow.&lt;/p&gt;

&lt;p&gt;In an AI-driven workplace, your edge is not speed not is it volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s your ability to pause, reflect, and turn experience into insight.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the skill that compounds. That is the skill AI cannot replace.&lt;/p&gt;

&lt;p&gt;And that is why reflective practice is no longer optional. It’s essential. And it will be your differentiator in the next few years if you pick it up now.&lt;/p&gt;




&lt;p&gt;I have created a tool called &lt;a href="http://daily-jots.com/" rel="noopener noreferrer"&gt;Jots&lt;/a&gt; with a friend of mine, to help us, devs, stay on top of our critical thinking skills.&lt;/p&gt;

&lt;p&gt;It's free to use so give it a shot now and share your feedback with us!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The power of working with a friend on a side-project, and receiving love from the community!</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Thu, 05 Jun 2025 06:31:04 +0000</pubDate>
      <link>https://dev.to/loicboset/the-power-of-working-with-a-friend-on-a-side-project-and-receiving-love-from-the-community-38no</link>
      <guid>https://dev.to/loicboset/the-power-of-working-with-a-friend-on-a-side-project-and-receiving-love-from-the-community-38no</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/javz/we-launched-on-product-hunt-this-week-was-it-worth-it-1l27" class="crayons-story__hidden-navigation-link"&gt;We launched on Product Hunt this week - was it worth it?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/javz" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3245143%2Ff6cf9acd-541d-4ad4-a846-2788da803c99.png" alt="javz profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/javz" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Julien Avezou
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Julien Avezou
                
              
              &lt;div id="story-author-preview-content-2563471" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/javz" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3245143%2Ff6cf9acd-541d-4ad4-a846-2788da803c99.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Julien Avezou&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/javz/we-launched-on-product-hunt-this-week-was-it-worth-it-1l27" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 4 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/javz/we-launched-on-product-hunt-this-week-was-it-worth-it-1l27" id="article-link-2563471"&gt;
          We launched on Product Hunt this week - was it worth it?
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devjournal"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devjournal&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/javz/we-launched-on-product-hunt-this-week-was-it-worth-it-1l27" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;7&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/javz/we-launched-on-product-hunt-this-week-was-it-worth-it-1l27#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>devjournal</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I built a side project with a friend — and it’s way better than working alone.</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Mon, 02 Jun 2025 07:00:00 +0000</pubDate>
      <link>https://dev.to/loicboset/i-built-a-side-project-with-a-friend-and-its-way-better-than-working-alone-1md5</link>
      <guid>https://dev.to/loicboset/i-built-a-side-project-with-a-friend-and-its-way-better-than-working-alone-1md5</guid>
      <description>&lt;p&gt;Tomorrow, my friend and I are launching the side-project we’ve been working on for the past 3 months: &lt;strong&gt;&lt;a href="http://daily-jots.com/" rel="noopener noreferrer"&gt;Jots&lt;/a&gt;&lt;/strong&gt;—a simple, developer-focused journaling tool with just a touch of AI.&lt;/p&gt;

&lt;p&gt;Since I have been a dev, for the past 4+ years, I’ve always had side projects. My biggest one was &lt;a href="https://justremind.app/" rel="noopener noreferrer"&gt;Just Remind&lt;/a&gt;, which I created to stop forgetting the books I read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The reason I build side projects is because I enjoy building stuff for fun. Mostly stuff that help me in my day-to-day.&lt;/strong&gt; Stuff that solve my own problems, and hopefully help other people too. Being a dev is kinda like a superpower, to be able to take a problem and build yourself the solution. I love it!&lt;/p&gt;

&lt;p&gt;But this was the first time I was working on a hobby project with someone else. Not building alone is a game changer. It cuts the burden of everything you have to do in half! &lt;/p&gt;

&lt;p&gt;With this article, I want to share how our project started, to hopefully inspire some people to reach out to a friend and start building something together. &lt;/p&gt;

&lt;h2&gt;
  
  
  We built something to solve our own problem.
&lt;/h2&gt;

&lt;p&gt;A key rule of project building (aka entrepreneurship) is to &lt;strong&gt;build a product that solves your own problem&lt;/strong&gt;. Since creating something from scratch is immensely hard and requires a huge load of discipline and motivation, you’d better be off solving something you actually need for yourself.&lt;/p&gt;

&lt;p&gt;So, Jots was born out of a shared frustration that we discovered while just talking with each other: &lt;strong&gt;as developers, we constantly code, debug, and maintain stuff, but we rarely pause to reflect, learn and grow&lt;/strong&gt;. That was the basis of our problem. When we looked for solutions (every problem has at least two solutions), we discovered journaling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Journaling is the intentional act of writing down your thoughts to reflect on them, leading to both personal and professional growth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This solution looked like a great candidate for solving our problem, so we looked for existing journaling tools, but they all felt generic or bloated. We wanted something that felt like it was made &lt;em&gt;for us&lt;/em&gt;—&lt;strong&gt;developers who want to improve their technical skills, track their progress, and drive their career growth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So we said to each other “hey, why don’t we build our own?”. And things got started.&lt;/p&gt;




&lt;h2&gt;
  
  
  So you have a problem and a potential solution. Now what?
&lt;/h2&gt;

&lt;p&gt;Now is the moment when you should validate your idea. Is the problem real or only in your head? Is your solution really solving this problem? Is there any better solution?&lt;/p&gt;

&lt;p&gt;You’ll see a lot of advice online on this part, saying that you need to survey people, building a landing page, etc. But it’s difficult and not bullet-proof. &lt;/p&gt;

&lt;p&gt;Another way is check if you have competition. &lt;strong&gt;Is there any other product out there, seemingly solving the same problem? If yes, that’s your confirmation.&lt;/strong&gt; Unless you intend on investing your life savings into the project, this confirmation is enough for now.&lt;/p&gt;

&lt;p&gt;So that’s what we did. Although we did not see any journaling tool dedicated specifically for devs, we saw many successful journaling tools for personal use. For us, that means that the need is real, people want to journal, and that it has benefits—it helps people improve.&lt;/p&gt;




&lt;h2&gt;
  
  
  Free and Open Source First
&lt;/h2&gt;

&lt;p&gt;You’re working on a product, nobody knows you, why should they trust you?&lt;/p&gt;

&lt;p&gt;That’s what we thought at first and that’s why we’re launching Jots free and open-source. We use open-source tools everyday. This is our way of giving back to the community. It felt like a good approach.&lt;/p&gt;

&lt;p&gt;Our philosophy is simple: &lt;strong&gt;build something real, solve your own problem well, and only &lt;em&gt;then&lt;/em&gt; consider monetization if it makes sense&lt;/strong&gt;. Jots is built for the community, and we want to keep it that way. We are launching tomorrow the beta version for early-bird users, the kind that are not afraid to try new tools. And we have a &lt;a href="https://discord.gg/YQP4wwbyfg" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; so they can participate in the product creation, by sharing ideas and feedback.&lt;/p&gt;

&lt;p&gt;We also tried our best to build this as cheaply as possible to minimize our financial risk. And we’re lucking nowadays that there is plenty of free tools out there that enable any dev to build anything for pretty much free. So if you are part of a open-source community or if you ever contributed to open-source, we want to say thank you. We love you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Enjoy the process, there is so much to learn
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;When building on the side, you have the freedom to work the way you want. To try things maybe you couldn’t try in a professional environment. To practice decision-making, that again maybe you wouldn’t at work. To be exposed to new problems, to new solutions, and to new learnings.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is so rewarding. But it is also so demanding. &lt;/p&gt;

&lt;p&gt;If you have a full-time job, building a side-project means sacrificing &lt;del&gt;some&lt;/del&gt; a lot of your free hours. If you have normally a busy schedule, it means getting up earlier to work on it, or going to bed later. And working during your lunch break. And working during the weekend (today is a sunny Sunday, and I’ve spent already 4 hours on this side project, inside, while everybody is relaxing outside).&lt;/p&gt;

&lt;p&gt;But in the end, you can &lt;strong&gt;feel proud to have a bit of yourself out there in the wild. Hopefully positively impacting people’s lives, even at a tiny scale&lt;/strong&gt; (there’s nothing more joyful than receiving a thank you message by someone using your product).&lt;/p&gt;

&lt;p&gt;Besides all the technical things you learn, you will also learn about the specific domain you are working on. For example with Jots, we learned so much about journaling, how it can help anyone get better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Just Do It.
&lt;/h2&gt;

&lt;p&gt;Reach out to a friend, to a co-worker or maybe a stranger on Reddit (but stay safe).&lt;/p&gt;

&lt;p&gt;By the way, if you have a story of you building a product with other people, I’d love to hear it! Drop it in the comments below or to send me a message via &lt;a href="https://www.linkedin.com/in/lo%C3%AFc-boset-358471104/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to give journaling a shot, take some pen and paper, or fire up Notion, or try &lt;a href="http://daily-jots.com/" rel="noopener noreferrer"&gt;Jots&lt;/a&gt; if you want some augmented experience.  &lt;/p&gt;

&lt;p&gt;And if you want to give some love to Jots on Product Hunt, here’s the way → &lt;a href="https://www.producthunt.com/products/jots?launch=jots" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/jots?launch=jots&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading, and happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>startup</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Why You’re Stuck as a Developer (And How to Fix It in 5 Minutes a Day)</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Tue, 18 Mar 2025 09:13:09 +0000</pubDate>
      <link>https://dev.to/loicboset/why-youre-stuck-as-a-developer-and-how-to-fix-it-in-5-minutes-a-day-3cp5</link>
      <guid>https://dev.to/loicboset/why-youre-stuck-as-a-developer-and-how-to-fix-it-in-5-minutes-a-day-3cp5</guid>
      <description>&lt;p&gt;Ever spent hours debugging only to realize the answer was obvious in hindsight? Or struggled to remember what you actually learned last week?&lt;/p&gt;

&lt;p&gt;You’re not alone. Most developers focus on writing code but neglect something just as important: thinking about how they write code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learning, Then Forgetting
&lt;/h1&gt;

&lt;p&gt;You read a great article, solve a tricky bug, or learn a new framework—but a week later, it's all a blur. Without a system to capture and reflect on what you learn, progress is slow.&lt;/p&gt;

&lt;p&gt;The best developers don’t just code. They reflect, analyse, and track their growth.&lt;/p&gt;

&lt;h1&gt;
  
  
  Journaling as a Solution
&lt;/h1&gt;

&lt;p&gt;Spending just 5 minutes a day writing about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What you learned today&lt;/li&gt;
&lt;li&gt;What problems you faced and how you solved them&lt;/li&gt;
&lt;li&gt;Ideas, experiments, and lessons from debugging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those simple things can sharpen your thinking, improve your problem-solving skills, and will help you track your progress like nothing else.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why Journaling Works
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Debug Your Brain
&lt;/h3&gt;

&lt;p&gt;Writing forces clarity. If you can’t explain an idea in your own words, you probably don’t fully understand it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Never Lose Hard-Earned Knowledge
&lt;/h3&gt;

&lt;p&gt;Every solved bug, every clever refactor, every “aha!” moment—logged and ready for future you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identify Patterns in Your Growth
&lt;/h3&gt;

&lt;p&gt;Looking back on past entries can reveal recurring struggles and areas for improvement.&lt;/p&gt;

&lt;h1&gt;
  
  
  My Experience &amp;amp; The Tool I Built
&lt;/h1&gt;

&lt;p&gt;I started journaling two months ago, and it has already helped me break down problems faster and retain knowledge better. Since existing tools didn’t quite fit what I needed, I built &lt;a href="https://dev-log-app.vercel.app/" rel="noopener noreferrer"&gt;DevLog&lt;/a&gt;—a free and open-source journaling app designed specifically for developers.&lt;/p&gt;

&lt;p&gt;It’s simple, distraction-free, and focused on helping devs think, reflect, and grow. Feel free to &lt;a href="https://dev-log-app.vercel.app/" rel="noopener noreferrer"&gt;check it out&lt;/a&gt;!&lt;/p&gt;

&lt;h1&gt;
  
  
  Just Try
&lt;/h1&gt;

&lt;p&gt;Try journaling for a week and you might be surprised how much it levels up your dev skills. &lt;/p&gt;

&lt;p&gt;There are so many benefits, and no secret recipe. You just need to give it a go.&lt;/p&gt;

&lt;p&gt;If you do pick it up, let me know how it worked for you! If you already journal, please share with others how it helped you grow as a developer or as a human 🙏&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>careerdevelopment</category>
      <category>productivity</category>
    </item>
    <item>
      <title>DevLog: A Journaling App for Developers</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Sun, 16 Mar 2025 19:01:48 +0000</pubDate>
      <link>https://dev.to/loicboset/devlog-a-journaling-app-for-developers-1bhc</link>
      <guid>https://dev.to/loicboset/devlog-a-journaling-app-for-developers-1bhc</guid>
      <description>&lt;p&gt;My friend and I decided a month ago to build a journaling app specifically designed to help developers establish a healthy journaling habit that can make them a little better every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Idea Came
&lt;/h2&gt;

&lt;p&gt;During a discussion, we decided that we wanted to build a product together. First, because it’s fun to create something from scratch, and second, because it allows us to solve new problems and explore new technologies.&lt;/p&gt;

&lt;p&gt;We both agreed that we wanted to work on something AI-related to better understand its capabilities. But we also wanted to build something that solved a real problem and brought value to developers like us.&lt;/p&gt;

&lt;p&gt;As software engineers eager to progress in our careers, we often questioned the best ways to achieve success. That’s when journaling came into the discussion. We had both experimented with it on a personal level, as it’s widely recommended in self-development books. But what about work-related journaling? Could it help developers advance in their careers?&lt;/p&gt;

&lt;p&gt;It turns out that career journaling is a well-known practice that brings numerous benefits: clearer goals, better problem-solving, and greater focus. However, when we looked around, we saw that developers were using scattered methods—text files, Notion, Obsidian, markdown, or even pen and paper. There wasn’t a dedicated tool to help devs build a structured journaling habit.&lt;/p&gt;

&lt;p&gt;So we decided to build one: &lt;strong&gt;&lt;a href="https://dev-log-app.vercel.app/" rel="noopener noreferrer"&gt;DevLog&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;For the technical foundation, we wanted a mix of familiar and new technologies—something that would let us build fast while learning along the way.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js and React – These allow rapid development and are well-supported. Next.js also makes deployment seamless on Vercel, which is crucial since we wanted to keep costs at zero during the MVP phase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend &amp;amp; Database:&lt;/strong&gt; Supabase – We wanted an alternative to AWS, and Supabase’s free tier and developer-friendly approach made it a great choice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI System:&lt;/strong&gt; Tailwind CSS &amp;amp; Tailwind UI – Speeds up development by providing ready-to-use components, avoiding unnecessary UI work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Editor:&lt;/strong&gt; Lexical – As the core of the app, we needed a robust, performant, and actively maintained rich-text editor. Lexical, developed by Meta, fit the bill perfectly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Jest – A solid test suite is essential for maintaining stability as the app grows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Community &amp;amp; Open Source
&lt;/h2&gt;

&lt;p&gt;From the beginning, we wanted DevLog to be &lt;strong&gt;open-source&lt;/strong&gt;. We believe in transparency, collaboration, and building in the open. Open source allows us to get feedback, contributions, and new ideas from other developers who see value in this tool.&lt;/p&gt;

&lt;p&gt;To foster engagement, we also launched a &lt;strong&gt;Discord channel&lt;/strong&gt; where developers can share their thoughts, suggest features, and help us shape DevLog into something truly valuable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Feedback
&lt;/h2&gt;

&lt;p&gt;After a month of evenings and weekends work, the small MVP was built with enough functionality for devs to start journaling and seeing immediate benefits.&lt;/p&gt;

&lt;p&gt;The next step is validating interest and gathering feedback to refine the product. We’re leveraging &lt;strong&gt;Reddit&lt;/strong&gt; as a first step, since it’s an easy and free way to gauge interest. As we grow, we plan to expand to &lt;strong&gt;Product Hunt, LinkedIn, and relevant Slack communities.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;We’re excited about where DevLog is headed. If you’re a developer who wants to start journaling but never found the right tool, we’d love for you to try it out and share your thoughts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out the &lt;strong&gt;&lt;a href="https://github.com/loicboset/DevLogApp" rel="noopener noreferrer"&gt;open-source repo&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Join the &lt;strong&gt;&lt;a href="https://discord.gg/YQP4wwbyfg" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Follow our journey as we build &lt;a href="https://dev-log-app.vercel.app/" rel="noopener noreferrer"&gt;DevLog&lt;/a&gt; in public&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve ever tried keeping a dev journal, what worked for you? What didn’t? We would love to hear your thoughts!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>product</category>
      <category>mentalhealth</category>
      <category>growth</category>
    </item>
    <item>
      <title>How to Make Sure Your Reading Leads to Real Growth</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Wed, 21 Aug 2024 11:00:57 +0000</pubDate>
      <link>https://dev.to/loicboset/how-to-make-sure-your-reading-leads-to-real-growth-iej</link>
      <guid>https://dev.to/loicboset/how-to-make-sure-your-reading-leads-to-real-growth-iej</guid>
      <description>&lt;p&gt;In the fast-paced world of software development, &lt;strong&gt;continuous learning is not just a choice—it's a necessity&lt;/strong&gt;. We devour books, articles, and tutorials, all in the quest to sharpen our skills and stay ahead of the curve. &lt;/p&gt;

&lt;p&gt;But here's the challenge: &lt;strong&gt;how much of what we read actually sticks?&lt;/strong&gt; How often do we finish a chapter or article, only to forget the key insights by the time we need them?&lt;/p&gt;

&lt;p&gt;If you're like most developers, you probably find it frustrating to invest time in reading, only to struggle with retaining and applying that knowledge when you need it. &lt;/p&gt;

&lt;p&gt;The truth is, &lt;strong&gt;reading alone isn't enough&lt;/strong&gt;; it's how you process, remember, and utilize that information that leads to real growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Strategy For Retaining And Applying Knowledge
&lt;/h2&gt;

&lt;p&gt;As a developer, I’m constantly reading—books, articles, documentation—all in the pursuit of becoming better. But two years ago, I noticed a problem: I was forgetting most of what I read. &lt;/p&gt;

&lt;p&gt;The insights that could help me write cleaner code, solve problems faster, or improve my productivity were slipping away before I had a chance to apply them.&lt;/p&gt;

&lt;p&gt;That’s when I started working on &lt;a href="https://justremind.app/" rel="noopener noreferrer"&gt;Just Remind&lt;/a&gt;. It’s a tool designed to help me - and others - retain and revisit the key takeaways from everything I read, should it be books I read on my Kindle, or articles I read here on DEV. &lt;/p&gt;

&lt;p&gt;It's very simple. When I read books on my Kindle, I highlight the key parts. When I read articles online, I use the Just Remind google chrome extension to capture the important insights. &lt;/p&gt;

&lt;p&gt;All of these highlights are stored in my Just Remind library, and each day, I receive an email with a selection of these highlights to review.&lt;/p&gt;

&lt;p&gt;Since using Just Remind, I’ve noticed a significant improvement in how I apply what I learn. It made me more efficient.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Make Your Reading Work for You
&lt;/h2&gt;

&lt;p&gt;If you’ve ever found yourself forgetting valuable information, Just Remind might be the solution you’re looking for.&lt;/p&gt;

&lt;p&gt;The ability to retain and apply knowledge is crucial for growth. Just reading isn’t enough; you need a strategy to ensure that valuable insights become part of your skill set.&lt;/p&gt;

&lt;p&gt;By using Just Remind to highlight, store, and review key takeaways, I’ve turned my reading into a tool for real growth. It’s transformed how I work and learn, making every piece of information more actionable and impactful.&lt;/p&gt;

&lt;p&gt;Are you struggling with the same issue? How do you ensure that the knowledge you gain from your reading truly sticks? Share your thoughts and experiences in the comments!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>learning</category>
      <category>news</category>
    </item>
    <item>
      <title>DRY (Don’t Repeat Yourself)</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Sun, 23 Apr 2023 07:30:17 +0000</pubDate>
      <link>https://dev.to/loicboset/dry-dont-repeat-yourself-1i0</link>
      <guid>https://dev.to/loicboset/dry-dont-repeat-yourself-1i0</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;DRY = Don’t Repeat Yourself&lt;/li&gt;
&lt;li&gt;make sure you don’t duplicate code or knowledge&lt;/li&gt;
&lt;li&gt;if you identify duplicate code, try to abstract it and make it reusable&lt;/li&gt;
&lt;li&gt;keep your code modular (tackling one specific task) and decoupled (minimum number of dependencies)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;"The code you write today will be somebody's legacy code tomorrow.” - &lt;em&gt;The Pragmatic Programmer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Software engineering principles are guidelines that help software developers write good code.&lt;/p&gt;

&lt;p&gt;Good code is efficient, maintainable, and scalable.&lt;/p&gt;

&lt;p&gt;In this series of articles, we will cover some of the most important principles that we need to apply when writing code.&lt;/p&gt;

&lt;p&gt;Today, we will be discussing the DRY (don’t repeat yourself) principle. Where does it come from? What does it mean? How can we apply it?&lt;/p&gt;

&lt;h2&gt;
  
  
  Origin
&lt;/h2&gt;

&lt;p&gt;The DRY principle has been formulated by Andy Hunt and Dave Thomas in their book The Pragmatic Programmer, in 1991.&lt;/p&gt;

&lt;p&gt;This book is a classic in the software development field and is a recommended-read for any developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meaning
&lt;/h2&gt;

&lt;p&gt;The DRY principle states that “Every piece of knowledge must have a single unambiguous, authoritative representation within a system”. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unambiguous&lt;/strong&gt; means that your code should be clear and not open to multiple interpretations. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authoritative&lt;/strong&gt; means that your code serves as the definitive reference for a particular functionality. In other words, you should not have 2 blocks of code doing the same thing.&lt;/p&gt;

&lt;p&gt;By following the DRY principle, you ensure that your code is clear and free of duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application
&lt;/h2&gt;

&lt;p&gt;There are a few rules you can follow to make sure your code is DRY:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Identify Code Duplications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When writing code, before creating a new function, a new component or any new piece of logic, make sure there is nothing similar already present in the codebase.&lt;/p&gt;

&lt;p&gt;Now, imagine that in your codebase you need to transform milliseconds to minutes multiple times, at different places. You could have something like that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Component A&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;functionA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// some logic here ...&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// some logic there ...&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Component B&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;functionB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// some logic here ...&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// some logic there ...&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You realise that you have duplicated logic. What can you do?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Make Your Code Reusable&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you identify duplicated logic, think about how you can make it generic and reusable in all the places it is needed. Create an abstraction (such as a function) that encapsulates that logic and reuse it wherever needed. &lt;/p&gt;

&lt;p&gt;When you do that, you are creating a single authoritative representation of that logic.&lt;/p&gt;

&lt;p&gt;Taking back our previous example, here’s what you can do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// utils/millisecondsToMinutes.js&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;millisecondsToMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;minutes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;millisToMinutes&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// utils/index.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;millisToMinutes&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./millisToMinutes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// other utils functions here ...&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;millisToMinutes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;// other functions exported here ...&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Component A&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;millisecondsToMinutes&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;utils&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;functionA&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// some logic here ...&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;millisecondsToMinutes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// some logic there ...&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Component B&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;millisecondsToMinutes&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;utils&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;functionB&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// some logic here ...&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="nx"&gt;_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intervalInMinutes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;millisecondsToMinutes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;intervalInMilliseconds&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// some logic there ...&lt;/span&gt;
&lt;span class="p"&gt;}:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Keep Your Code Modular And Decoupled&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modularity&lt;/strong&gt; means that your code is reduced to small modules, components, or functionalities, responsible for a specific task, such as you can easily reuse it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decoupling&lt;/strong&gt; means that you have reduced to a minimum the dependencies of your logic, making it easier to modify or replace one module without affecting others.&lt;/p&gt;

&lt;p&gt;Here’s an example of a non-modular and tightly coupled piece of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Non-modular code with tight coupling&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;calculateNetSalary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;baseSalary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Hardcoded tax rate&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deduction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Hardcoded fixed deduction&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxAmount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;baseSalary&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;netSalary&lt;/span&gt; &lt;span class="nx"&gt;baseSalary&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;taxAmount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;sendSalarySlipByEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;netSalary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;netSalary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, the function directly uses hardcoded values for tax rate and deduction. This makes the function dependent on these specific values and difficult to modify without changing the function's implementation. If these values need to be changed, the function would need to be updated directly, which can lead to maintenance issues and make the code less flexible.&lt;/p&gt;

&lt;p&gt;The function is also not quite modular as it does more than one thing. In addition to calculating the net salary, it sends the payslip by email with the &lt;code&gt;sendSalarySlipByEmail&lt;/code&gt; function integrated within it.&lt;/p&gt;

&lt;p&gt;Here’s a more modular and less coupled version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;calculateNetSalary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;baseSalary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;deduction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxAmount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;baseSalary&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;netSalary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;baseSalary&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;taxAmount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;deduction&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;netSalary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;netSalary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;calculateNetSalary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;sendSalarySlipByEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;netSalary&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Do Code Reviews&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you work with other people on the same codebase, ask someone to review your code, and review other developer’s code. Fresh perspectives can often identify smelly code (such as duplication) that may not be apparent to the original author.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Applying the DRY principle involves identifying and eliminating code duplication, making your code reusable, abstracting common functionalities, and keeping your code modular and decoupled. &lt;/p&gt;

&lt;p&gt;Regular refactoring and code reviews can help in maintaining adherence to the DRY principle in day-to-day coding practices. &lt;/p&gt;

&lt;p&gt;By following the DRY principle, you will create more efficient, maintainable, and high-quality softwares.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Open-sourcing my project that helps you remember the Kindle books you read</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Mon, 23 Jan 2023 20:08:47 +0000</pubDate>
      <link>https://dev.to/loicboset/open-sourcing-my-project-that-helps-you-remember-the-kindle-books-you-read-2734</link>
      <guid>https://dev.to/loicboset/open-sourcing-my-project-that-helps-you-remember-the-kindle-books-you-read-2734</guid>
      <description>&lt;p&gt;I have been working during the past 8 months on a side project called &lt;a href="https://justremind.app/" rel="noopener noreferrer"&gt;Just Remind&lt;/a&gt;. it's a free tool that helps you remember the Kindle books you read by sending you a daily email with your highlights.&lt;/p&gt;

&lt;p&gt;Now, I reached a point where I want to share the projects with the community so it grows better! &lt;/p&gt;

&lt;p&gt;Being new to this part of the open-source community (I always use them, but that's my first time contributing to it), I welcome any advice!&lt;/p&gt;

&lt;p&gt;If you are interested in the tool, give it a try! If you actually enjoy it, feel free to visit the &lt;a href="https://github.com/Just-Remind/app" rel="noopener noreferrer"&gt;Github repo&lt;/a&gt; and start participating. It's coded in React, with Next. Any and all contributions, whether it be in the form of code, bug reports, or feature requests, are very much welcomed!&lt;/p&gt;

&lt;p&gt;I have a few years of web development experience, so I am also eager to help junior developers who are interested in contributing to the project!&lt;/p&gt;

&lt;p&gt;Feel free to reach out if you have any questions!&lt;/p&gt;

&lt;p&gt;Cheers 👋&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I built a web app that emails me 5 random Kindle highlights daily</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Sun, 12 Jun 2022 22:05:40 +0000</pubDate>
      <link>https://dev.to/loicboset/how-i-built-a-web-app-that-emails-me-5-random-kindle-highlights-daily-5839</link>
      <guid>https://dev.to/loicboset/how-i-built-a-web-app-that-emails-me-5-random-kindle-highlights-daily-5839</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;built almost for free with nextjs, vercel, react, google chrome extension, aws cognito, heroku and easycron&lt;/li&gt;
&lt;li&gt;creating a product that solve your own problems is the best source of motivation&lt;/li&gt;
&lt;li&gt;Reddit is of great help to discuss ideas, problems and solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem To Solve
&lt;/h2&gt;

&lt;p&gt;I read a lot. Fictions and non-fictions. All on my Kindle.&lt;/p&gt;

&lt;p&gt;As I read, I like to highlight sentences that inspire me and that I want to remember.&lt;/p&gt;

&lt;p&gt;The problem is, I always forget them.&lt;/p&gt;

&lt;p&gt;I don't want to manually go check my Kindle highlights. I want my highlights to come to me.&lt;/p&gt;

&lt;p&gt;The solution: a daily email with 5 random of my highlights.&lt;/p&gt;

&lt;p&gt;It's not a particularly innovative solution as other web apps do that already, but I found them either not good enough or too expensive.&lt;/p&gt;

&lt;p&gt;So I built my own -- called &lt;a href="https://justremind.app/" rel="noopener noreferrer"&gt;JustRemind&lt;/a&gt;, currently in Beta version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next.js for a modern web framework and for the free hosting on Vercel&lt;/li&gt;
&lt;li&gt;postgresql database hosted for free on Heroku&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.easycron.com" rel="noopener noreferrer"&gt;easycron&lt;/a&gt; for sending the daily email&lt;/li&gt;
&lt;li&gt;AWS Cognito for the authentication system&lt;/li&gt;
&lt;li&gt;Google Chrome extension built with React to fetch the highlights&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fetching the Kindle data
&lt;/h3&gt;

&lt;p&gt;The first and main challenge was to extract the highlights from my Kindle.&lt;/p&gt;

&lt;p&gt;I wanted a quick and user-friendly way to do it. As I tested the already existing services online, I realised that the Google Chrome extension way was the easiest method at the moment, considering that Amazing doesn't have a Kindle API.&lt;/p&gt;

&lt;p&gt;The extension is responsible for: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fetching each book and its highlights, and&lt;/li&gt;
&lt;li&gt;sending all that data to the JustRemind web app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web app also needs to send the user data to the extension so it can link the books data to the correct user.&lt;/p&gt;

&lt;p&gt;Overall it's been a pain to setup and I believe the Kindle eco-system would benefit from an API or at least a user-made well-maintained open-source alternative.&lt;/p&gt;

&lt;h3&gt;
  
  
  Importing lots of data
&lt;/h3&gt;

&lt;p&gt;I have 59 books and +2100 highlights on my kindle. Syncing on JustRemind means sending a lot of data through the API that needs to be processed by the backend and written in the database.&lt;/p&gt;

&lt;p&gt;I wrote the backend in Next and I used the free Vercel hosting plan. When processing all that data, I faced some issues as Vercel was timing out. &lt;/p&gt;

&lt;p&gt;So mitigate that issue, I: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;split the API calls when syncing (ex. if a user needs to import 200 books, 4 api calls will be made with 50 books each), and:&lt;/li&gt;
&lt;li&gt;upgrading to Vercel Pro plan to increase the timeout time from 10 seconds to 60 seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As part of the job to be done to move from the Beta to the finished product, I am considering rewriting the backend in Python using Flask, hosted on AWS Beanstalk.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using unknown tools
&lt;/h3&gt;

&lt;p&gt;Although I am familiar with React, Next and Vercel, I was not at all with the entire Google Chrome extension and AWS ecosystems.&lt;/p&gt;

&lt;p&gt;Learning to use new tools and techniques is part of the beauty of the web dev job. It can be very frustrating to see your development time drastically increase as you spend time reading docs and searching solutions online. But in the end, it is very rewarding to broaden your knowledge with these new skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Result
&lt;/h2&gt;

&lt;p&gt;From the moment I realised I had this issue I wanted to solve to this day where the Beta version is ready, 3 months have passed.&lt;/p&gt;

&lt;p&gt;I spent most of my evenings and weekends thinking, tinkering and building this web app and it has been a lot of ups and downs.&lt;/p&gt;

&lt;p&gt;Right now, and even if I end up being the only user of my app, I am super happy to have completed it and I am even more happy to read my morning dose of re-inspiration with my highlights being served daily with my morning coffee!&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;The Beta version is currently open for free to anyone so I can collect user feedback -- feel free to &lt;a href="https://justremind.app" rel="noopener noreferrer"&gt;join us&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;To promote it, I am going to create a Twitter account to share highlights daily.&lt;/p&gt;




&lt;p&gt;I hope this will inspire you to build solutions to your own problems!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>nextjs</category>
      <category>startup</category>
    </item>
    <item>
      <title>Join a new open-source community!</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Wed, 16 Feb 2022 06:04:05 +0000</pubDate>
      <link>https://dev.to/loicboset/join-a-new-open-source-community-4i8e</link>
      <guid>https://dev.to/loicboset/join-a-new-open-source-community-4i8e</guid>
      <description>&lt;p&gt;Are a junior web dev? Do you want to improve your skills and meet new people while working on meaningful open-source web apps?&lt;/p&gt;

&lt;p&gt;That was my wish when I started web development almost two years ago. At that time, I tried to contribute to existing open-source projects but finding beginner friendly issues was often time-consuming and, even then, existing code in repos are sometimes too complicated to understand or to add to. 🤯&lt;/p&gt;

&lt;p&gt;I am dedicating a lot of my free time to side projects, and, while working on one of my small hobby projects (&lt;a href="https://peak.tinyappstack.com/" rel="noopener noreferrer"&gt;Peak&lt;/a&gt;, a web app that helps you remember faster!), I thought about how much cool and valuable it would be to work on small open-source web apps with other devs, as a community!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tiny App Stack
&lt;/h2&gt;

&lt;p&gt;That's the reason I am creating the &lt;strong&gt;Tiny App Stack&lt;/strong&gt;, a community of like-minded developers, growing and learning together while creating small and meaningful open-source applications! 🥳&lt;/p&gt;

&lt;p&gt;Joining the Tiny App Stack, not only will you meet &lt;strong&gt;like-minded friendly people&lt;/strong&gt;, but you will also &lt;strong&gt;improve your coding expertise&lt;/strong&gt;, &lt;strong&gt;level-up your collaboration skills&lt;/strong&gt;, &lt;strong&gt;share your struggles&lt;/strong&gt; and &lt;strong&gt;discuss new coding patterns&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;If you are a wannabe web developer, participating in open-source projects can also &lt;strong&gt;help you land your first job&lt;/strong&gt;! 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the tribe now!
&lt;/h2&gt;

&lt;p&gt;Whatever is your field of interest, should it be web, design, or product development, or wether you are just curious and want to share ideas and feedback, you are welcome!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tinyappstack.com/" rel="noopener noreferrer"&gt;Join now the mailing list&lt;/a&gt; and I will invite you to join the slack when the community officially launches!&lt;/p&gt;

&lt;p&gt;Let's have fun together while making the world a better place, one tiny app at a time! 💪&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Peak | Memorize like a champion (Part 1 - Ideation &amp; Design)</title>
      <dc:creator>Loïc Boset</dc:creator>
      <pubDate>Fri, 12 Nov 2021 06:24:04 +0000</pubDate>
      <link>https://dev.to/loicboset/peak-memorize-like-a-champion-part-1-ideation-design-4b0</link>
      <guid>https://dev.to/loicboset/peak-memorize-like-a-champion-part-1-ideation-design-4b0</guid>
      <description>&lt;p&gt;This article is for you to read if you like to create dummy apps for fun or if you are curious about this kind of exercise!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Memory Champion
&lt;/h2&gt;

&lt;p&gt;Few days ago, I finished reading &lt;a href="https://www.amazon.com/Peak-Secrets-New-Science-Expertise-ebook/dp/B011H56MKS/ref=tmm_kin_swatch_0?_encoding=UTF8&amp;amp;qid=&amp;amp;sr=" rel="noopener noreferrer"&gt;Peak: Secrets from the New Science of Expertise&lt;/a&gt; written by &lt;a href="https://en.wikipedia.org/wiki/K._Anders_Ericsson" rel="noopener noreferrer"&gt;Anders Ericsson&lt;/a&gt; a psychologist and professor who studied how expert performers acquired their superior performance.&lt;/p&gt;

&lt;p&gt;The book starts with the story of &lt;a href=""&gt;Steve Faloon&lt;/a&gt; who was able to drastically increase his memory span from 7 to 79 digits establishing a new world record at that time.&lt;/p&gt;

&lt;p&gt;The technique used by Ericsson to train Faloon's memory is quite simple. Ericsson was reading a string of digits and Faloon had to memorize them on the fly and repeat them. Each time Faloon made a mistake, Ericsson would go 2 step backwards to put him back into his confort zone. For example if he was not able to repeat a string of 14 digits, Ericsson would go back to 12 digits strings, which was easier for Faloon to memorize.&lt;/p&gt;

&lt;h2&gt;
  
  
  Will that work for me?
&lt;/h2&gt;

&lt;p&gt;That story inspired me and I wanted to try this technique on my own. So I took 10 random React interview questions found on the Internet and I tried to memorize them the same way Faloon and Ericsson have trained, by going 2 questions backwards each time I made a mistake.&lt;/p&gt;

&lt;p&gt;After only a few minutes, I knew all 10 questions by heart.&lt;/p&gt;

&lt;p&gt;I thought it was amazing, effective and fun, so I decided to create a tool to also help others memorize like champs!&lt;/p&gt;

&lt;h2&gt;
  
  
  Development process
&lt;/h2&gt;

&lt;p&gt;When I want to create a new project, I divide my development process into 5 stages:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ideation &amp;amp; Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What is the problem I want to solve&lt;/li&gt;
&lt;li&gt;Do I experience the problem (if no, then stop here)&lt;/li&gt;
&lt;li&gt;Who could be experiencing the problem (target audience)&lt;/li&gt;
&lt;li&gt;What solutions already exist?&lt;/li&gt;
&lt;li&gt;How can I produce a better solution?&lt;/li&gt;
&lt;li&gt;Write down user journey&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Choose stack, list all required components (login system, alerts, tooltips, ...)&lt;/li&gt;
&lt;li&gt;Createa a Figma design of all views for mobile and desktop&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Assessment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Is the solution solving the problem I have in the correct way? If not, go back to 1.&lt;/li&gt;
&lt;li&gt;Publish the Ideation &amp;amp; Design article on Dev.to&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Development &amp;amp; deployment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Coding and deploy (use only free tiers)&lt;/li&gt;
&lt;li&gt;Publish the Coding &amp;amp; Challenges article on Dev.to&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Launch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Polish landing page&lt;/li&gt;
&lt;li&gt;Publish the Conclusion article on Dev.to&lt;/li&gt;
&lt;li&gt;Publish pitch on ProductHunt&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Open Source Project
&lt;/h2&gt;

&lt;p&gt;This is an open source project. The code will be publicly accessible and the tool will be free to use.&lt;br&gt;
You can check out the app design in Figma &lt;a href="https://www.figma.com/file/2AKZHygfvR5JY84e9tk4J2/Peak?node-id=43%3A31" rel="noopener noreferrer"&gt;here&lt;/a&gt; and let me know what you think!&lt;/p&gt;

&lt;p&gt;You can also participate if you want! If you are a junior developer or a student, this can be a nice learning opportunity! &lt;/p&gt;

&lt;p&gt;Feel free to send me a message or to comment below if you have any question, remarks or advice! :)&lt;/p&gt;

&lt;p&gt;Cheers! 👋&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
