<?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>Forem: Julien Avezou</title>
    <description>The latest articles on Forem by Julien Avezou (@javz).</description>
    <link>https://forem.com/javz</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%2F3245143%2Ff6cf9acd-541d-4ad4-a846-2788da803c99.png</url>
      <title>Forem: Julien Avezou</title>
      <link>https://forem.com/javz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/javz"/>
    <language>en</language>
    <item>
      <title>My first collaboration post on DEV! Was so much fun! Check it out to see verdicts on Gemma 4 from multiple writers here!</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Fri, 22 May 2026 19:17:31 +0000</pubDate>
      <link>https://forem.com/javz/my-first-collaboration-post-on-dev-was-so-much-fun-check-it-out-to-see-verdicts-on-gemma-4-from-5d57</link>
      <guid>https://forem.com/javz/my-first-collaboration-post-on-dev-was-so-much-fun-check-it-out-to-see-verdicts-on-gemma-4-from-5d57</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol" class="crayons-story__hidden-navigation-link"&gt;Should you use Gemma 4 for your Development? A Multiversal Analysis to Determine if Gemma 4 is Right for You!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;Gemma 4 Challenge: Write about Gemma 4 Submission&lt;/p&gt;

&lt;/a&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 class="crayons-logo crayons-logo--l" href="/devengers"&gt;
            &lt;img alt="The DEVengers logo" 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%2Forganization%2Fprofile_image%2F12483%2Fb3a03d2d-fbb6-4355-9593-dff0f92638e9.webp" class="crayons-logo__image" width="800" height="800"&gt;
          &lt;/a&gt;

          &lt;a href="/francistrdev" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&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%2F3711376%2F033bd8c0-e583-42ce-9865-056a9e75e3f8.webp" alt="francistrdev profile" class="crayons-avatar__image" width="320" height="320"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/francistrdev" class="crayons-story__secondary fw-medium m:hidden"&gt;
              FrancisTRᴅᴇᴠ (っ◔◡◔)っ
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                FrancisTRᴅᴇᴠ (っ◔◡◔)っ
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" width="166" height="102"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3679499" 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="/francistrdev" 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%2F3711376%2F033bd8c0-e583-42ce-9865-056a9e75e3f8.webp" class="crayons-avatar__image" alt="" width="320" height="320"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;FrancisTRᴅᴇᴠ (っ◔◡◔)っ&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;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/devengers" class="crayons-story__secondary fw-medium"&gt;The DEVengers&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 22&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/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol" id="article-link-3679499"&gt;
          Should you use Gemma 4 for your Development? A Multiversal Analysis to Determine if Gemma 4 is Right for You!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/discuss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;discuss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gemmachallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gemmachallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/gemma"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;gemma&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/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol" 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/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;20&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/devengers/should-you-use-gemma-4-for-your-development-a-multiversal-analysis-to-determine-if-gemma-4-is-2iol#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&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;
            19 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>ai</category>
      <category>discuss</category>
      <category>google</category>
      <category>llm</category>
    </item>
    <item>
      <title>Your Codebase Has Technical Debt. But Does Your Team Have Comprehension Debt?</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Mon, 18 May 2026 12:08:26 +0000</pubDate>
      <link>https://forem.com/javz/your-codebase-has-technical-debt-but-does-your-team-have-comprehension-debt-385f</link>
      <guid>https://forem.com/javz/your-codebase-has-technical-debt-but-does-your-team-have-comprehension-debt-385f</guid>
      <description>&lt;p&gt;Have you ever been thrown into an unfamiliar codebase while deadlines got tighter, stress levels rose, and incidents became harder to resolve?&lt;/p&gt;

&lt;p&gt;I have, and it's not a pleasant experience. &lt;/p&gt;

&lt;p&gt;This got me thinking about a kind of debt engineering teams rarely measure.&lt;/p&gt;

&lt;p&gt;Not technical debt.&lt;/p&gt;

&lt;p&gt;Something more subtle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;comprehension debt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I think of comprehension debt as the gap between how fast a system changes and how well the team understands it.&lt;/p&gt;

&lt;p&gt;And AI is making this gap more important.&lt;/p&gt;

&lt;p&gt;AI didn't create the problem.&lt;/p&gt;

&lt;p&gt;This problem existed long before AI.&lt;/p&gt;

&lt;p&gt;Teams have always struggled with knowledge silos, undocumented systems, fragile ownership, and “only one person knows how this works” situations.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;AI can accelerate the problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When AI helps us write, refactor, and ship code faster, the codebase can evolve faster than the team’s shared understanding.&lt;/p&gt;

&lt;p&gt;That is useful when paired with strong review, explanation, documentation, and ownership.&lt;/p&gt;

&lt;p&gt;But dangerous when it turns into:&lt;/p&gt;

&lt;p&gt;“The code changed, but nobody really understands the system better.”&lt;/p&gt;

&lt;p&gt;That is the kind of risk I wanted to make more visible.&lt;/p&gt;

&lt;p&gt;What if I could quantify comprehension debt somehow? At least to a certain degree of approximation.&lt;/p&gt;

&lt;p&gt;I started exploring the different variables and components that would impact comprehension, for better or worse. &lt;/p&gt;

&lt;p&gt;Based on my experience, conversations with other engineers, and patterns I’ve seen across teams, I started building a scoring methodology to approximate comprehension debt.&lt;/p&gt;

&lt;p&gt;My goal here is to help engineering teams spot where critical or highly connected systems are changing faster than the team understands them.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is comprehension debt?
&lt;/h2&gt;

&lt;p&gt;Let's start with a more formal definition:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comprehension debt rises when system impact, complexity, dependency surface area, change velocity, and AI-assisted change speed outpace team understanding, coverage, redundancy, documentation, and human ownership.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am not basing this just on theory.&lt;/p&gt;

&lt;p&gt;I experienced the negative effects of high comprehension debt recently in one of my past teams.&lt;/p&gt;

&lt;p&gt;It was a stressful and demoralizing experience.&lt;/p&gt;

&lt;p&gt;I constantly felt behind and had to keep up.&lt;/p&gt;

&lt;p&gt;Incidents were getting worse and harder to resolve over time because the level of system understanding across the team was too low.&lt;/p&gt;

&lt;p&gt;The code existed.&lt;/p&gt;

&lt;p&gt;The services existed.&lt;/p&gt;

&lt;p&gt;The tickets kept moving.&lt;/p&gt;

&lt;p&gt;But the shared mental model of the system was not keeping up.&lt;/p&gt;

&lt;p&gt;That is a hard place to work from.&lt;/p&gt;

&lt;p&gt;You feel reactive all the time.&lt;/p&gt;

&lt;p&gt;You are not just debugging the incident.&lt;/p&gt;

&lt;p&gt;You are debugging your own lack of context.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why AI makes this worth measuring now
&lt;/h2&gt;

&lt;p&gt;AI-assisted development can be incredibly useful.&lt;/p&gt;

&lt;p&gt;I use AI myself, quite frequently.&lt;/p&gt;

&lt;p&gt;But I keep coming back to this question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we increasing shipping velocity without increasing understanding velocity?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because those are not the same thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A team can ship more code and still understand less of the system over time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI can help generate implementation options, refactor code, explain files, write tests, and speed up repetitive work.&lt;/p&gt;

&lt;p&gt;But if AI-assisted changes are merged without enough human explanation, review, documentation, or ownership, comprehension debt can accumulate faster.&lt;/p&gt;

&lt;p&gt;The issue is not:&lt;/p&gt;

&lt;p&gt;“Did AI write this?”&lt;/p&gt;

&lt;p&gt;The better question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Can the team still explain, review, modify, deploy, and recover this system safely?”&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How the debt score is calculated
&lt;/h2&gt;

&lt;p&gt;This is not meant to be a perfect mathematical model.&lt;/p&gt;

&lt;p&gt;It is an attempt to make an invisible engineering risk visible enough to discuss, compare, and improve.&lt;/p&gt;

&lt;p&gt;At a high level, the score combines two sides:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;System pressure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These factors increase comprehension debt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high criticality&lt;/li&gt;
&lt;li&gt;high complexity&lt;/li&gt;
&lt;li&gt;high change velocity&lt;/li&gt;
&lt;li&gt;high incident sensitivity&lt;/li&gt;
&lt;li&gt;high dependency surface area&lt;/li&gt;
&lt;li&gt;high ownership concentration&lt;/li&gt;
&lt;li&gt;high AI acceleration risk when AI is used without strong human guardrails&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2) &lt;strong&gt;Team comprehension coverage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These factors reduce comprehension debt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more safe modifiers&lt;/li&gt;
&lt;li&gt;more clear explainers&lt;/li&gt;
&lt;li&gt;stronger reviewer redundancy&lt;/li&gt;
&lt;li&gt;better documentation&lt;/li&gt;
&lt;li&gt;more recent hands-on exposure&lt;/li&gt;
&lt;li&gt;stronger on-call familiarity&lt;/li&gt;
&lt;li&gt;better engineer-system capability scores&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the rough model is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Comprehension Debt =
System pressure
+ dependency pressure
+ ownership concentration
+ optional AI acceleration

minus

human coverage
+ documentation quality
+ reviewer redundancy
+ recent exposure
+ operational familiarity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To detect dangerous gaps, a &lt;strong&gt;Minimum Viable Coverage&lt;/strong&gt; check for critical systems is performed.&lt;/p&gt;

&lt;p&gt;For a critical system, the sheet checks whether it has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;at least 2 safe modifiers&lt;/li&gt;
&lt;li&gt;at least 2 capable reviewers&lt;/li&gt;
&lt;li&gt;documentation quality of 3 or higher&lt;/li&gt;
&lt;li&gt;recent hands-on exposure of 3 or higher&lt;/li&gt;
&lt;li&gt;on-call familiarity of 3 or higher&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If one of these is missing, the system gets an MVC gap.&lt;/p&gt;

&lt;p&gt;A critical system with an MVC gap should be flagged even if the overall debt score looks moderate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;I am very open to feedback on how the methodology could be improved.&lt;/p&gt;

&lt;p&gt;Also curious:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does your team maintain understanding of the codebase?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What signals tell you that your team is starting to lose understanding of a system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And have you noticed AI changing the speed at which your systems evolve compared to the speed at which your team understands them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think this is going to become a much bigger engineering leadership problem as AI generation and automation accelerates.&lt;/p&gt;

&lt;p&gt;We are getting better at generating code.&lt;/p&gt;

&lt;p&gt;But we still need to get better at preserving shared understanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get the template
&lt;/h2&gt;

&lt;p&gt;To make this easier to reason about, I turned the methodology into a spreadsheet-first template:&lt;br&gt;
&lt;strong&gt;System Comprehension Heatmap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System Inventory&lt;/li&gt;
&lt;li&gt;Engineer-System Matrix&lt;/li&gt;
&lt;li&gt;Overview Dashboard&lt;/li&gt;
&lt;li&gt;Risk Recommendations&lt;/li&gt;
&lt;li&gt;optional AI acceleration scoring&lt;/li&gt;
&lt;li&gt;Minimum Viable Coverage checks&lt;/li&gt;
&lt;li&gt;quick-start PDF guide&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://javz.gumroad.com/l/system-comprehension-heatmap" rel="noopener noreferrer"&gt;You can get it for free here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would love feedback.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>engineeringmanagement</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The missing layer in prompt engineering: thinking quality</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Mon, 11 May 2026 12:45:04 +0000</pubDate>
      <link>https://forem.com/javz/the-missing-layer-in-prompt-engineering-thinking-quality-2n3j</link>
      <guid>https://forem.com/javz/the-missing-layer-in-prompt-engineering-thinking-quality-2n3j</guid>
      <description>&lt;p&gt;I've seen countless prompting trends and prompt packs to use but most discussions around prompt engineering focus on one thing:&lt;br&gt;
