<?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>Lem-in: Shortest Path Isn't Always the Goal</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 18 Jun 2026 11:17:16 +0000</pubDate>
      <link>https://dev.to/kahenda/lem-in-shortest-path-isnt-always-the-goal-570</link>
      <guid>https://dev.to/kahenda/lem-in-shortest-path-isnt-always-the-goal-570</guid>
      <description>&lt;p&gt;My team just started lem-in, the next project after Groupie Tracker. You've got a colony of rooms and tunnels, a pile of ants at ##start, and the job is to get them all to ##end as fast as possible. My first thought was "easy, just BFS for the shortest path." Turns out that's the wrong instinct.&lt;br&gt;
Say the shortest path is 5 rooms long and you've got 50 ants. Send them all down that one path and they queue up single-file, taking way more turns than you'd think. But if there's a second, slightly longer path, running ants down both at once clears the colony faster overall. So the real goal isn't the shortest path, it's the fewest total turns, which means finding multiple paths and splitting ants across them smartly.&lt;br&gt;
There's a catch too: each room (except start/end) can only hold one ant at a time, so the paths can't share rooms in the middle. That turns this into something closer to a max-flow problem than a simple shortest-path one.&lt;br&gt;
Right now, before writing any code, my teammate and I are splitting it: one of us on parsing and validating the colony file (there are a surprising number of ways it can be malformed), the other on path-finding and ant scheduling. Going to write a follow-up once we've actually got it running, because I suspect this mental model is about to get tested.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>coding</category>
      <category>computerscience</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Building Groupie Tracker in Go</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 15 Jun 2026 08:32:56 +0000</pubDate>
      <link>https://dev.to/kahenda/building-groupie-tracker-in-go-39p7</link>
      <guid>https://dev.to/kahenda/building-groupie-tracker-in-go-39p7</guid>
      <description>&lt;p&gt;As part of my apprenticeship at Zone01 Kisumu, my team and I built Groupie Tracker — a web app that fetches live music artist data from an external API and displays it in a clean, interactive interface. The entire backend is written in Go using only the standard library.&lt;/p&gt;

&lt;p&gt;WHAT IT DOES&lt;br&gt;
Displays all music artists as cards on the homepage&lt;br&gt;
Shows each artist's members, first album, and concert locations with dates&lt;br&gt;
Has a live search feature that finds artists without reloading the page&lt;/p&gt;

&lt;p&gt;HOW IT WORKS&lt;br&gt;
All data comes from a live external API at groupietrackers.herokuapp.com. Our Go server fetches the data, decodes the JSON into structs, and passes it to HTML templates for display.&lt;br&gt;
The most interesting part was the live search — when a user types in the search bar, JavaScript sends a request to our Go server at /search?q=queen, the server filters matching artists and returns JSON, and the page updates instantly. This was the client-server communication the project required.&lt;/p&gt;

</description>
      <category>go</category>
      <category>website</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>LIGHTNING NETWORK AND ITS INTEGRATION TO BITCOIN</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 15 Jun 2026 08:22:46 +0000</pubDate>
      <link>https://dev.to/kahenda/lightning-network-and-its-integration-to-bitcoin-4p3p</link>
      <guid>https://dev.to/kahenda/lightning-network-and-its-integration-to-bitcoin-4p3p</guid>
      <description>&lt;p&gt;Bitcoin is great for storing value, but it's slow and expensive for small everyday payments. Sending someone KSh 50 worth of Bitcoin means waiting up to 10 minutes and paying fees that might cost more than the payment itself. That's where the Lightning Network comes in.&lt;br&gt;
The Lightning Network is a second layer built on top of Bitcoin. Instead of recording every transaction on the blockchain, two people can open a private payment channel between them and send money back and forth instantly — as many times as they want — without touching the blockchain each time. Only when they're done do they settle the final balance on Bitcoin.&lt;br&gt;
The clever part is that you don't need a direct channel with everyone you want to pay. Lightning automatically finds a route through other people's channels. So if Alice has a channel with Bob, and Bob has a channel with Carol, Alice can pay Carol instantly — no direct connection needed.&lt;br&gt;
This makes micropayments possible for the first time. You can send 10 satoshis (a fraction of a cent) to tip a creator, pay per article, or reward a user — something regular payment systems simply can't do because the fees would be bigger than the payment itself.&lt;br&gt;
For developers, it's one of the most exciting payment tools available today. Fast, global, and no bank required.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>beginners</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Lightning Network: Bitcoin, But Fast</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 15 Jun 2026 08:21:49 +0000</pubDate>
      <link>https://dev.to/kahenda/the-lightning-network-bitcoin-but-fast-1nmm</link>
      <guid>https://dev.to/kahenda/the-lightning-network-bitcoin-but-fast-1nmm</guid>
      <description>&lt;p&gt;Bitcoin is great for storing value, but it's slow and expensive for small everyday payments. Sending someone KSh 50 worth of Bitcoin means waiting up to 10 minutes and paying fees that might cost more than the payment itself. That's where the Lightning Network comes in.&lt;br&gt;
