<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Philip Damwanza</title>
    <description>The latest articles on DEV Community by Philip Damwanza (@kahenda).</description>
    <link>https://dev.to/kahenda</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937261%2F3721da6e-5b7b-40d8-b5f0-34d2e401a4d8.png</url>
      <title>DEV Community: Philip Damwanza</title>
      <link>https://dev.to/kahenda</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kahenda"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 20 Jul 2026 07:39:32 +0000</pubDate>
      <link>https://dev.to/kahenda/-1238</link>
      <guid>https://dev.to/kahenda/-1238</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2" class="crayons-story__hidden-navigation-link"&gt;SQLite vs. PostgreSQL: Two SQL Giants Built for Different Worlds&lt;/a&gt;


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

          &lt;a href="/kahenda" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937261%2F3721da6e-5b7b-40d8-b5f0-34d2e401a4d8.png" alt="kahenda profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/kahenda" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Philip Damwanza
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Philip Damwanza
                
              
              &lt;div id="story-author-preview-content-4185243" 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="/kahenda" 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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937261%2F3721da6e-5b7b-40d8-b5f0-34d2e401a4d8.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Philip Damwanza&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 20&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/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2" id="article-link-4185243"&gt;
          SQLite vs. PostgreSQL: Two SQL Giants Built for Different Worlds
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/database"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;database&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&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/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2" 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="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&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;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

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

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>SQLite vs. PostgreSQL: Two SQL Giants Built for Different Worlds</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 20 Jul 2026 07:39:01 +0000</pubDate>
      <link>https://dev.to/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2</link>
      <guid>https://dev.to/kahenda/sqlite-vs-postgresql-two-sql-giants-built-for-different-worlds-5ac2</guid>
      <description>&lt;p&gt;If you are writing raw SQL queries, your code might look identical whether you use SQLite or PostgreSQL. However, under the hood, they operate in completely opposite ways. SQLite is a serverless database, meaning the entire database is just a single file sitting directly on your disk with zero setup required. PostgreSQL, on the other hand, is a full client-server database that runs as a dedicated background process, requiring network connections to read and write data.&lt;/p&gt;

&lt;p&gt;Because of this difference, they solve entirely different problems. SQLite shines in local development, mobile apps, and standalone CLI tools because it completely bypasses the network, making it incredibly fast and lightweight for single-user scenarios. However, the moment an application goes live on the web and needs to handle multiple users saving data at the exact same millisecond, SQLite will lock up. That is where PostgreSQL takes over, utilizing advanced row-level locking to handle thousands of concurrent readers and writers flawlessly.&lt;/p&gt;

</description>
      <category>database</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Fixed a Git Merge Conflict (Without Losing My Code)</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 20 Jul 2026 06:53:20 +0000</pubDate>
      <link>https://dev.to/kahenda/how-i-fixed-a-git-merge-conflict-without-losing-my-code-558j</link>
      <guid>https://dev.to/kahenda/how-i-fixed-a-git-merge-conflict-without-losing-my-code-558j</guid>
      <description>&lt;p&gt;We’ve all been there: you are busy coding, and suddenly you get a scary error saying your code conflicts with a teammate's work. Git won't let you pull their changes because it's afraid of overwriting your unsaved files. Instead of panicking, I used git stash. This command acts like a temporary clipboard—it safely hides your current work away so your workspace becomes completely clean.&lt;/p&gt;

&lt;p&gt;With a clean screen, I was able to safely update the project, fix the conflicting lines of code by hand, and make sure everything compiled perfectly. Once the team's updates were safely pushed, I ran git stash pop to bring my hidden work right back. Git wasn't trying to break my project; it was just protecting my code. Next time you get stuck, remember the golden rule: Stash your work, fix the conflict, and pop it back!&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>devjournal</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why Everyone Says "It Depends" When You Ask About the Best Programming Language</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Fri, 10 Jul 2026 12:03:20 +0000</pubDate>
      <link>https://dev.to/kahenda/why-everyone-says-it-depends-when-you-ask-about-the-best-programming-language-32h6</link>
      <guid>https://dev.to/kahenda/why-everyone-says-it-depends-when-you-ask-about-the-best-programming-language-32h6</guid>
      <description>&lt;p&gt;Ask any developer "what's the best programming language?" and you'll get the same annoying answer: "it depends."&lt;/p&gt;