getting better outputs&lt;/p&gt;

&lt;p&gt;Optimizing for better outputs often translates to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better prompts&lt;/li&gt;
&lt;li&gt;More context&lt;/li&gt;
&lt;li&gt;More structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But lately, I’ve been wondering:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if we’re optimizing the wrong layer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because the real question isn’t:&lt;/p&gt;

&lt;p&gt;“How do I get better answers from AI?”&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Is AI actually improving how I think?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because I’ve noticed something subtle:&lt;/p&gt;

&lt;p&gt;My output was improving.&lt;/p&gt;

&lt;p&gt;But my understanding was not always.&lt;/p&gt;

&lt;p&gt;After working in several teams and environments, I have observed that: &lt;/p&gt;

&lt;p&gt;Good engineers ask better questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best engineers question their own thinking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most of what I see optimizes for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better outputs&lt;/li&gt;
&lt;li&gt;faster generation&lt;/li&gt;
&lt;li&gt;more automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But much less for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clearer thinking&lt;/li&gt;
&lt;li&gt;stronger judgment&lt;/li&gt;
&lt;li&gt;deeper understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI isn’t just changing how we build.&lt;/p&gt;

&lt;p&gt;It’s quietly reshaping &lt;strong&gt;how we think while building&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 What kind of thinking do you actually need?
&lt;/h2&gt;

&lt;p&gt;That’s when I realized I didn’t need more prompts.&lt;/p&gt;

&lt;p&gt;I needed a way to choose the right kind of thinking first.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;“What’s the best prompt for this?”&lt;/p&gt;

&lt;p&gt;I started asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What kind of thinking do I need right now?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That led me to structure my prompting around &lt;strong&gt;5 simple thinking modes&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Explore&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I don’t fully understand the problem yet&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I have a plan… but it might be wrong&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;Decide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I need to choose between options&lt;/p&gt;

&lt;p&gt;4) &lt;strong&gt;Audit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I need to verify quality or correctness&lt;/p&gt;

&lt;p&gt;5) &lt;strong&gt;Reflect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I want to actually learn from what I did&lt;/p&gt;

&lt;p&gt;This simple shift changed everything.&lt;/p&gt;

&lt;p&gt;Instead of using AI reactively,&lt;br&gt;
I started using it &lt;strong&gt;intentionally based on the thinking task&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔁 The simple loop that protects your thinking
&lt;/h2&gt;

&lt;p&gt;This is a simple workflow framework that makes a big difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Write what you think first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;During AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use it to expand or challenge your thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I verify this?&lt;/li&gt;
&lt;li&gt;Did I just accept it?&lt;/li&gt;
&lt;li&gt;Can I explain it without AI?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It sounds simple, but it’s surprisingly easy to skip.&lt;/p&gt;

&lt;p&gt;And when you skip it, you start noticing something subtle:&lt;/p&gt;

&lt;p&gt;Your output improves.&lt;br&gt;
But your understanding doesn’t always follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚖️ Why one prompt is almost never enough
&lt;/h2&gt;

&lt;p&gt;One thing I’ve been changing in my workflow:&lt;/p&gt;

&lt;p&gt;I rarely rely on a single prompt anymore.&lt;/p&gt;

&lt;p&gt;Instead, I use &lt;strong&gt;prompt pairing&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;one prompt to generate&lt;/strong&gt;&lt;br&gt;
2) &lt;strong&gt;one prompt to challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;First prompt:&lt;/p&gt;

&lt;p&gt;“Suggest 3 possible architectures for this system.”&lt;/p&gt;

&lt;p&gt;Follow-up:&lt;/p&gt;

&lt;p&gt;“Now challenge each option: what are the hidden risks, failure modes, and long-term maintenance issues?”&lt;/p&gt;

&lt;p&gt;Why this matters:&lt;/p&gt;

&lt;p&gt;AI is very good at giving plausible first answers.&lt;br&gt;
But those answers are often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;incomplete&lt;/li&gt;
&lt;li&gt;overly confident&lt;/li&gt;
&lt;li&gt;biased toward common patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prompt pairing helps you avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;first-answer bias&lt;/li&gt;
&lt;li&gt;shallow reasoning&lt;/li&gt;
&lt;li&gt;premature decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It forces a simple but powerful loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate → Critique → Decide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that loop alone has probably improved my decision quality more than any single “better prompt”.&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 A simple way to check if AI is helping or hurting your thinking
&lt;/h2&gt;

&lt;p&gt;Another thing I started doing:&lt;/p&gt;

&lt;p&gt;After important prompts, I ask myself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Did AI actually improve my thinking here?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I use a simple &lt;strong&gt;thinking score&lt;/strong&gt; (0–5):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I write my own initial view before prompting?&lt;/li&gt;
&lt;li&gt;Did I challenge or refine the output?&lt;/li&gt;
&lt;li&gt;Did I verify at least one important claim?&lt;/li&gt;
&lt;li&gt;Did I make the final judgment myself?&lt;/li&gt;
&lt;li&gt;Can I explain the result without AI?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not as a strict system.&lt;br&gt;
More as a signal.&lt;/p&gt;

&lt;p&gt;Because sometimes the pattern is obvious:&lt;/p&gt;

&lt;p&gt;You get great output.&lt;br&gt;
You move faster.&lt;br&gt;
But you didn’t actually understand what happened.&lt;/p&gt;

&lt;p&gt;And over time, that compounds.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ A few prompts that changed how I work
&lt;/h2&gt;

&lt;p&gt;Here’s one I use a lot (Explore Mode):&lt;/p&gt;

&lt;p&gt;“I am working on a vague engineering problem.&lt;br&gt;
Before suggesting solutions, help me frame the problem.&lt;br&gt;
List the goal, constraints, stakeholders, unknowns, assumptions, edge cases, and the questions I should answer myself first.”&lt;/p&gt;

&lt;p&gt;Then I follow it with:&lt;/p&gt;

&lt;p&gt;“Now turn this into the 5 questions I should answer manually before asking for implementation help.”&lt;/p&gt;

&lt;p&gt;What this does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;forces clarity before coding&lt;/li&gt;
&lt;li&gt;surfaces unknowns early&lt;/li&gt;
&lt;li&gt;prevents jumping too quickly into solutions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another one I’ve been using more (Challenge Mode):&lt;/p&gt;

&lt;p&gt;“Pressure-test this architecture proposal.&lt;br&gt;
Identify assumptions, weak points, hidden dependencies, and failure modes.&lt;br&gt;
For each, explain what evidence would confirm or disprove it.”&lt;/p&gt;

&lt;p&gt;Followed by:&lt;/p&gt;

&lt;p&gt;“Which of these should I verify first, and how?”&lt;/p&gt;

&lt;p&gt;This one has saved me from a few very confident but flawed directions.&lt;/p&gt;




&lt;h2&gt;
  
  
  👥 What’s changing in teams right now
&lt;/h2&gt;

&lt;p&gt;Prompting is evolving quickly.&lt;/p&gt;