The Lightning Network is a second layer built on top of Bitcoin. Instead of recording every transaction on the blockchain, two people can open a private payment channel between them and send money back and forth instantly — as many times as they want — without touching the blockchain each time. Only when they're done do they settle the final balance on Bitcoin.&lt;br&gt;
The clever part is that you don't need a direct channel with everyone you want to pay. Lightning automatically finds a route through other people's channels. So if Alice has a channel with Bob, and Bob has a channel with Carol, Alice can pay Carol instantly — no direct connection needed.&lt;br&gt;
This makes micropayments possible for the first time. You can send 10 satoshis (a fraction of a cent) to tip a creator, pay per article, or reward a user — something regular payment systems simply can't do because the fees would be bigger than the payment itself.&lt;br&gt;
For developers, it's one of the most exciting payment tools available today. Fast, global, and no bank required.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>beginners</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why React Components Will Change How You Think About UI</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 04 Jun 2026 11:50:12 +0000</pubDate>
      <link>https://dev.to/kahenda/why-react-components-will-change-how-you-think-about-ui-1i3b</link>
      <guid>https://dev.to/kahenda/why-react-components-will-change-how-you-think-about-ui-1i3b</guid>
      <description>&lt;p&gt;When I first started learning React, I kept asking myself why everyone was so obsessed with components — then it clicked. A component is just a small, reusable chunk of your UI, like a button, a navbar, or a card, and instead of writing the same HTML over and over, you build it once and drop it anywhere in your app. You pass in different data through props and the component adapts, which means your code stays clean, your files stay manageable, and when something breaks, you know exactly where to look. The real power shows up when you start composing them together — small components nested inside bigger ones, each doing one job well, until your entire app is just a tree of focused, predictable pieces. It sounds simple because it is, and that simplicity is exactly what makes React so powerful for building everything from a personal portfolio to a full production app.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>react</category>
    </item>
    <item>
      <title>React Components: The Building Blocks You Need to Know</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Thu, 04 Jun 2026 11:47:12 +0000</pubDate>
      <link>https://dev.to/kahenda/react-components-the-building-blocks-you-need-to-know-215k</link>
      <guid>https://dev.to/kahenda/react-components-the-building-blocks-you-need-to-know-215k</guid>
      <description>&lt;p&gt;What Even Is a Component?&lt;br&gt;
If you're learning React, you'll hear "component" thrown around constantly. Simply put — a component is a reusable piece of UI. Think of it like a LEGO brick. You build small pieces and snap them together to make something bigger.&lt;/p&gt;

&lt;p&gt;Why Components Are Great:&lt;br&gt;
 1.Reusable — write once, use everywhere&lt;br&gt;
 2.Clean code — each component does one thing&lt;br&gt;
 3.Easy to debug — problems are isolated&lt;br&gt;
 4.Team-friendly — different devs can work on different components&lt;/p&gt;

&lt;p&gt;Keep your components small and focused. If a component is doing too many things, break it up. A UserCard component shouldn't also be fetching data AND handling form submissions.&lt;/p&gt;

&lt;p&gt;React components are simple in concept but powerful in practice. Start small, stay consistent, and before you know it you'll be building complex UIs like it's nothing.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>LEARNING HOW DOCKER WORKS</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Tue, 02 Jun 2026 10:55:54 +0000</pubDate>
      <link>https://dev.to/kahenda/learning-how-docker-works-1o5h</link>
      <guid>https://dev.to/kahenda/learning-how-docker-works-1o5h</guid>
      <description>&lt;p&gt;Recently i have been learning a bit about docker and how it works and operates ,its importance and just everything concerning .Eventhough i am still in the process of learning how it does i have managed to grasp a few concepts on it.&lt;br&gt;
SO docker simplifies work by taking or putting your codes ,packages and settings into a standardized digital box.&lt;/p&gt;

&lt;p&gt;So far i had experienced a situation where i write a code and it works perfectly on my computer but when i try to put the same code on my friends computer the code isn't working  .So there now is where now docker comes through in handy , so docker has the container  which includes the exact operating system and GO version required so it is able to run on any computer&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>docker</category>
    </item>
    <item>
      <title>HOW I MANAGED TO PUSH MY WORK TO MY PUBLIC GITHUB PROFILE FROM MY GITEA PROFILE</title>
      <dc:creator>Philip Damwanza</dc:creator>
      <pubDate>Mon, 18 May 2026 06:38:20 +0000</pubDate>
      <link>https://dev.to/kahenda/how-i-managed-to-push-my-work-to-my-public-github-profile-from-my-gitea-profile-2784</link>
      <guid>https://dev.to/kahenda/how-i-managed-to-push-my-work-to-my-public-github-profile-from-my-gitea-profile-2784</guid>
      <description>&lt;p&gt;Hey Dev community &lt;br&gt;
As a beginnner in the tech world and coding world everything has been kind of confusing but one of the problem i had that now i have already solved is how i can push work to my github profile &lt;br&gt;
So i kind of got a hang of it after doing research on it and now all the projects that i have been doing i can easily link them to my public profile from my private gitea profile&lt;/p&gt;

&lt;p&gt;The first project i pushed to my profile  is called git    kahenda/git &lt;br&gt;
This project consists of exercises designed to master version control, file staging, and branching. It was the perfect sandbox for me to practice navigating the command line without breaking a massive codebase.&lt;/p&gt;

&lt;p&gt;So using a few commmands in my terminal which helped me disconnect my project from the old server  to a new server where my work can be at .&lt;/p&gt;

&lt;p&gt;The exact commmand sequence i used :&lt;/p&gt;

&lt;h1&gt;
  
  
  Remove the old private Gitea connection
&lt;/h1&gt;

&lt;p&gt;git remote remove origin&lt;/p&gt;

&lt;h1&gt;
  
  
  Add the new public GitHub connection
&lt;/h1&gt;

&lt;p&gt;git remote add origin &lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Push the code up to the main branch
&lt;/h1&gt;

&lt;p&gt;git branch -M main&lt;br&gt;
git push -u origin main&lt;/p&gt;

&lt;p&gt;now you can easily check my live repository here : &lt;a href="https://github.com/kahenda/git" rel="noopener noreferrer"&gt;kahenda/git&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>firstpost</category>
    </item>
  </channel>
</rss>