&lt;p&gt;For example, Go is great for fast, simple backend services. Python is great for quick scripts and data work. JavaScript basically runs the entire web whether you like it or not. Rust is great when you can't afford a single memory bug. None of them are "the best" — they're just the best tool for a specific job.&lt;/p&gt;

&lt;p&gt;Asking for the best language is like asking a carpenter for the best tool. Hammer? Screwdriver? &lt;br&gt;
So all in all it actually depends what you're building.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Nobody Warns You How Much Debugging Is Reading, Not Coding</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 09 Jul 2026 12:41:59 +0000</pubDate>
      <link>https://dev.to/kahenda/nobody-warns-you-how-much-debugging-is-reading-not-coding-2nm7</link>
      <guid>https://dev.to/kahenda/nobody-warns-you-how-much-debugging-is-reading-not-coding-2nm7</guid>
      <description>&lt;p&gt;When people picture "coding," they picture fast typing and features coming to life. Nobody pictures the real majority of the job: staring at a stack trace or lets say a particular project trying to figure out why something that should work, isn't.&lt;/p&gt;

&lt;p&gt;Here's what nobody tells you starting out — getting good at debugging has almost nothing to do with how well you write code, and everything to do with how well you read.&lt;/p&gt;

&lt;p&gt;The real difference between beginners and experienced devs isn't complex knowledge — it's that experienced devs read carefully and form a hypothesis before touching anything. Beginners (me included) tend to skip straight to changing code and hoping. It feels faster. It rarely is.&lt;br&gt;
One thing i'd like to advise other fellow beginner devs is ....Slow down, read the error properly, and follow the stack trace to where it actually starts — not where it ends up.&lt;/p&gt;

&lt;p&gt;What's a bug that taught you this the hard way?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 09 Jul 2026 08:25:32 +0000</pubDate>
      <link>https://dev.to/kahenda/-4p9i</link>
      <guid>https://dev.to/kahenda/-4p9i</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/dumebii/has-the-audience-for-technical-articles-dropped-5ceh" class="crayons-story__hidden-navigation-link"&gt;Has the audience for technical articles dropped?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/dumebii/has-the-audience-for-technical-articles-dropped-5ceh" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;AI tools reshaping technical reading habits&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 href="/dumebii" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F941720%2Ff316bf93-ef0b-4bc5-aee2-5e062255d5f0.jpg" alt="dumebii profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/dumebii" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Dumebi Okolo
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Dumebi Okolo
                
              
              &lt;div id="story-author-preview-content-4097205" 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="/dumebii" 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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F941720%2Ff316bf93-ef0b-4bc5-aee2-5e062255d5f0.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Dumebi Okolo&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/dumebii/has-the-audience-for-technical-articles-dropped-5ceh" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 8&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/dumebii/has-the-audience-for-technical-articles-dropped-5ceh" id="article-link-4097205"&gt;
          Has the audience for technical articles dropped?
        &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;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/dumebii/has-the-audience-for-technical-articles-dropped-5ceh" 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/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;70&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/dumebii/has-the-audience-for-technical-articles-dropped-5ceh#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              24&lt;span class="hidden s:inline"&gt;&amp;nbsp;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;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

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

&lt;/div&gt;


</description>
      <category>community</category>
      <category>discuss</category>
      <category>writing</category>
    </item>
    <item>
      <title>I'm About to Deploy My Go + React App for the First Time — Wish Me Luck</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 09 Jul 2026 07:44:51 +0000</pubDate>
      <link>https://dev.to/kahenda/im-about-to-deploy-my-go-react-app-for-the-first-time-wish-me-luck-228p</link>
      <guid>https://dev.to/kahenda/im-about-to-deploy-my-go-react-app-for-the-first-time-wish-me-luck-228p</guid>
      <description>&lt;p&gt;Here's the stack:&lt;/p&gt;