&lt;p&gt;It’s becoming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more collaborative&lt;/li&gt;
&lt;li&gt;more embedded in workflows&lt;/li&gt;
&lt;li&gt;less about “one perfect prompt”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And more about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prompt sequences&lt;/li&gt;
&lt;li&gt;prompt-driven workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m also seeing patterns like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prompt Driven Development (explore before coding)&lt;/li&gt;
&lt;li&gt;Prompt versioning (iterating prompts like code)&lt;/li&gt;
&lt;li&gt;Shared team prompts (internal playbooks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But most of these still optimize for output quality.&lt;br&gt;
Not &lt;strong&gt;thinking quality&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 The piece I felt was missing
&lt;/h2&gt;

&lt;p&gt;I didn’t need more prompts.&lt;/p&gt;

&lt;p&gt;I needed a way to answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Is AI making my thinking better or just faster?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I started using a simple self-check after important prompts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did I think before prompting?&lt;/li&gt;
&lt;li&gt;Did I challenge the output?&lt;/li&gt;
&lt;li&gt;Did I verify anything?&lt;/li&gt;
&lt;li&gt;Did I make the final judgment?&lt;/li&gt;
&lt;li&gt;Can I explain it without AI?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not to optimize productivity.&lt;br&gt;
But to &lt;strong&gt;protect judgment&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ The system I ended up building for myself
&lt;/h2&gt;

&lt;p&gt;I ended up structuring this into a prompt system I now use daily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 thinking modes&lt;/li&gt;
&lt;li&gt;Before / During / After workflow&lt;/li&gt;
&lt;li&gt;Paired prompts (generate → challenge)&lt;/li&gt;
&lt;li&gt;Simple thinking quality score&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended loop: Before AI - Core Prompt - Paired Follow-up - Manual Reflection - Thinking Score.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All organized around real engineering use cases.&lt;/p&gt;

&lt;p&gt;If you’re interested, &lt;a href="https://javz.gumroad.com/l/ai-prompt-system-guide" rel="noopener noreferrer"&gt;I shared the full prompt system as a free PDF (100 prompts structured by thinking mode).&lt;/a&gt; (100 prompts structured by thinking mode).&lt;/p&gt;

&lt;p&gt;Would love your feedback on my system.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Curious how others are approaching this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How do you approach prompting today?&lt;/li&gt;
&lt;li&gt;Do you reflect on your AI usage at all?&lt;/li&gt;
&lt;li&gt;Are teams starting to standardize prompting internally?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m especially curious about how this is evolving at the team/org level.&lt;/p&gt;




&lt;p&gt;AI gives answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But engineers who compound over time are the ones who protect how they think.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>The 4 Cognitive Archetypes of Developers Using AI</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Mon, 04 May 2026 14:47:35 +0000</pubDate>
      <link>https://forem.com/javz/the-4-cognitive-archetypes-of-developers-using-ai-382n</link>
      <guid>https://forem.com/javz/the-4-cognitive-archetypes-of-developers-using-ai-382n</guid>
      <description>&lt;p&gt;Lately, I’ve been reflecting on something:&lt;/p&gt;

&lt;p&gt;The question for most developers is no longer "Are you using AI?", but rather "How and why are you using AI?".&lt;/p&gt;

&lt;p&gt;I’ve noticed AI tooling becoming increasingly embedded in my daily workflow. At this time last year, my usage of AI was limited to code autocomplete suggestions in my IDE that I would manually validate. Now I am using coding assistants to help ideate, prototype, and refactor my projects. &lt;br&gt;
In just one year, my workflow has changed dramatically.&lt;/p&gt;

&lt;p&gt;It's hard for me to now imagine coding without AI tooling as it has been making me more productive. It's the same feeling I got when I got my first smartphone. &lt;/p&gt;

&lt;p&gt;AI increasingly feels like my first smartphone: transformative, incredibly useful, and powerful enough that I need intentional habits to avoid overdependence. For example, keeping it outside of my bedroom when I go to sleep and occasionally going on walks without it, just to be alone with my thoughts. &lt;/p&gt;

&lt;p&gt;This is the kind of awareness I’m now trying to build around my AI usage: understanding how it shapes my thinking, where it helps, and where it may quietly erode it.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI isn’t just changing how fast we build. It is also impacting &lt;em&gt;how&lt;/em&gt; we think.
&lt;/h2&gt;

&lt;p&gt;Because not all AI usage is equal. Each usage can be mapped to a certain cognitive cost. &lt;/p&gt;

&lt;p&gt;Sometimes AI helps us think more clearly and move faster.&lt;br&gt;
But sometimes it quietly replaces parts of our reasoning before we even notice. &lt;/p&gt;

&lt;p&gt;I realized that sometimes I wasn’t using AI because I needed leverage, I was using it because I wanted to avoid friction.&lt;/p&gt;

&lt;p&gt;That realization pushed me to start thinking less about &lt;em&gt;AI usage&lt;/em&gt; in general, and more about &lt;strong&gt;AI modes&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Each AI mode carries a cognitive cost
&lt;/h2&gt;

&lt;p&gt;I distinguish 3 groups: Supportive, Mixed, Risky.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supportive modes:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Explaining unfamiliar code or architecture&lt;/li&gt;
&lt;li&gt;Exploring tradeoffs&lt;/li&gt;
&lt;li&gt;Critiquing a plan&lt;/li&gt;
&lt;li&gt;Testing assumptions&lt;/li&gt;
&lt;li&gt;Clarifying concepts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These modes use AI to expand your thinking and have a low cognitive cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mixed modes:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Boilerplate generation&lt;/li&gt;
&lt;li&gt;Refactoring suggestions&lt;/li&gt;
&lt;li&gt;Drafting documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These modes use AI to save time but can also compress understanding if used carelessly. These modes have a sizeable cognitive cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  Risky modes:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Blindly accepting generated solutions&lt;/li&gt;
&lt;li&gt;Delegating core architecture too early&lt;/li&gt;
&lt;li&gt;Letting AI define implementation before you’ve thought deeply&lt;/li&gt;
&lt;li&gt;Heavy debugging delegation without understanding the root cause&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These can feel productive on the surface, but these AI modes can weaken long-term comprehension if used frequently and have a high cognitive cost.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hands-on reflective practices also affect your total score
&lt;/h2&gt;

&lt;p&gt;When shipping code I also keep a set of reflective exercises that I can make use of at different stages of my workflow. These can reinforce healthy behavior that alleviate some of the cognitive cost from AI modes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Before:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Did I attempt this myself first?&lt;/li&gt;
&lt;li&gt;Am I using AI to expand my thinking or bypass it?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  During:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Am I reviewing assumptions deeply?&lt;/li&gt;
&lt;li&gt;Could I explain why this output works?&lt;/li&gt;
&lt;li&gt;What risks or edge cases might AI be skipping?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  After:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Could I explain this solution tomorrow without rereading it?&lt;/li&gt;
&lt;li&gt;Did I preserve ownership?&lt;/li&gt;
&lt;li&gt;Was this leverage or dependency?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time, repeated AI habits don’t just affect productivity. &lt;/p&gt;

&lt;p&gt;They shape how we think.&lt;/p&gt;




&lt;h2&gt;
  
  
  Those patterns shape your cognitive archetype
&lt;/h2&gt;

&lt;p&gt;There are 4 main cognitive archetypes:&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Architect
&lt;/h3&gt;

&lt;p&gt;AI expands thinking without replacing ownership&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Balancer
&lt;/h3&gt;

&lt;p&gt;Mostly healthy, but mixed-mode creep needs monitoring&lt;/p&gt;

&lt;h3&gt;
  
  
  Autopilot Builder
&lt;/h3&gt;

&lt;p&gt;Efficiency may be masking weakened comprehension&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Passenger
&lt;/h3&gt;

&lt;p&gt;AI may be driving too much of the reasoning path&lt;/p&gt;

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

&lt;p&gt;These archetypes aren’t an exact science. They’re simply a framework for raising awareness.&lt;/p&gt;




&lt;p&gt;Have you also noticed different "AI modes" in your own daily workflow? If so, what mode are you in the most?&lt;/p&gt;

&lt;p&gt;What would be your cognitive archetype and why?&lt;/p&gt;

&lt;p&gt;I’d be curious to hear how others are thinking about their own AI usage.&lt;/p&gt;

&lt;p&gt;It feels like we’re all trying to figure out and build these habits in real time. &lt;/p&gt;




&lt;p&gt;My take: I don’t think the right path is using AI less. &lt;/p&gt;

&lt;p&gt;AI clearly offers real leverage, but leverage without awareness can come with hidden costs.&lt;/p&gt;

&lt;p&gt;Knowing when to switch modes becomes key.&lt;/p&gt;

&lt;p&gt;When should AI be a teacher, critic, accelerator or collaborator?&lt;/p&gt;

&lt;p&gt;When should AI support the driver without taking the wheel?&lt;/p&gt;

&lt;p&gt;Because faster output is great but only if understanding keeps up.&lt;/p&gt;

&lt;p&gt;I built a personal tracker around this framework to better measure my own habits over time. &lt;/p&gt;

&lt;p&gt;It helps me score AI modes, monitor dependency drift, and spot patterns in how I work so I can adjust more intentionally over time.&lt;/p&gt;

&lt;p&gt;If it sounds useful to you too, I’m sharing it free and would genuinely love feedback: &lt;a href="https://javz.gumroad.com/l/ai-thinking-balance-tracker" rel="noopener noreferrer"&gt;https://javz.gumroad.com/l/ai-thinking-balance-tracker&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>learning</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>AI through Visuals - Hardware</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Tue, 28 Apr 2026 11:17:35 +0000</pubDate>
      <link>https://forem.com/javz/ai-through-visuals-hardware-5ha6</link>
      <guid>https://forem.com/javz/ai-through-visuals-hardware-5ha6</guid>
      <description>&lt;p&gt;Most AI content today feels flat.&lt;/p&gt;

&lt;p&gt;We read threads.&lt;br&gt;
We skim blog posts.&lt;br&gt;
We copy prompts.&lt;/p&gt;

&lt;p&gt;But very rarely do we actually see how AI systems work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I’m starting this series
&lt;/h3&gt;

&lt;p&gt;As engineers, our edge is not just using tools.&lt;/p&gt;

&lt;p&gt;It’s understanding systems.&lt;/p&gt;

&lt;p&gt;Lately, I’ve been thinking a lot about this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Are we still thinking deeply about what we’re building…&lt;br&gt;
or just orchestrating tools we don’t fully understand?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s where this idea came from.&lt;/p&gt;




&lt;h3&gt;
  
  
  Introducing: AI Visual Series
&lt;/h3&gt;

&lt;p&gt;I’m starting a series of interactive visual explainers to break down AI concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;infrastructure&lt;/li&gt;
&lt;li&gt;systems&lt;/li&gt;
&lt;li&gt;tradeoffs&lt;/li&gt;
&lt;li&gt;bottlenecks&lt;/li&gt;
&lt;li&gt;real-world constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not with walls of text…&lt;/p&gt;

&lt;p&gt;But with visuals you can explore and interact with.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://ai-visual-series.vercel.app/" rel="noopener noreferrer"&gt;You can explore the series here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;The goal isn’t about simplifying AI.&lt;/p&gt;

&lt;p&gt;It’s about making complex systems intuitive through visuals.&lt;/p&gt;

&lt;p&gt;Because once you see something you think differently about it.&lt;/p&gt;

&lt;p&gt;Without further delay, let's explore the first post in this series.&lt;/p&gt;




&lt;h3&gt;
  
  
  AI Hardware, Explained Visually
&lt;/h3&gt;

&lt;p&gt;We talk about AI like it’s software.&lt;/p&gt;

&lt;p&gt;Prompts. Models. APIs.&lt;/p&gt;

&lt;p&gt;But modern AI doesn’t run on “code”.&lt;/p&gt;

&lt;p&gt;It runs on a massive physical stack of hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The AI hardware stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A modern AI system isn’t just a server.&lt;/p&gt;

&lt;p&gt;It’s a layered system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU / accelerator&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;high-bandwidth memory (HBM)&lt;/li&gt;
&lt;li&gt;advanced packaging&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;power&lt;/li&gt;
&lt;li&gt;cooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each layer matters.&lt;/p&gt;

&lt;p&gt;Each layer can break.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;2. A global system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What surprised me most:&lt;/p&gt;

&lt;p&gt;This stack is not built in one place.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Design → United States&lt;/li&gt;
&lt;li&gt;Fabrication → Taiwan&lt;/li&gt;
&lt;li&gt;Memory → South Korea&lt;/li&gt;
&lt;li&gt;Lithography → Netherlands&lt;/li&gt;
&lt;li&gt;Materials → Japan&lt;/li&gt;
&lt;li&gt;Assembly + deployment → China + Southeast Asia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No single country controls the full system.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;3. Where things actually break&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We used to think scaling AI meant just adding more GPUs&lt;/p&gt;

&lt;p&gt;But that’s no longer true.&lt;/p&gt;

&lt;p&gt;The real bottlenecks are now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HBM memory&lt;/li&gt;
&lt;li&gt;advanced packaging&lt;/li&gt;
&lt;li&gt;networking&lt;/li&gt;
&lt;li&gt;power availability&lt;/li&gt;
&lt;li&gt;cooling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here’s the counterintuitive part:&lt;/p&gt;

&lt;p&gt;Compute itself is no longer the main constraint.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The key takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The more I dig into AI…&lt;/p&gt;

&lt;p&gt;The less it feels like software engineering.&lt;/p&gt;

&lt;p&gt;And the more it feels like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;distributed systems&lt;/li&gt;
&lt;li&gt;hardware engineering&lt;/li&gt;
&lt;li&gt;energy infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All at once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for us&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re building with AI today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you’re sitting on top of this entire stack&lt;/li&gt;
&lt;li&gt;you’re affected by its constraints&lt;/li&gt;
&lt;li&gt;you’re making decisions that depend on it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding it, even at a high level, changes how you think.&lt;/p&gt;

&lt;p&gt;You can play around with the interactive visuals &lt;a href="https://ai-visual-series.vercel.app/posts/ai-hardware-explained-visually" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What’s next in the series
&lt;/h3&gt;

&lt;p&gt;I’ll keep building these visual explainers around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;evolution of AI chips&lt;/li&gt;
&lt;li&gt;cost of a prompt&lt;/li&gt;
&lt;li&gt;model capability vs compute&lt;/li&gt;
&lt;li&gt;open vs closed AI ecosystems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Curious to hear:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;what AI concepts would you like to see visualized next?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Building a coding course generator in public #2: what I learned</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Wed, 22 Apr 2026 12:49:24 +0000</pubDate>
      <link>https://forem.com/javz/building-a-coding-course-generator-in-public-2-what-i-learned-49o6</link>
      <guid>https://forem.com/javz/building-a-coding-course-generator-in-public-2-what-i-learned-49o6</guid>
      <description>&lt;p&gt;Building fast with AI is easy but building something you can actually run, inspect, and trust is harder. This project is my attempt to teach builders core engineering intuitions when building projects.&lt;/p&gt;

&lt;p&gt;This is the second and closing post in my mini build-in-public series around a coding course generator. The goal was not to polish a hosted SaaS. It was to validate the concept quickly, release the code, and see whether a local-first learning product built with AI assistance could help others.&lt;/p&gt;

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




&lt;h3&gt;
  
  
  Coding setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;ChatGPT 5.4 for ideation and planning&lt;/li&gt;
&lt;li&gt;Codex 5.3 for scaffolding and broader architectural changes&lt;/li&gt;
&lt;li&gt;Codex 5.3 Spark for faster live coding and pair-programming-style iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because this was a side experiment and I wanted fast feedback, I used ChatGPT and Codex heavily throughout the build. That definitely helped me move faster. It also made one thing very clear: AI can accelerate implementation, but it does not remove the need for architectural steering, debugging discipline, and careful review.&lt;/p&gt;

&lt;p&gt;I stopped thinking about this as "AI writes the code" fairly quickly. The better framing for me was: I am still the engineer, but I now have a very fast collaborator that needs clear direction.&lt;/p&gt;




&lt;h3&gt;
  
  
  What I learned building with my AI assistant
&lt;/h3&gt;

&lt;p&gt;A few practices made the biggest difference for me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend time in planning mode before implementation. Longer planning conversations up front saved me from a lot of drift later.&lt;/li&gt;
&lt;li&gt;Be explicit about architecture. If I did not define boundaries early, the assistant would fill in the blanks in ways I did not actually want.&lt;/li&gt;
&lt;li&gt;State the expected end result clearly. Prompts worked much better when I described success criteria, constraints, and what “done” should look like.&lt;/li&gt;
&lt;li&gt;Add observability early. Admin pages, job logs, and debug surfaces helped a lot once the system had multiple moving parts.&lt;/li&gt;
&lt;li&gt;Debug collaboratively, not passively. The best prompts were the ones where I pasted the full error, the relevant code path, and the current hypothesis.&lt;/li&gt;
&lt;li&gt;Work in smaller slices. Smaller prompts with checkpoints were much easier to validate than one large mega-prompt.&lt;/li&gt;
&lt;li&gt;Test between slices. Typechecks, linting, and automated tests were essential to keep momentum without accumulating silent breakage.&lt;/li&gt;
&lt;li&gt;Ask for pre-mortems and final audits. Some of the most useful prompts were “what am I missing?” and “review this repo for architectural risk.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Codex specifically, a few habits helped a lot: use plan mode for architecture, keep a reusable prompt contract, isolate bigger changes in branches or worktrees when useful, and run a final repo-wide audit once the main implementation is in place.&lt;/p&gt;

&lt;p&gt;One other thing I noticed: model choice matters less than matching the model and reasoning depth to the task. When I wanted speed, I went lighter. When I was stuck on architecture or a harder bug, I switched to a deeper pass instead of trying to force a fast model to solve everything.&lt;br&gt;
For example, this is high-level comparison between Codex 5.3 and Codex 5.3 spark that I would switch between:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5fhfaa9de6qnkmcptke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5fhfaa9de6qnkmcptke.png" alt=" " width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the sequence of prompts I ran with Codex, notice how they are split into smaller building blocks to maintain frequent control and checkpoints when building the project:&lt;/p&gt;

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


&lt;h3&gt;
  
  
  Thoughts on the project itself
&lt;/h3&gt;

&lt;p&gt;The hardest part of this project was not generating code. It was deciding how to structure the learning experience for a beginner.&lt;/p&gt;

&lt;p&gt;I wanted AI to be optional, not the foundation of the product. That mattered a lot to me. The default experience should still work without any AI setup, and the product should still teach healthy habits rather than turn into a black box.&lt;/p&gt;

&lt;p&gt;That pushed me toward a local-first design. The app is meant to run on your machine. It lists guided project-based courses, scaffolds a starter project into your own GitHub repository, and tracks progression through pull requests and validation checks. If you configure an OpenAI or Anthropic key, it can also post optional advisory AI reviews on PRs.&lt;/p&gt;

&lt;p&gt;I also experimented with skill-focused course generation around intents like debugging and error_handling. That idea is still promising to me, but I want to be honest about its current state: the custom course pipeline is still experimental, and the UI is currently marked as temporarily disabled while I harden it.&lt;/p&gt;

&lt;p&gt;The deeper challenge here is educational design. How do you teach fundamentals in a way that is practical, motivating, and not overly abstract? The repo reflects that tension quite a bit. The course structure includes step-zero onboarding, glossary terms, review checklists, concept primers, reflection prompts, and milestone validation. The goal is not just “finish tasks,” but build better engineering intuition along the way.&lt;/p&gt;


&lt;h3&gt;
  
  
  Tech stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Next.js 15&lt;/li&gt;
&lt;li&gt;React 19&lt;/li&gt;
&lt;li&gt;Node.js 22&lt;/li&gt;
&lt;li&gt;pnpm monorepo&lt;/li&gt;
&lt;li&gt;Prisma&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;a local background worker using tsx&lt;/li&gt;
&lt;li&gt;GitHub API integration with outbound sync and optional webhook ingestion&lt;/li&gt;
&lt;li&gt;OpenAI / Anthropic integrations for optional AI features&lt;/li&gt;
&lt;li&gt;Vitest, ESLint, and Prettier&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Architecture decisions I made early
&lt;/h3&gt;

&lt;p&gt;A few design decisions shaped the project quite a bit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implemented today:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local-first web app plus background worker&lt;/li&gt;
&lt;li&gt;Queue-based job processing with retries&lt;/li&gt;
&lt;li&gt;Optional AI layer on top of deterministic milestone validation and progression&lt;/li&gt;
&lt;li&gt;Structured logging for jobs, events, and LLM activity&lt;/li&gt;
&lt;li&gt;Admin pages for monitoring job and LLM behavior&lt;/li&gt;
&lt;li&gt;An LLM gateway with token limits, request hashing, cache support, and secret scanning on diff input&lt;/li&gt;
&lt;li&gt;AI PR review based on trimmed diff context rather than dumping the full repo into the model&lt;/li&gt;
&lt;li&gt;Template and course versioning&lt;/li&gt;
&lt;li&gt;Course-plan validation against a concept dependency graph, so the learning progression stays more coherent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One detail I particularly like is that milestone progression is deterministic. AI can help as an advisory layer, but it does not decide the underlying progression state. That felt like the right tradeoff for a learning product.&lt;/p&gt;

&lt;p&gt;Another useful decision was adding structured logs and worker heartbeats early. Once you have a web app, a worker, GitHub sync, and optional AI behavior, silent failure becomes expensive. I wanted the system to be inspectable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Still future work:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few ideas are still more directional than finished:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;better cost controls as usage scales&lt;/li&gt;
&lt;li&gt;a stronger and more reliable custom-course generation pipeline&lt;/li&gt;
&lt;li&gt;better reuse and sharing of generated courses&lt;/li&gt;
&lt;li&gt;richer reflection and learning artifacts around the core course flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So while I am happy with the foundation, I do not want to oversell the current state. The core local-first flow is the real shipped value today.&lt;/p&gt;


&lt;h3&gt;
  
  
  Open-source release
&lt;/h3&gt;

&lt;p&gt;The repo is now public and MIT-licensed:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/JulienAvezou" rel="noopener noreferrer"&gt;
        JulienAvezou
      &lt;/a&gt; / &lt;a href="https://github.com/JulienAvezou/ai-course-generator" rel="noopener noreferrer"&gt;
        ai-course-generator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Build custom code fundamentals courses with github and AI integrated workflows
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Coding Course Generator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Local-first, open-source software for learning healthy coding fundamentals in the age of AI.&lt;/p&gt;
&lt;p&gt;This project is a build-in-public social experiment. The goal is not to ship a hosted product. The goal is to help learners run the app locally, scaffold a real project into their own GitHub repository, and learn fundamentals, debugging habits, and engineering discipline through guided milestones.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Open Source Status&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;The source code in this repository is licensed under &lt;a href="https://github.com/JulienAvezou/ai-course-generator/./LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The repo is intentionally &lt;code&gt;private&lt;/code&gt; at the package-manager level in &lt;a href="https://github.com/JulienAvezou/ai-course-generator/./package.json" rel="noopener noreferrer"&gt;package.json&lt;/a&gt; to prevent accidental npm publishing.&lt;/li&gt;
&lt;li&gt;This repository is publicly visible on GitHub and is intended to be cloned and run locally.&lt;/li&gt;
&lt;li&gt;Treat the codebase, docs, screenshots, and git history as public-facing project material.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Mission&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Teach programming fundamentals through real projects&lt;/li&gt;
&lt;li&gt;Teach professional engineering habits, not just syntax&lt;/li&gt;
&lt;li&gt;Help AI-assisted builders develop better judgment, debugging ability, and maintainable code instincts&lt;/li&gt;
&lt;li&gt;Keep the whole system…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/JulienAvezou/ai-course-generator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The intended usage is simple: clone it, run it locally, inspect everything, and fork it if you want to push the idea further. That is also why I kept AI optional. You do not need AI features to use the core product.&lt;/p&gt;

&lt;p&gt;What I am releasing today is not a polished production platform. It is a local-first open-source project with a real architecture, a clear learning idea, and a working core flow. The custom course pipeline generation is still too experimental, I will try to implement a working version when I have some extra time to dedicate to this project.&lt;/p&gt;

&lt;h4&gt;
  
  
  Screenshots
&lt;/h4&gt;

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

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

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

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

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




&lt;h3&gt;
  
  
  Closing thoughts
&lt;/h3&gt;

&lt;p&gt;This project was a useful reminder that AI can accelerate building, but it does not replace product judgment or engineering clarity. If anything, it makes those qualities more important.&lt;/p&gt;

&lt;p&gt;If you want to try it, fork it, or build on top of it, I would love to see what you do with it. I am especially interested in hearing what you would change in the learning flow, the validation model, or the AI workflow.&lt;/p&gt;

&lt;p&gt;How would you design a beginner coding product today: should AI be a guide, a reviewer, or mostly stay out of the way until the learner gets stuck?&lt;/p&gt;

&lt;p&gt;As a beginner, what resources are you using today to learn how to code?&lt;/p&gt;

&lt;p&gt;For experienced coders, what resources would you recommend to beginners learning to code today?&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>opensource</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Don’t let AI do your thinking: a practical guide for engineers</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Thu, 16 Apr 2026 10:59:58 +0000</pubDate>
      <link>https://forem.com/javz/dont-let-ai-do-your-thinking-a-practical-guide-for-engineers-58e0</link>
      <guid>https://forem.com/javz/dont-let-ai-do-your-thinking-a-practical-guide-for-engineers-58e0</guid>
      <description>&lt;p&gt;&lt;strong&gt;I designed a "Thinking Guide" for engineers building with AI. And looking for your feedback.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’re entering a new era of software engineering.&lt;/p&gt;

&lt;p&gt;Code can now be generated instantly. Entire functions, components, even systems can be scaffolded in seconds.&lt;/p&gt;

&lt;p&gt;This is a massive opportunity.&lt;/p&gt;

&lt;p&gt;But there’s a subtle tradeoff I’ve been thinking a lot about lately:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When execution becomes easier, thinking can quietly decrease.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because we’re less capable, but because many of the moments that used to force us to think - debugging, struggling, reasoning - are now compressed or skipped.&lt;/p&gt;

&lt;p&gt;You can ship faster than ever.&lt;br&gt;&lt;br&gt;
But speed alone does not build understanding.&lt;/p&gt;



&lt;p&gt;Several studies suggest that heavy reliance on AI tools can reduce cognitive effort, weaken critical thinking, and impair long‑term learning, which are all forms of cognitive offloading.&lt;/p&gt;

&lt;p&gt;A recent experimental learning study reported in Psychology Today (“Cognitive Offloading: Using AI Reduces New Skill Formation”) showed that learners who relied heavily on AI while acquiring a complex skill (e.g., coding assistance) formed substantially fewer new skills than those who completed the same tasks without AI. The authors conclude that when tasks are done with the goal of learning, offloading key steps to AI “considerably reduces” skill formation and recommend delaying AI support until a solid base of independent proficiency is built.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The takeaway isn’t to avoid AI. It’s to use it in a way that keeps you thinking, rather than replace your thinking.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Why I wrote this guide
&lt;/h2&gt;

&lt;p&gt;Over the past few years, I went from a graduate with no experience to a senior software engineer in 5 years, while also building and launching my own projects.&lt;/p&gt;

&lt;p&gt;One thing I realized along the way:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Growth didn’t come from writing more code.&lt;br&gt;&lt;br&gt;
It came from reflecting on the code I wrote.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After debugging an issue, what signal led me to the root cause?&lt;br&gt;&lt;br&gt;
After designing a system, what trade-offs did I make?&lt;br&gt;&lt;br&gt;
After using AI, did I actually understand what was generated?&lt;/p&gt;

&lt;p&gt;So I started building small reflection habits around my work.&lt;/p&gt;

&lt;p&gt;Over time, this turned into a structured system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I recently turned that system into a guide:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;"Thinking in the Age of AI"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;br&gt;
&lt;strong&gt;Help engineers keep developing their judgment and intuition while using AI tools.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  How to use the guide
&lt;/h2&gt;

&lt;p&gt;This isn’t meant to be read once and forgotten.&lt;/p&gt;

&lt;p&gt;It’s designed to be used in small moments during your workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most exercises take 2–5 minutes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;15 exercises in total.&lt;/p&gt;

&lt;p&gt;You don’t need to use everything. Just start by picking one tool and applying it consistently.&lt;/p&gt;

&lt;p&gt;The idea is not to reflect more.&lt;br&gt;
But to reflect deliberately.&lt;/p&gt;


&lt;h2&gt;
  
  
  Example 1 — AI Dependency Detector
&lt;/h2&gt;

&lt;p&gt;One of the tools in the guide is a quick and effective assessment on whether AI strengthening your thinking, or replacing it.&lt;/p&gt;

&lt;p&gt;Here is the full exercise extracted from the guide:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Part 1 — Quick Self-Assessment

For each statement, check the box if it applies to you frequently.
☐ I use AI before attempting to think through the problem myself.
☐ I paste AI-generated code without fully reading it.
☐ I struggle to explain AI-generated solutions afterward.
☐ I rely on AI for problems I previously could solve independently.
☐ I rarely rewrite AI-generated code in my own style.
☐ I feel uncomfortable solving similar problems without AI.
☐ I accept AI solutions even when I do not fully understand them.
☐ I use AI to avoid difficult cognitive effort.

Interpreting Your Results

0–2 boxes checked → AI is likely accelerating your thinking. 
3–5 boxes checked → Monitor usage and reintroduce friction. 
6+ boxes checked → Consider temporarily increasing independent problem-solving time.

Part 2 — Dependency Signals

Reflect on the following questions:

When AI is unavailable, how confident would I feel solving similar problems?

1 — Not confident 2 — Somewhat unsure 3 — Neutral 4 — Confident 5 — Fully confident

Circle one: 1 2 3 4 5

Have my independent debugging skills improved, stayed the same, or declined over the past months?

☐ Improved ☐ Stayed the same ☐ Declined

If I removed AI from my workflow tomorrow, what would weaken first?

_____________________________________________________________________

Part 3 — Cognitive Strength Check

Complete this short test after using AI:

Without looking at the code:

• Can I describe the logic step by step? 
• Can I identify edge cases? 
• Can I reason about time/space complexity? 
• Can I modify the solution confidently?

If you answered “no” to multiple items, this is not failure, it is a signal.

Part 4 — Adjustment Plan

If you notice rising dependency, choose one corrective action:

☐ Attempt solutions yourself for 5–10 minutes before using AI 
☐ Rewrite AI-generated code in my own words 
☐ Explain the solution aloud after generating it 
☐ Use AI only after defining constraints clearly 
☐ Limit AI use for certain categories (e.g., debugging)

Write one commitment for your next session:
_____________________________________________________________________
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Example 2 — Reflection Prompt Cards
&lt;/h2&gt;

&lt;p&gt;I also created a set of &lt;strong&gt;prompt cards&lt;/strong&gt; organized by engineering themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;system design
&lt;/li&gt;
&lt;li&gt;debugging / incidents
&lt;/li&gt;
&lt;li&gt;learning
&lt;/li&gt;
&lt;li&gt;promotion / impact
&lt;/li&gt;
&lt;li&gt;AI usage
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I printed them out and keep them on my desk when building products so that I can ask myself the right questions along the way.&lt;/p&gt;

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

&lt;p&gt;Whenever I’m working, I can pull a relevant card and quickly reflect.&lt;/p&gt;

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

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What trade-offs did I consciously make here?"
&lt;/li&gt;
&lt;li&gt;"What signal led me to the root cause?"
&lt;/li&gt;
&lt;li&gt;"What would I do differently if I had to rebuild this from scratch?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These small questions compound over time and build intuitions.&lt;/p&gt;




&lt;h2&gt;
  
  
  I’m now sharing this guide for feedback
&lt;/h2&gt;

&lt;p&gt;If you’re curious, I’ve put the guide here:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://javz.gumroad.com/l/thinking-in-the-age-of-ai" rel="noopener noreferrer"&gt;https://javz.gumroad.com/l/thinking-in-the-age-of-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can grab it for free (just set the price to 0).&lt;br&gt;
If it ends up being useful, feel free to support so I can keep investing my time in creating resources to help engineers, totally optional of course. &lt;/p&gt;

&lt;p&gt;Mainly looking to get feedback from other engineers.&lt;/p&gt;

&lt;p&gt;Would especially appreciate feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which exercises feel useful vs unnecessary
&lt;/li&gt;
&lt;li&gt;what feels missing
&lt;/li&gt;
&lt;li&gt;how this fits into your actual workflow
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Curious how others approach this
&lt;/h2&gt;

&lt;p&gt;I’d also love to hear from other devs here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you make sure your thinking keeps up with AI tools?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do you have any habits or systems in place?&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;AI can generate code.&lt;/p&gt;

&lt;p&gt;But the engineers who will stand out are the ones who continue to think deeply while using it.&lt;/p&gt;

&lt;p&gt;That’s what I’m trying to build here. This guide is helping me, I hope it can help you too along your journey as a dev.&lt;/p&gt;

&lt;p&gt;Curious to hear your thoughts!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Turn Your Laptop Into an AI Agent (Free OpenClaw + Telegram Setup)</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Mon, 13 Apr 2026 12:48:52 +0000</pubDate>
      <link>https://forem.com/javz/turn-your-laptop-into-an-ai-agent-free-openclaw-telegram-setup-296f</link>
      <guid>https://forem.com/javz/turn-your-laptop-into-an-ai-agent-free-openclaw-telegram-setup-296f</guid>
      <description>&lt;p&gt;I have been following the developments of Openclaw and hadn't properly played around with it until now. The FOMO was too strong so I decided to experiment with it in a very low stakes context and share this experiment with you.&lt;/p&gt;

&lt;p&gt;No APIs. No subscriptions. Just my machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setting the scene
&lt;/h2&gt;

&lt;p&gt;For those living under a rock these past months, let's start with defining what Openclaw is. &lt;br&gt;
Only kidding, if you don't know what Openclaw is that's totally fine, things move fast these days and it's hard to keep up with everything. If you already know what Openclaw is, here is a refresher:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenClaw is a local AI agent runtime that connects LLMs to real-world tools, channels (like Telegram), and automation, letting you build autonomous, personalized AI systems that run on your own machine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Openclaw is seen as revolutionary because &lt;strong&gt;it turns an LLM into a programmable system, not just a chatbot&lt;/strong&gt; through agents, tool integrations, automations, native channels etc.&lt;/p&gt;

&lt;p&gt;Now that we understand what we are working with, let's set some goals, a target architecture and structure for this tutorial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My goals for this experiment:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Become familiar with the basics of OpenClaw ✅&lt;/li&gt;
&lt;li&gt;Free setup for low stakes experimentation ✅&lt;/li&gt;
&lt;li&gt;Local models only ✅&lt;/li&gt;
&lt;li&gt;Isolation via VM for security ✅&lt;/li&gt;
&lt;li&gt;Share this experiment in public to share knowledge ✅&lt;/li&gt;
&lt;li&gt;Have fun and learn something new ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The flow for this tutorial:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User in Telegram
   ↓
Telegram bot/channel
   ↓
OpenClaw native Telegram channel
   ↓
bookbot agent
   ↓
Ollama on host Mac
   ↓
Mistral
   ↓
Response sent back to Telegram
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Architecture diagram:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                           ┌──────────────────────────┐
                           │       Telegram App       │
                           │     (user messages)      │
                           └────────────┬─────────────┘
                                        │
                                        │ native Telegram channel
                                        ▼
                    ┌──────────────────────────────────────────┐
                    │          OpenClaw Gateway (VM)           │
                    │                                          │
                    │  Ubuntu VM in UTM                        │
                    │  - OpenClaw                              │
                    │  - native Telegram integration           │
                    │  - bookbot agent                         │
                    │  - cron / scheduling experiments         │
                    └────────────┬─────────────────────────────┘
                                 │
                                 │ model requests
                                 ▼
                 ┌────────────────────────────────────┐
                 │      Ollama on macOS host          │
                 │                                    │
                 │  - local runtime                   │
                 │  - mistral:latest                  │
                 │  - exposed to VM via local IP      │
                 └────────────┬───────────────────────┘
                              │
                              │ local inference
                              ▼
                 ┌────────────────────────────────────┐
                 │       Open source local model      │
                 │            (Mistral 7B)            │
                 └────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Having the model run on macOS keeps it fast, while having the agent logic inside the VM isolates it for better security:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────────────┐
│                        MacBook Pro (host)                      │
│                                                                 │
│  ┌──────────────────────────────┐   ┌─────────────────────────┐ │
│  │   Ollama                     │   │   UTM                   │ │
│  │   - mistral:latest          │   │   Ubuntu VM             │ │
│  │   - OLLAMA_HOST=0.0.0.0     │   │   - OpenClaw            │ │
│  │   - port 11434              │   │   - Telegram channel    │ │
│  └───────────────┬──────────────┘   │   - bookbot agent       │ │
│                  │                  └──────────┬──────────────┘ │
│                  └──────── local network ──────┘                │
└─────────────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Resources used:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM: 6GB RAM, 50GB disk&lt;/li&gt;
&lt;li&gt;Host for Ollama: 6–8GB free RAM + ~15GB disk (model + cache)&lt;/li&gt;
&lt;li&gt;Extra disk buffer: ~10GB&lt;/li&gt;
&lt;li&gt;Model: one local 7B model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Model choice -&amp;gt; Mistral:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low memory (~5GB in Ollama)&lt;/li&gt;
&lt;li&gt;Fast on Apple Silicon&lt;/li&gt;
&lt;li&gt;Stable for agent loops&lt;/li&gt;
&lt;li&gt;Good enough reasoning + coding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inside VM:

&lt;ul&gt;
&lt;li&gt;No shared folders initially&lt;/li&gt;
&lt;li&gt;No SSH keys mounted&lt;/li&gt;
&lt;li&gt;Use limited permissions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Between VM ↔ host:

&lt;ul&gt;
&lt;li&gt;Only expose Ollama port (11434)&lt;/li&gt;
&lt;li&gt;Restrict to localhost&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;I am being conservative here with the setup to avoid my machine crashing while working on my everyday tasks, i.e. having browser tabs and other apps running in parallel. &lt;/p&gt;

&lt;p&gt;However feel free to tweak this setup according to your own preferences and resources available. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For reference, I am running this experiment on my Macbook Pro M4 24GB RAM 1TB SSD.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's begin!&lt;/p&gt;




&lt;h2&gt;
  
  
  Optimising available resources
&lt;/h2&gt;

&lt;p&gt;Before starting on the actual Openclaw setup, I wanted to optimise my local resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Free SSD space
&lt;/h3&gt;

&lt;p&gt;I personally found some applications I could easily delete to free up storage. I took advantage of this to do a spring clean and freed up plenty enough space!&lt;/p&gt;

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

&lt;h3&gt;
  
  
  2. Free RAM
&lt;/h3&gt;

&lt;p&gt;Check Activity Monitor&lt;/p&gt;

&lt;p&gt;My setup wasn't ideal.&lt;/p&gt;

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

&lt;p&gt;Chrome was the biggest culprit! &lt;/p&gt;

&lt;p&gt;Some tips to help reduce memory usage by Chrome:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome → Settings → Performance → Turn on Memory Saver&lt;/li&gt;
&lt;li&gt;Kill tabs - Keep &amp;lt;10 active tabs&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove inactive extensions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quit background apps you aren't actively using&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clear cache. Recommended to do this occasionally (monthly or before heavy workloads)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart Mac to clear any memory leaks&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By following these steps, I optimised used memory by roughly 4 GB.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Install tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install Ollama (on host)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ollama
ollama serve
ollama pull mistral

&lt;span class="c"&gt;# test&lt;/span&gt;
ollama run mistral
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Setup VM

&lt;ul&gt;
&lt;li&gt;Install UTM&lt;/li&gt;
&lt;li&gt;Download Ubuntu ARM64 (downloading via the UTM Gallery worked for me)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Set the correct resources
Memory: 6144 MiB (6GB)
CPU: 4 cores&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start the VM&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone OpenClaw and install pre-dependencies (in VM)&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; git curl build-essential

curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;NVM_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.nvm"&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$NVM_DIR&lt;/span&gt;&lt;span class="s2"&gt;/nvm.sh"&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;22
nvm use 22
node &lt;span class="nt"&gt;-v&lt;/span&gt;
npm &lt;span class="nt"&gt;-v&lt;/span&gt;

corepack &lt;span class="nb"&gt;enable
&lt;/span&gt;corepack prepare pnpm@latest &lt;span class="nt"&gt;--activate&lt;/span&gt;
pnpm &lt;span class="nt"&gt;-v&lt;/span&gt;

git clone https://github.com/openclaw/openclaw.git
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/openclaw

pnpm &lt;span class="nb"&gt;install
&lt;/span&gt;pnpm build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Install OpenClaw
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Find Mac IP and set in Ollama base URL during Openclaw onboarding&lt;/span&gt;
&lt;span class="c"&gt;# run cmd below in terminal on host&lt;/span&gt;
ifconfig | &lt;span class="nb"&gt;grep &lt;/span&gt;inet
&lt;span class="c"&gt;# look for something like: `192.168.x.x`&lt;/span&gt;

pnpm openclaw onboard &lt;span class="nt"&gt;--install-daemon&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During onboarding select:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quickstart&lt;/li&gt;
&lt;li&gt;Model: Ollama &lt;/li&gt;
&lt;li&gt;Ollama base URL: &lt;a href="http://INSERT_YOUR_MAC_IP:11434" rel="noopener noreferrer"&gt;http://INSERT_YOUR_MAC_IP:11434&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Ollama mode: Local&lt;/li&gt;
&lt;li&gt;Default model: ollama/mistral:latest&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skip the rest of the remaining steps for now: channels, search providers, skills, hooks, hatch mode.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Test it manually after installation
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw agent &lt;span class="nt"&gt;--agent&lt;/span&gt; main &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Say hello in one sentence."&lt;/span&gt; &lt;span class="nt"&gt;--thinking&lt;/span&gt; low
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should work and you get a response back from the agent!&lt;/p&gt;

&lt;p&gt;The OpenClaw dashboard is useful to monitor for statuses and logs. You can access it on port 18789.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Install the Telegram app on your device and create your bot using &lt;code&gt;@BotFather&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/start
/newbot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the new bot is created BotFather will provide you with a bot token. Keep it safe as we will need it for later when configuring Openclaw.&lt;/p&gt;




&lt;h2&gt;
  
  
  Configure the experiment
&lt;/h2&gt;

&lt;p&gt;From this point on, I will proceed with my own business logic for OpenBooks. But feel free to implement the business logic for your own application.&lt;/p&gt;

&lt;p&gt;Need inspiration for your own experiments? &lt;br&gt;
This useful github repo showcases many potential implementations made possible with Openclaw: &lt;a href="https://github.com/hesamsheikh/awesome-openclaw-usecases" rel="noopener noreferrer"&gt;https://github.com/hesamsheikh/awesome-openclaw-usecases&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 1 — Configure native Telegram channel
&lt;/h4&gt;

&lt;p&gt;Now that OpenClaw is installed and your bot is created via &lt;code&gt;@BotFather&lt;/code&gt;, let’s connect Telegram.&lt;/p&gt;

&lt;p&gt;Add your Telegram bot to your Openclaw config:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="s2"&gt;"channels"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"telegram"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"enabled"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
    &lt;span class="s2"&gt;"botToken"&lt;/span&gt;: &lt;span class="s2"&gt;"INSERT_YOUR_BOT_TOKEN"&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw gateway restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Send a message to your bot in Telegram. You should now get a response from OpenClaw.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2 — Create BookBot agent + workspace
&lt;/h4&gt;

&lt;p&gt;Instead of using the default &lt;code&gt;main&lt;/code&gt; agent, we create a dedicated agent for our experiment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw agents add bookbot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bind Telegram to this agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw agents &lt;span class="nb"&gt;bind&lt;/span&gt; &lt;span class="nt"&gt;--agent&lt;/span&gt; bookbot &lt;span class="nt"&gt;--bind&lt;/span&gt; telegram
pnpm openclaw agents bindings

&lt;span class="c"&gt;# You should see: bookbot &amp;lt;- telegram&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now configure the agent behavior via its workspace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SOUL.md&lt;/span&gt;

You are BookBot.

You are a Telegram book recommendation assistant.

Recommend 3 books in this format:

📚 Recommendations
&lt;span class="p"&gt;
1.&lt;/span&gt; Title — Author  
Why: short reason  
&lt;span class="p"&gt;
2.&lt;/span&gt; Title — Author  
Why: short reason  
&lt;span class="p"&gt;
3.&lt;/span&gt; Title — Author  
Why: short reason  

Rules:
&lt;span class="p"&gt;-&lt;/span&gt; No long intro
&lt;span class="p"&gt;-&lt;/span&gt; No tool descriptions
&lt;span class="p"&gt;-&lt;/span&gt; Keep it concise
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# AGENTS.md&lt;/span&gt;

Interpret the following as recommendation requests:
&lt;span class="p"&gt;
-&lt;/span&gt; recommend me a book
&lt;span class="p"&gt;-&lt;/span&gt; what should I read next
&lt;span class="p"&gt;-&lt;/span&gt; books for developers
&lt;span class="p"&gt;-&lt;/span&gt; books like [X]

If the request is clear → recommend 3 books  
If vague → ask 1 short clarifying question
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the gateway and test in Telegram:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recommend 3 books for software engineers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;h4&gt;
  
  
  Step 3 — Test scheduling (simple cron)
&lt;/h4&gt;

&lt;p&gt;Before doing anything complex, let’s just prove scheduling works.&lt;/p&gt;

&lt;p&gt;Create a one-shot reminder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw cron add &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"Test reminder"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--at&lt;/span&gt; &lt;span class="s2"&gt;"10m"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"📚 Reading reminder: ask BookBot for recommendations!"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--announce&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--channel&lt;/span&gt; telegram &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--to&lt;/span&gt; &lt;span class="s2"&gt;"INSERT_YOUR_CHAT_ID"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List jobs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw cron list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw cron run &amp;lt;JOB_ID&amp;gt;

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

&lt;/div&gt;



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

&lt;p&gt;You should receive a Telegram message confirming that cron works!&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4 — Daily recurring cron job
&lt;/h4&gt;

&lt;p&gt;Now convert this into a daily habit (adapt to your tz)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw cron add &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"Daily reading reminder"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--cron&lt;/span&gt; &lt;span class="s2"&gt;"0 9 * * *"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--tz&lt;/span&gt; &lt;span class="s2"&gt;"America/Toronto"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"📚 Daily reminder: ask BookBot for 3 new book recommendations."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--announce&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--channel&lt;/span&gt; telegram &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--to&lt;/span&gt; &lt;span class="s2"&gt;"INSERT_YOUR_CHAT_ID"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm openclaw cron run &amp;lt;JOB_ID&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎉 We are done! &lt;/p&gt;

&lt;p&gt;You now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a local AI agent&lt;/li&gt;
&lt;li&gt;connected to Telegram&lt;/li&gt;
&lt;li&gt;powered by a local model&lt;/li&gt;
&lt;li&gt;with daily automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All running on your own machine, for free.&lt;/p&gt;




&lt;h2&gt;
  
  
  Start and stop the experiment
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; the setup runs locally, meaning that if your machine or VM shuts off then Openclaw will stop working.&lt;/p&gt;

&lt;p&gt;Here are some tips to avoid this:&lt;/p&gt;

&lt;p&gt;On host:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;caffeinate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prevent VM from going to sleep by disabling systemd sleep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start Openclaw agent &amp;amp; detach using tmux (in VM):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; tmux

tmux new &lt;span class="nt"&gt;-s&lt;/span&gt; openclaw

&lt;span class="nb"&gt;cd&lt;/span&gt; ~/openclaw
openclaw gateway start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press CTRL + B, then D to detach&lt;/p&gt;

&lt;p&gt;Stop Openclaw agent (in VM):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;tmux attach &lt;span class="nt"&gt;-t&lt;/span&gt; openclaw
openclaw gateway stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On your host don't forget to stop serving the model via Ollama and shut off your VM when not in use to free resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To avoid unnecessary model calls and background noise, and if there is no explicit need for it, I would recommend disabling the heartbeat via the OpenClaw config and relying on an explicit cron job:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"heartbeat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"every"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0m"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Move from model-driven skills to tool-dispatched skills so they bypass the model and call a deterministic local tool instead. This improves accuracy of outputs. Getting deterministic outputs felt like a struggle with OpenClaw in general, this helps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a dedicated agent + routing binding vs hijacking main agent for more specific logic&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Glossary of OpenClaw commands I found useful
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Gateway&lt;/span&gt;
pnpm openclaw gateway start
pnpm openclaw gateway restart

&lt;span class="c"&gt;# Agents&lt;/span&gt;
pnpm openclaw agents add bookbot
pnpm openclaw agents &lt;span class="nb"&gt;bind&lt;/span&gt; &lt;span class="nt"&gt;--agent&lt;/span&gt; &amp;lt;AGENT&amp;gt; &lt;span class="nt"&gt;--bind&lt;/span&gt; &amp;lt;CHANNEL&amp;gt;
pnpm openclaw agents bindings

&lt;span class="c"&gt;# Cron&lt;/span&gt;
pnpm openclaw cron add ...
pnpm openclaw cron list
pnpm openclaw cron run &amp;lt;JOB_ID&amp;gt;

&lt;span class="c"&gt;# Debugging&lt;/span&gt;
journalctl &lt;span class="nt"&gt;--user&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; openclaw-gateway.service &lt;span class="nt"&gt;-f&lt;/span&gt;
pnpm openclaw doctor &lt;span class="nt"&gt;--fix&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Future improvements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Improve functionalities, add memory capability to unlock insights&lt;br&gt;
“Compare this book to the last 3 books I read”&lt;br&gt;
“Turn my reading history into themes and recommendations”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consider a hybrid strategy where the setup is less resource intense during day as I work in parallel on manual tasks, but more resource intense and high performance at night while I am asleep for longer experiments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Discussions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What are you using Openclaw for?&lt;/li&gt;
&lt;li&gt;What does your setup look like?&lt;/li&gt;
&lt;li&gt;Any tips/hacks with Openclaw to share? I have only started exploring this tool :)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;🦞 Thanks for following along, I hope you enjoyed this tutorial! 🦞&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Standup Chaos Simulator</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Fri, 10 Apr 2026 16:12:44 +0000</pubDate>
      <link>https://forem.com/javz/the-standup-chaos-simulator-1ch8</link>
      <guid>https://forem.com/javz/the-standup-chaos-simulator-1ch8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Most of us have sat in standups that somehow consumed time, generated stress, and produced zero meaningful decisions. So I decided to make a useless app to remember these moments in all their chaos and glory.&lt;/p&gt;

&lt;p&gt;Behold &lt;strong&gt;Standup Chaos Simulator&lt;/strong&gt;, a web app that generates chaotic developer standups in a chat UI.&lt;/p&gt;

&lt;p&gt;Pick your team.&lt;/p&gt;

&lt;p&gt;Assign roles.&lt;/p&gt;

&lt;p&gt;Choose how doomed the sprint is.&lt;/p&gt;

&lt;p&gt;Select extra chaos events.&lt;/p&gt;

&lt;p&gt;Watch the meeting unfold message by message like a live team sync that should probably have been async.&lt;/p&gt;

&lt;p&gt;Once the fake standup finishes, the app gives you a Team Dysfunction Meter, lets you copy the transcript, and exports the whole thing as a shareable GIF.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://standup-chaos-simulator.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;standup-chaos-simulator.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


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

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/JulienAvezou/standup-chaos-simulator" rel="noopener noreferrer"&gt;https://github.com/JulienAvezou/standup-chaos-simulator&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;html2canvas&lt;/li&gt;
&lt;li&gt;gif.js&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No backend, no database, no auth, no LLM calls.&lt;/p&gt;

&lt;p&gt;I used Codex as my coding assistant for this project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Community Favorite&lt;/strong&gt; - many of us share the pain of standups :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't be late for standup!
&lt;/h2&gt;