&lt;p&gt;Backend: Go, Gin, JWT auth, PostgreSQL (hosted on Neon.tech), Cloudinary for image uploads&lt;br&gt;
Frontend: React + Tailwind CSS&lt;/p&gt;

&lt;p&gt;I haven't actually clicked deploy yet. This post is me writing it down before I do it, partly to hold myself accountable and partly because I have a feeling something's going to break — probably CORS, probably env variables, probably something dumb I'll laugh at in a week.&lt;/p&gt;

&lt;p&gt;Question for you all&lt;/p&gt;

&lt;p&gt;If you've deployed a Go API + React frontend combo before — did you go with Railway + Vercel, or something else entirely ?&lt;/p&gt;

&lt;p&gt;And if you've done something different from the ones i want to work with, I would genuinely love to hear about it before I find out the hard way.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Cohort 1: A Few Months In</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Wed, 08 Jul 2026 10:47:11 +0000</pubDate>
      <link>https://dev.to/kahenda/cohort-1-a-few-months-in-3h7a</link>
      <guid>https://dev.to/kahenda/cohort-1-a-few-months-in-3h7a</guid>
      <description>&lt;p&gt;I joined Zone01 Kisumu's Cohort 1 back in March, after making it through the Piscine. A few months in, here's a quick, honest update on where things stand.&lt;/p&gt;

&lt;p&gt;What I've actually built&lt;/p&gt;

&lt;p&gt;lem-in — an ant colony pathfinding project in Go, done with a teammate. I handled the parser/validation side, he handled the solver. Chased down a nasty BFS bug that kept us from finding the optimal disjoint paths, and fixed an infinite-loop edge case that nearly cost us the deadline.&lt;br&gt;
Groupie Tracker — a Go web app consuming a music artist API. I led this one, and most of the "fun" was in bugs you don't expect: static file serving, route patterns not matching, template fields silently mismatching.&lt;br&gt;
AidStream — a hackathon project, a blockchain-based aid distribution platform. I was the database developer, working with PostgreSQL on Neon.tech.&lt;br&gt;
The forum project — a group web forum built in Go with SQLite, currently in progress. I'm team lead on this one.&lt;br&gt;
Kisumu Marketplace — my personal project, a full-stack secondhand clothes marketplace. Go/Gin backend, React frontend. This one's actually been rebuilt from scratch after my laptop broke and I lost the original work.&lt;/p&gt;

&lt;p&gt;What's changed since day one&lt;/p&gt;

&lt;p&gt;I came in only knowing the basics from the Piscine. Since then the biggest shift hasn't been technical skill exactly — it's been comfort with not knowing something yet. Early on, an unfamiliar bug felt like a wall. Now it mostly feels like a puzzle with a few obvious places to start looking.&lt;/p&gt;

&lt;p&gt;Leading team projects has also been a bigger adjustment than I expected. Splitting ownership, keeping people unblocked, and making sure nobody's work quietly breaks somebody else's — that's a different skill from writing good code, and I'm still learning it.&lt;/p&gt;

&lt;p&gt;What's next&lt;/p&gt;