&lt;p&gt;Drop your most chaotic standup GIF in the comments.&lt;/p&gt;

&lt;p&gt;Any missing features you would like to add to generate even more chaos? &lt;/p&gt;

&lt;p&gt;And if you have any stories to share about your most memorable standup moments, I would love to hear them!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Building a coding course generator in public #1: The problem with learning to code today</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Tue, 31 Mar 2026 13:32:09 +0000</pubDate>
      <link>https://forem.com/javz/building-a-coding-course-generator-in-public-1-the-problem-with-learning-to-code-today-2pm7</link>
      <guid>https://forem.com/javz/building-a-coding-course-generator-in-public-1-the-problem-with-learning-to-code-today-2pm7</guid>
      <description>&lt;p&gt;If I had to learn how to code today from scratch, I’m not sure I would learn it properly.&lt;/p&gt;

&lt;p&gt;Not because there aren’t enough resources.&lt;/p&gt;

&lt;p&gt;But because there are too many shortcuts.&lt;/p&gt;

&lt;p&gt;With AI tools everywhere, it’s never been easier to build apps without fully understanding what’s happening under the hood.&lt;/p&gt;

&lt;p&gt;And honestly… that’s very tempting!&lt;/p&gt;




&lt;h3&gt;
  
  
  How I learned to code
&lt;/h3&gt;

&lt;p&gt;My path was much more traditional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I started with a bootcamp to learn fundamentals&lt;/li&gt;
&lt;li&gt;Then I built projects to apply what I learned&lt;/li&gt;
&lt;li&gt;Then I gained real-world experience in a company&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first two steps were what got me my first job.&lt;/p&gt;

&lt;p&gt;They gave me something more valuable than just code:&lt;br&gt;
&lt;strong&gt;intuition, structure, and confidence.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  The problem today
&lt;/h3&gt;

&lt;p&gt;Learning to code today often falls into two extremes:&lt;/p&gt;

&lt;p&gt;Too theoretical → you get stuck in tutorials&lt;br&gt;
Too shallow → you ship things without understanding them&lt;/p&gt;

&lt;p&gt;AI has amplified the second path.&lt;/p&gt;

&lt;p&gt;You can now build fast…&lt;br&gt;
but you might hit a wall later when things break, scale, or need to evolve.&lt;/p&gt;




&lt;h3&gt;
  
  
  My idea
&lt;/h3&gt;

&lt;p&gt;So I decided to build something to explore this problem:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;A course generator that teaches coding&lt;/strong&gt; through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hands-on project building&lt;/li&gt;
&lt;li&gt;coding fundamentals&lt;/li&gt;
&lt;li&gt;best practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not theory-heavy.&lt;br&gt;
Not AI shortcut-heavy.&lt;br&gt;
But something in between.&lt;/p&gt;