&lt;p&gt;Finish deploying the marketplace backend on Railway and frontend on Vercel&lt;br&gt;
M-Pesa Daraja API integration&lt;br&gt;
Keep pushing the forum project forward with the team&lt;br&gt;
Write more, ship more, break fewer things (we'll see)&lt;/p&gt;

&lt;p&gt;The honest bit&lt;/p&gt;

&lt;p&gt;Some weeks feel like real progress. Some weeks feel like I fixed one bug and created two more. Both are apparently normal. I'll check back in a few months and see how this reads then.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>selfmotivation</category>
    </item>
    <item>
      <title>Piscine Survival Guide: What I'd Tell Myself Before Day 1</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Wed, 08 Jul 2026 07:19:52 +0000</pubDate>
      <link>https://dev.to/kahenda/piscine-survival-guide-what-id-tell-myself-before-day-1-pa2</link>
      <guid>https://dev.to/kahenda/piscine-survival-guide-what-id-tell-myself-before-day-1-pa2</guid>
      <description>&lt;p&gt;A few months into my apprenticeship at Zone01 Kisumu now, and looking back at the Piscine, here's what I wish someone had told me before I walked in.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It's not really about the code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Piscine feels like a coding test. It isn't, not really. It's a test of how you handle not knowing something, how you ask for help (or don't), and whether you can keep showing up after a day where nothing worked. The actual Go syntax you're struggling with on day 3 will feel trivial by week two. How you react to being stuck won't.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You will not finish everything, and that's fine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I went in thinking I needed to clear every exercise perfectly. I didn't. Almost nobody does. The Piscine isn't designed for you to finish everything — it's designed to see how you work under pressure with incomplete information. Stressing about the exercises you didn't get to costs you more than just... not finishing them would.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your peers are not your competition&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It's easy to fall into comparing your progress to the person next to you. Don't. Some of the people who looked "ahead" of me early on struggled later, and some of the people quietly stuck on basics turned out to be excellent collaborators once we got into team projects. The Piscine isn't ranking you against them — it's watching how you work, full stop.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ask questions even when you feel dumb&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I held back questions more than once because I didn't want to look like I didn't get it. Every time I actually asked, the answer either unblocked me in five minutes or turned out to be something three other people were also stuck on. Nobody remembers the "obvious" question you asked. Everyone remembers the person who sat stuck for two hours instead of asking it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rest is not optional&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I treated the Piscine like something to push through on adrenaline and no sleep. That works for about four days. After that, tired-brain debugging is just slower, worse debugging. A short walk or actual sleep solved problems faster than staring at the same broken function for another hour ever did.&lt;/p&gt;

&lt;p&gt;The one thing I'd actually tell myself&lt;/p&gt;

&lt;p&gt;You're not being tested to see if you already know how to code. You're being tested to see if you can become someone who codes. Different thing entirely — and a lot less scary once you see it that way.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>2 Bugs That Made Me Question My Life Choices (And What They Actually Were)</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Tue, 07 Jul 2026 08:11:08 +0000</pubDate>
      <link>https://dev.to/kahenda/2-bugs-that-made-me-question-my-life-choices-and-what-they-actually-were-12jc</link>
      <guid>https://dev.to/kahenda/2-bugs-that-made-me-question-my-life-choices-and-what-they-actually-were-12jc</guid>
      <description>&lt;ol&gt;
&lt;li&gt;The Ant That Refused to Take the Shortest Path&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Building lem-in, my ant colony pathfinding project. The algorithm kept sending ants down a longer route when a shorter one clearly existed. I spent hours convinced my BFS logic was fundamentally flawed.&lt;/p&gt;

&lt;p&gt;The real cause: My "shortest" path check was quietly comparing path lengths before removing duplicate edges. The path wasn't actually shorter — it just looked shorter to a function that hadn't finished doing its job yet.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Marketplace Listing That Vanished Into the Void&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The setup: Uploading a product photo to Cloudinary on the marketplace project, and the listing would save successfully — but the image field was just... empty. No errors. No warnings. Nothing.&lt;/p&gt;

&lt;p&gt;The real cause: I was awaiting the wrong variable. The upload was finishing fine; I was just asking a different, unrelated promise how it felt about it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Troubles of Working with a Database at a Hackathon (AidStream Story)</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Tue, 07 Jul 2026 06:54:24 +0000</pubDate>
      <link>https://dev.to/kahenda/the-troubles-of-working-with-a-database-at-a-hackathon-aidstream-story-32oj</link>
      <guid>https://dev.to/kahenda/the-troubles-of-working-with-a-database-at-a-hackathon-aidstream-story-32oj</guid>
      <description>&lt;p&gt;When people talk about hackathons, they talk about the demo. The pitch, the UI, the "aha" moment on stage. Nobody really talks about the person who spent the whole weekend making sure the data didn't fall apart.&lt;/p&gt;

&lt;p&gt;That was me on AidStream, a blockchain-based aid distribution platform we built in a weekend and trust me it wasnt that easy as it seems.&lt;br&gt;
At a normal project, you can revisit your data model whenever.But during a hackathon you cant since when teamamtes start working on top of your tables it means both codes may start breaking .&lt;br&gt;
Serverless Postgres was the right choice for a hackathon: no local DB setup, no "wait, whose laptop has Postgres installed" problem. Everyone could connect to the same instance immediately. The gotcha was connection limits — with multiple people hitting the same database while testing features simultaneously, we ran into connection issues at the worst possible time (an hour before demo). &lt;/p&gt;

&lt;p&gt;So next time you watch a hackathon demo go off without a hitch, remember — someone probably spent the whole weekend quietly making sure the database didn't have a say in it.&lt;/p&gt;

&lt;p&gt;If you're the one holding the schema together at 2am, know this — it's not the flashy role, but it's the one that decides whether anyone else's code even runs.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Honest Struggles of Building Your First Full Stack App</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 06 Jul 2026 06:57:07 +0000</pubDate>
      <link>https://dev.to/kahenda/the-honest-struggles-of-building-your-first-full-stack-app-17gi</link>
      <guid>https://dev.to/kahenda/the-honest-struggles-of-building-your-first-full-stack-app-17gi</guid>
      <description>&lt;p&gt;Nobody talks about the part where nothing works.&lt;/p&gt;

&lt;p&gt;They show you the finished product — the clean UI, the live URL, the GitHub repo. What they don't show you is the three hours debugging a CORS error at 11pm, or the day your laptop died and took your unfinished project with it.&lt;/p&gt;

&lt;p&gt;I'm Philip Ahenda, a first-year apprentice developer at Zone 01 Kisumu, Kenya. I just built a full stack secondhand clothes marketplace from scratch — Go API, PostgreSQL, React, image uploads, messaging and authentication. Here is what actually happened.&lt;/p&gt;

&lt;p&gt;There Is So Much You Don't Know You Don't Know&lt;/p&gt;

&lt;p&gt;I thought building a full stack app meant writing code. That is maybe 40% of it. The rest is learning why your frontend on port 3000 can't talk to your backend on port 8080, what a JWT token actually is, why your database query fails silently and why go mod tidy downloads half the internet on a new computer.&lt;/p&gt;

&lt;p&gt;Expect to spend as much time learning concepts as writing code. That is not a problem. That is how it works.&lt;/p&gt;

&lt;p&gt;CORS Will Make You Question Everything&lt;/p&gt;

&lt;p&gt;Every request from my React app to my Go API was blocked. No error that made sense. Just blocked. The fix was four lines of code. Finding those four lines took hours because I didn't understand the problem. I was looking at my code when the issue had nothing to do with my code at all.&lt;/p&gt;

&lt;p&gt;This is a pattern in full stack development. The problem is almost never where you are looking.&lt;/p&gt;

&lt;p&gt;Your Database Will Surprise You&lt;/p&gt;

&lt;p&gt;My Go code expected a column called url. The database had image_url. My code expected an integer id. The database used UUIDs. Each mismatch gave me a cryptic error that took longer to understand than to fix.&lt;/p&gt;

&lt;p&gt;Always check your actual database columns before writing code. Confirm every column name and type first.&lt;/p&gt;

&lt;p&gt;The Laptop Died&lt;/p&gt;

&lt;p&gt;Mid-project my laptop died. I had not pushed my work to GitHub. Everything was gone.&lt;/p&gt;

&lt;p&gt;I started again.&lt;/p&gt;

&lt;p&gt;Commit your code and push it to GitHub every single day. Your code is not safe until it is on GitHub. This is not optional advice. It is survival advice.&lt;/p&gt;

&lt;p&gt;What Kept Me Going&lt;/p&gt;

&lt;p&gt;The problem being real. I built this for Kisumu — for sellers who have no digital presence, for students who want affordable clothes nearby. Every time I got frustrated I remembered what the thing was for.&lt;/p&gt;

&lt;p&gt;Abstract projects are hard to finish. Projects that solve real problems for real people have a different kind of pull.&lt;/p&gt;

&lt;p&gt;The One Thing I Would Tell Myself at the Start&lt;/p&gt;

&lt;p&gt;Don't wait until you understand everything to start building. You learn by building. The CORS error teaches you more about browsers than any article ever could. The database mismatch teaches you more about types than any documentation.&lt;/p&gt;

&lt;p&gt;Start building. Break things. Fix them. Push to GitHub. Repeat.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