&lt;h3&gt;
  
  
  Building in public
&lt;/h3&gt;

&lt;p&gt;Over the next few weeks, I’ll be sharing this journey publicly.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;experiment&lt;/li&gt;
&lt;li&gt;learn&lt;/li&gt;
&lt;li&gt;share everything along the way&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also plan to &lt;strong&gt;open-source the app&lt;/strong&gt; once it’s ready so anyone can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run it locally&lt;/li&gt;
&lt;li&gt;learn from it&lt;/li&gt;
&lt;li&gt;build on top of it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are no monetization plans or intentions here, this is purely an experiment.&lt;/p&gt;




&lt;h3&gt;
  
  
  Some interesting statistics
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AI is making building software more accessible than ever.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;180M+ developers on GitHub with 36M new developers joining yearly.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;63% of Vibe Coders are Non-Developers.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Emerging concerns in Vibe Coding highlight that 40% of junior developers admit to deploying AI-generated code they don't fully understand.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Stack Overflow’s 2024 survey finds 82% of developers use online resources as a primary way to learn.&lt;/strong&gt;&lt;/p&gt;

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




&lt;h3&gt;
  
  
  Why this matters (to me)
&lt;/h3&gt;

&lt;p&gt;I believe we’re entering a phase where:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bottleneck is no longer building…&lt;br&gt;
it’s understanding what you built&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that’s where fundamentals and best practices still matter.&lt;/p&gt;

&lt;p&gt;My goal is to help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;self-taught developers&lt;/li&gt;
&lt;li&gt;AI-assisted builders&lt;/li&gt;
&lt;li&gt;beginners who want to go beyond “vibe coding”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…develop stronger engineering intuition and build more sustainable products.&lt;/p&gt;




&lt;h3&gt;
  
  
  What’s next
&lt;/h3&gt;

&lt;p&gt;In the next post, I’ll dive into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the technical setup&lt;/li&gt;
&lt;li&gt;early architecture decisions&lt;/li&gt;
&lt;li&gt;constraints for keeping this lightweight and accessible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a sneak peek of the home page in the meantime! &lt;/p&gt;

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




&lt;h3&gt;
  
  
  Discussion
&lt;/h3&gt;

&lt;p&gt;I’d love to hear your perspective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How are you currently learning or improving your coding skills?&lt;/li&gt;
&lt;li&gt;What’s your setup when building with AI tools?&lt;/li&gt;
&lt;li&gt;Would you use something like this? Why or why not?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Data Sources: GitHub Octoverse 2025, Gartner, JetBrains Developer Ecosystem, Course Report, Second Talent Vibe Coding Statistics, McKinsey AI Survey. Report generated with Perplexity on March 18, 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>beginners</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Why hiring junior developers pays off more than you think (I’ve lived it firsthand)</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Wed, 25 Mar 2026 12:56:27 +0000</pubDate>
      <link>https://forem.com/javz/why-hiring-junior-developers-pays-off-more-than-you-think-ive-lived-it-firsthand-1lg2</link>
      <guid>https://forem.com/javz/why-hiring-junior-developers-pays-off-more-than-you-think-ive-lived-it-firsthand-1lg2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Echoes of Experience&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A trip down memory lane
&lt;/h3&gt;

&lt;p&gt;I still remember my final interview.&lt;/p&gt;

&lt;p&gt;It wasn’t a coding challenge or another algorithm question.&lt;/p&gt;

&lt;p&gt;It was just a conversation.&lt;/p&gt;

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

&lt;p&gt;We talked about my background in business and finance.&lt;br&gt;
The internships I had done.&lt;br&gt;
The projects I had built, including a drone media company and a project management app I had sold to an architecture firm in Belgium.&lt;br&gt;
My short experience as a product manager in a startup.&lt;/p&gt;

&lt;p&gt;Compared to the previous rounds that were full of logical tests, coding exercises, and pair programming, this one felt different.&lt;/p&gt;

&lt;p&gt;I wasn’t trying to prove I could code but just talking about my life.&lt;br&gt;
I was showing how I think, how I learn, and how I approach problems through my past experiences.&lt;/p&gt;

&lt;p&gt;A week later, I got the offer.&lt;/p&gt;

&lt;p&gt;Not for a standard role, but for an engineering graduate program.&lt;/p&gt;

&lt;p&gt;And looking back, that moment changed everything...&lt;/p&gt;




&lt;h3&gt;
  
  
  The fast track wasn’t accidental
&lt;/h3&gt;

&lt;p&gt;I went from coding bootcamp to senior software engineer in just over 5 years.&lt;/p&gt;

&lt;p&gt;I worked hard.&lt;br&gt;
I built side projects.&lt;br&gt;
I kept learning constantly and found great mentors.&lt;/p&gt;

&lt;p&gt;But the biggest accelerator early on?&lt;/p&gt;

&lt;p&gt;The structure and exposure from that graduate program.&lt;/p&gt;

&lt;p&gt;It gave me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;exposure to different teams and problem spaces&lt;/li&gt;
&lt;li&gt;hands-on experience across technologies&lt;/li&gt;
&lt;li&gt;a safe environment to learn fast and make mistakes&lt;/li&gt;
&lt;li&gt;a cohort of peers growing at the same pace&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over the following years, I noticed something interesting.&lt;/p&gt;

&lt;p&gt;Many of the highest-performing engineers in the company came from that same graduate track.&lt;/p&gt;

&lt;p&gt;Not just technically, but in how they contributed to culture, collaboration, and leadership.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why junior engineers outperform (when given the chance)
&lt;/h3&gt;

&lt;p&gt;From what I observed, graduate engineers tend to overperform for a few key reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;They’re hungry&lt;/strong&gt;&lt;br&gt;
We were eager to prove ourselves. Every task mattered.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;They learn fast&lt;/strong&gt;&lt;br&gt;
Coming from bootcamps or self-taught paths, learning was already part of our identity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;They bring different perspectives&lt;/strong&gt;&lt;br&gt;
Many of us didn’t come from traditional CS backgrounds.&lt;br&gt;
We approached problems more practically, often with product or user context in mind.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That mix created strong synergies within teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;theoretical depth from experienced engineers&lt;/li&gt;
&lt;li&gt;practical execution and fresh thinking from juniors&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  And the ROI for companies is real
&lt;/h3&gt;

&lt;p&gt;Investing in junior developers is a healthy strategy.&lt;/p&gt;

&lt;p&gt;Here’s what I saw:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;High employee retention&lt;/strong&gt;&lt;br&gt;
When a company invests in you early, you stay. Trust goes both ways.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stronger leadership pipeline&lt;/strong&gt;&lt;br&gt;
Training juniors forces senior engineers to mentor and that builds leadership skills fast.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;More diversity in hiring&lt;/strong&gt;&lt;br&gt;
In my experience, graduate programs brought in more women and more diverse backgrounds than traditional hiring pipelines.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stronger engineering culture&lt;/strong&gt;&lt;br&gt;
A company known for growing talent attracts better people over time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  What helped me go from junior to senior
&lt;/h3&gt;

&lt;p&gt;On a more personal level, here are a few learnings that made a big difference for me in the last years:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Leverage your non-technical strengths&lt;/strong&gt;&lt;br&gt;
My background in business and product helped me early on.&lt;br&gt;
I contributed through communication, organization, and initiative, not just code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adopt a T-shaped development approach&lt;/strong&gt;&lt;br&gt;
Go deep in one area, but stay curious across others.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be visible&lt;/strong&gt;&lt;br&gt;
Share your work. Communicate progress. Talk about impact.&lt;br&gt;
Silence slows your growth.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Document your journey&lt;/strong&gt;&lt;br&gt;
I kept a developer journal to track what I learned and achieved.&lt;br&gt;
This helped massively with confidence, reflection and arguing my case at promotion rounds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build relationships&lt;/strong&gt;&lt;br&gt;
Inside and outside of work. Your network compounds just like your skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Get involved beyond your team&lt;/strong&gt;&lt;br&gt;
During my time at the company I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spoke at internal conferences&lt;/li&gt;
&lt;li&gt;contributed to the engineering blog&lt;/li&gt;
&lt;li&gt;joined hackathons&lt;/li&gt;
&lt;li&gt;participated in threat modeling sessions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  The human side of growth
&lt;/h3&gt;

&lt;p&gt;When I left the company, what struck me the most wasn’t the projects, nor the crazy amount of merch I had accumulated over the years...&lt;/p&gt;

&lt;p&gt;It was the people.&lt;/p&gt;

&lt;p&gt;At my farewell drinks, many of those who showed up were from my original graduate cohort.&lt;/p&gt;

&lt;p&gt;We had all grown not just as engineers, but as people.&lt;/p&gt;

&lt;p&gt;And that’s when it really hit me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real ROI of investing in juniors isn’t just technical output.&lt;br&gt;
It’s the humans you nurture and the culture you foster over time.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why I’m sharing this
&lt;/h3&gt;

&lt;p&gt;Two reasons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) For companies&lt;/strong&gt;&lt;br&gt;
Cutting junior roles because of AI-driven productivity gains is a short-term decision.&lt;/p&gt;

&lt;p&gt;From what I’ve witnessed, it’s a mistake.&lt;/p&gt;

&lt;p&gt;The long-term ROI of investing in junior engineers, especially through structured programs, is massive.&lt;/p&gt;

&lt;p&gt;And much of that value is human, not just technical.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) For those on non-traditional paths&lt;/strong&gt;&lt;br&gt;
If you’re coming from a bootcamp, self-taught journey, or an “irregular” background suffering from imposter syndrome:&lt;/p&gt;

&lt;p&gt;That’s not a weakness.&lt;br&gt;
It’s your edge.&lt;/p&gt;

&lt;p&gt;We live in a time where different perspectives are more valuable than ever.&lt;/p&gt;

&lt;p&gt;Lean into them. Keep building. Keep learning.&lt;/p&gt;




&lt;p&gt;None of this happens alone.&lt;/p&gt;

&lt;p&gt;This is also a &lt;strong&gt;thank you to everyone who helped me along the way&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mentors
&lt;/li&gt;
&lt;li&gt;managers
&lt;/li&gt;
&lt;li&gt;teammates
&lt;/li&gt;
&lt;li&gt;fellow builders
&lt;/li&gt;
&lt;li&gt;friends and family
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  💬 Discussion
&lt;/h3&gt;

&lt;p&gt;I’m curious to hear your thoughts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Have you seen junior developers outperform expectations in your teams?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are companies underinvesting in junior talent today?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How has AI changed (or not changed) the value of hiring juniors in your experience?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you’ve gone through a graduate program, did it accelerate your growth?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For senior engineers: how has mentoring juniors impacted your own development?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>wecoded</category>
      <category>dei</category>
      <category>career</category>
    </item>
    <item>
      <title>A 1-hour experiment: vibe-coding an app to break the ice at a networking event</title>
      <dc:creator>Julien Avezou</dc:creator>
      <pubDate>Fri, 20 Mar 2026 13:45:50 +0000</pubDate>
      <link>https://forem.com/javz/a-1-hour-experiment-vibe-coding-an-app-to-break-the-ice-at-a-networking-event-2721</link>
      <guid>https://forem.com/javz/a-1-hour-experiment-vibe-coding-an-app-to-break-the-ice-at-a-networking-event-2721</guid>
      <description>&lt;p&gt;It’s 5pm. My event starts in an hour.&lt;/p&gt;

&lt;p&gt;Plenty of time to build an app, right? &lt;/p&gt;




&lt;p&gt;I’m currently exploring a new project idea. Still early, still messy.&lt;/p&gt;

&lt;p&gt;One of the most common pieces of advice when building a product is to validate early by talking to potential users.&lt;/p&gt;

&lt;p&gt;So I thought: why not use this networking event to start?&lt;/p&gt;

&lt;p&gt;The problem is, walking up to people and asking them to answer questions about your idea can feel awkward.&lt;/p&gt;

&lt;p&gt;I wanted something lighter. Something that would make the interaction feel natural instead of forced.&lt;/p&gt;

&lt;p&gt;So I built a simple app.&lt;/p&gt;

&lt;p&gt;A spin-the-wheel game where people could either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;win a prize&lt;/li&gt;
&lt;li&gt;or answer a short survey&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may or may not have been slightly rigged 🤫&lt;/p&gt;

&lt;p&gt;But the goal wasn’t the prize.&lt;/p&gt;

&lt;p&gt;It was to create a moment.&lt;/p&gt;

&lt;p&gt;A small interaction that lowers the barrier, gets a smile, and opens the door to a real conversation.&lt;/p&gt;

&lt;p&gt;And surprisingly, it worked.&lt;/p&gt;

&lt;p&gt;It made approaching people easier, sparked a few genuinely interesting discussions, and helped me collect my first real signals on the idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quick technical setup
&lt;/h2&gt;

&lt;p&gt;I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT for ideation&lt;/li&gt;
&lt;li&gt;Codex for implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expo&lt;/li&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;React Navigation&lt;/li&gt;
&lt;li&gt;AsyncStorage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is me setting the content with Chat:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n8mjrfk1e0r9l8zil61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n8mjrfk1e0r9l8zil61.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the ideating, I find it useful to generate the prompts for Codex from Chat so I can just paste them over sequentially:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6vj7wll48fgnsj18n8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6vj7wll48fgnsj18n8t.png" alt=" " width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Then the implementation happens with Codex:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fmvu56v5zjt37ga0bae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fmvu56v5zjt37ga0bae.png" alt=" " width="757" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app itself was simple: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;wheel screen&lt;/li&gt;
&lt;li&gt;short survey&lt;/li&gt;
&lt;li&gt;responses view&lt;/li&gt;
&lt;li&gt;profile screen with a QR code for LinkedIn&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Expo Go was what made this possible in such a short time. Instead of building a full native app, I ran the Expo dev server locally and opened the project on my phone through Expo Go. &lt;/p&gt;

&lt;p&gt;In practice, Expo Go provides the native container, while my app code is loaded as a JavaScript bundle from the local development server. That meant I could build and test the app on a real device almost instantly, without dealing with native build setup.&lt;/p&gt;

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

&lt;p&gt;For a low-stakes prototype like this, that tradeoff was perfect: &lt;br&gt;
fast iteration, real-device testing, and just enough functionality to get the job done.&lt;/p&gt;

&lt;p&gt;Here is a quick visual recording of the app itself:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Learnings from this experience
&lt;/h2&gt;

&lt;p&gt;For me, this is a great use case for vibe coding: building a very low-stakes prototype that solves a simple problem and can be put together quickly.&lt;/p&gt;

&lt;p&gt;It also reminded me that small tools can make everyday situations more interesting. Sometimes the best projects are not the most ambitious ones, but the ones that make a real interaction easier, lighter, or more fun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;How do you approach networking in a more natural way?&lt;/p&gt;

&lt;p&gt;Do you have any original tactics/stories to collect customer interviews?&lt;/p&gt;

&lt;p&gt;And how are you using vibe coding in your day-to-day?&lt;/p&gt;




&lt;p&gt;I’ll introduce the project I am ideating for in my next post, document the learnings as I go, and eventually open-source the project so others can learn from it, reuse it, or take it further.&lt;/p&gt;

&lt;p&gt;If you had to guess, what do you think this project is about?&lt;/p&gt;

&lt;p&gt;Curious to hear your thoughts 🙂&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>reactnative</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
