<?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: Jeff Ronnie</title>
    <description>The latest articles on DEV Community by Jeff Ronnie (@rjeff-sudo).</description>
    <link>https://dev.to/rjeff-sudo</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%2F3817661%2Fc4545b2a-284a-43f2-9d33-5e8098a9f4e2.jpg</url>
      <title>DEV Community: Jeff Ronnie</title>
      <link>https://dev.to/rjeff-sudo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rjeff-sudo"/>
    <language>en</language>
    <item>
      <title>The Best Career Insurance Is a Tech Event You Don't Want to Attend</title>
      <dc:creator>Jeff Ronnie</dc:creator>
      <pubDate>Mon, 25 May 2026 12:11:30 +0000</pubDate>
      <link>https://dev.to/rjeff-sudo/the-best-career-insurance-is-a-tech-event-you-dont-want-to-attend-fp2</link>
      <guid>https://dev.to/rjeff-sudo/the-best-career-insurance-is-a-tech-event-you-dont-want-to-attend-fp2</guid>
      <description>&lt;p&gt;Let’s be completely honest for a second. As developers, engineering students, or tech enthusiasts, our default setting is comfort within our local development environment. When a notification pops up inviting us to a weekend tech meetup, a hackathon, or a networking session, our brain instantly calculates the social overhead.&lt;/p&gt;

&lt;p&gt;“I have a bug to fix.”&lt;br&gt;
“I need to wrap up this module.”&lt;br&gt;
“It’s going to be awkward standing around with a bunch of strangers talking about memory management.”&lt;/p&gt;

&lt;p&gt;Tech events can easily feel cumbersome. They require physical energy, commuting, and stepping completely out of your comfort zone.&lt;/p&gt;

&lt;p&gt;But over the last month, I decided to ignore that internal friction. I pushed through the initial reluctance and attended a flurry of tech gatherings, ranging from rigorous buildathons to relaxed, beer-fueled academic discussions.&lt;/p&gt;

&lt;p&gt;What I discovered is that the very events that feel the most exhausting on paper are exactly what we need to learn faster, prevent burnout, and build the communities that sustain our careers.&lt;/p&gt;

&lt;p&gt;Here is what a chaotic month of tech events taught me about the hidden architecture of developer communities.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Demystifying the Complex: When "Nation Dev" Meets Global Science&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Early in the month, I engaged with the broader developer landscape during a session with Nation Dev, exploring how the market for developers is evolving. But the real shift in perspective happened when I walked into a global phenomenon that felt entirely different: Pint of Science.&lt;/p&gt;

&lt;p&gt;If you haven’t heard of it, the premise is beautifully simple: researchers, scientists, and engineers gather at a local bistro or pub to explain complex academic theses over a casual drink.&lt;/p&gt;

&lt;p&gt;[Dense Academic/Tech Thesis] ──&amp;gt; [The "Pub Filter"] ──&amp;gt; [Accessible, Real-World Insight]&lt;/p&gt;

&lt;p&gt;Sitting there listening to deep technical theories being broken down in an approachable environment made me realize something vital about engineering communication. In our daily lives, we get trapped in our own silos, whether that’s network programming, cloud infrastructure, or frontend state management.&lt;/p&gt;

&lt;p&gt;When you strip away the formal lecture halls and explain a complex system over a casual drink, two things happen:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The imposter syndrome melts away. You realize everyone is just trying to figure out hard problems.

You learn how to communicate. Being able to explain low-level concepts simply is a superpower. If you can’t explain your network architecture or backend engine to someone holding a drink at a social event, you don't understand it well enough yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Aggressive Upskilling: The Buildathon Pressure Cooker&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Shortly after, it was time to transition from theoretical discussions to raw execution. I attended a local buildathon powered by Cursor and Claude Kenya.&lt;/p&gt;

&lt;p&gt;If you've been monitoring the engineering space lately, you know the narrative around AI development tools has shifted dramatically. We aren't just using AI for basic autocomplete anymore; we are orchestrating full-fledged development workflows using context-aware AI editors and advanced model pairs.&lt;/p&gt;

&lt;p&gt;Spending hours in a room packed with developers wrestling with these tools taught me a massive lesson about modern upskilling:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The Classroom vs. The Sandbox: You can watch tutorials on modern AI-assisted engineering for weeks, but nothing matches the velocity of a high-pressure buildathon.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When you are working against a clock alongside peers, you don’t have time to second-guess yourself. You lean on the tools, you learn how to prompt with hyper-specific context, and you see firsthand how other developers structure their packages, debug runtime errors, and manage deployment pipelines. You walk into the room knowing the syntax of a language; you walk out understanding how to build a production-ready application at three times your normal speed.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Power of "Shared Mythology": Celebrating Crypto History&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You cannot build a developer culture purely on code and APIs. Communities require a shared history, stories, and milestones that bring people together. I experienced this vividly at a blockchain event celebrating Bitcoin Pizza Day (commemorating May 22, 2010, when a programmer traded 10,000 BTC for two pizzas).  &lt;/p&gt;

&lt;p&gt;Gathered around boxes of actual pizza with local builders, the conversation naturally drifted past token prices and market charts. Instead, we talked about fundamentals: decentralized consensus, the elegance of peer-to-peer networks, and what it takes to build infrastructure that lasts.&lt;/p&gt;

&lt;p&gt;Celebrating these milestones roots our work in a larger narrative. It reminds a junior developer or an engineering student that every massive, global tech ecosystem started exactly like the room they are sitting in: a few curious people, an experimental idea, and some shared food.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Counter-Intuitive Breather: Team Building and Soft Skills&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To cap off this intense run of technical immersion, we had a dedicated team-building day. On paper, a tech team-building day can sometimes look like an unnecessary break from keyboard time. In reality, it is a vital counter-weight to the cognitive strain of development.&lt;/p&gt;

&lt;p&gt;Software engineering is an incredibly isolating craft. We spend eight to twelve hours a day looking at logical structures, compilers, and terminal outputs. Our brains operate in a rigid, deterministic world.&lt;/p&gt;

&lt;p&gt;Stepping away from the screen to participate in collaborative, non-technical exercises serves multiple functions:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mental Defragmentation: Just like a hard drive, your brain needs time to index and store information without active processing strain. The best architectural breakthroughs often happen when you are completely detached from the code.

Building Social Capital: It is significantly easier to ask for a code review, debug a broken network route, or pair-program on a messy repository with someone once you've shared a laugh outside the office or classroom environment.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Summary: The True ROI of Showing Up&lt;/p&gt;

&lt;p&gt;When you look back at a month filled with diverse events, the compound value becomes crystal clear. It isn't just about the specific lines of code written or the business cards collected. It's about ecosystem integration.&lt;br&gt;
Event Type  Direct Developer Benefit    The "Hidden" Value&lt;br&gt;
Nation Dev / Tech Sessions  Industry trends &amp;amp; framework updates&lt;br&gt;
Pint of Science High-level technical conceptualization  Breaking down communication barriers&lt;br&gt;
Buildathons (Cursor/Claude) Advanced AI workflows &amp;amp; rapid prototyping   Breaking through analysis paralysis&lt;br&gt;
Blockchain / History Events Architectural &amp;amp; network fundamentals    Connecting with a shared engineering culture&lt;br&gt;
Team Building Days  Stress relief &amp;amp; cognitive breaks    Establishing deep peer trust&lt;/p&gt;

&lt;p&gt;Conclusion: Stop Coding in Isolation&lt;/p&gt;

&lt;p&gt;If you are sitting at your desk right now, looking at a local event invite and debating whether to go, let this be your sign to just book the ticket.&lt;/p&gt;

&lt;p&gt;Yes, it might feel cumbersome. Yes, the first ten minutes might be slightly awkward. But the tech communities I have managed to join over this past month didn't find me through a browser window or a GitHub pull request. They found me because I showed up, grabbed a slice of pizza or a drink, and started talking to the person sitting next to me.&lt;/p&gt;

&lt;p&gt;Get out of your IDE for a day. Join a local community, attend a buildathon, talk about your tech stack over a drink, and remember that software isn't just built by compilers, it’s built by people.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>discuss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Chasing The High Of Total Awareness</title>
      <dc:creator>Jeff Ronnie</dc:creator>
      <pubDate>Sat, 23 May 2026 09:32:15 +0000</pubDate>
      <link>https://dev.to/rjeff-sudo/chasing-the-high-of-total-awareness-5ek5</link>
      <guid>https://dev.to/rjeff-sudo/chasing-the-high-of-total-awareness-5ek5</guid>
      <description>&lt;h2&gt;
  
  
  The Trap No One Warns You About
&lt;/h2&gt;

&lt;p&gt;For most tech enthusiast stepping into the digital world for the first time, the sheer scale of it all often seems like a rush. &lt;br&gt;
You find yourself diving into the deep end, captivated by the high of wanting to know everything. One morning you are learning Go, the next hour you are into DevOps and cyber security and by midnight you are knee deep in a kubernetes setup tutorial you barely understand. You want to understand it all, build it all and be the person who has a hand in the most crucial tools moving the industry forward.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Crash Hits
&lt;/h1&gt;

&lt;p&gt;With how fast the technical progress moves compared to what the human brain can consume, that initial excitement curdles into something heavier. You end up having fifty open tabs, half finished tutorials, growing backlog of newsletters and instead of excitement you feel dread and overwhelmed.&lt;/p&gt;

&lt;p&gt;That dread shifts into paralysis, you tried to touch on everything but feel like you truly know nothing. You are completely lost in the noise, overwhelmed by the feeling you are falling behind in the field you did not even care about 24 hours ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix
&lt;/h2&gt;

&lt;p&gt;The instinct to read more or find that one course or road map that makes everything click is usually wrong.&lt;/p&gt;

&lt;p&gt;Pick one project, one stack and a problem. Give it your all and aggressively filter out everything else, trusting that the rest of the tech world will still be there once you are done. Anchor your learning to a concrete output and you will find yourself shifting from anxious overload into something far more productive.&lt;/p&gt;

&lt;p&gt;You don't need to know everything to be valuable in the industry. The best developers out there, that most people admire, are not the ones that consumed the most content, but the ones who built through the noise while others stuck to watching tutorials.&lt;/p&gt;

&lt;p&gt;Close a tab, open your IDE, ship something.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>beginners</category>
      <category>discuss</category>
      <category>development</category>
    </item>
    <item>
      <title>It's Never Too Late to Start</title>
      <dc:creator>Jeff Ronnie</dc:creator>
      <pubDate>Tue, 12 May 2026 12:03:26 +0000</pubDate>
      <link>https://dev.to/rjeff-sudo/its-never-too-late-to-start-3iin</link>
      <guid>https://dev.to/rjeff-sudo/its-never-too-late-to-start-3iin</guid>
      <description>&lt;p&gt;There’s a common myth that if you didn’t start coding at age twelve, you’ve already missed the boat. I’m here to tell you, from the heart of Kisumu, that is absolutely false. My journey didn't start with a keyboard in my hand; it started with a conviction that the gap between understanding a network and securing one was a gap worth closing.&lt;/p&gt;

&lt;p&gt;The Pivot: From Theory to Tooling&lt;/p&gt;

&lt;p&gt;I spent four years at the Technical University of Kenya studying Communication and Computer Networks. I could draw you a packet header from memory, but I couldn't write the code to catch one. The shift happened when I stopped being a student of "theory" and became a student of "production."&lt;/p&gt;

&lt;p&gt;If you are a beginner sitting with a Go tutorial open or any other programming language, feeling overwhelmed: Keep going. A month ago, I was just learning the syntax of golang. Today, I am building SME-Shield, a full-stack security dashboard designed to protect small businesses in Kenya.&lt;/p&gt;

&lt;p&gt;What Scaling a Project Proves&lt;/p&gt;

&lt;p&gt;Transitioning from a CLI (Command Line Interface) tool to a Full-stack product isn’t just about adding a "pretty face." It’s a complete mental overhaul. Here is what that process proves to you as a developer:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Logic is Universal: Whether it's a worker pool in Go or a state-handler in JavaScript, the problem-solving logic remains the same.

Data has a Life Cycle: In a CLI, data is transient. In a Full-stack app, you have to care about its "home" (SQLite), its "travel" (REST APIs), and its "presentation" (Tailwind CSS).

The "User" is Your True North: Building for a terminal is building for yourself. Building a dashboard is building for an SME owner who needs to see a "Security Score" to feel safe.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The Zone01 Kisumu Factor&lt;/p&gt;

&lt;p&gt;I wouldn’t be writing this without the environment at Zone01 Kisumu. Tech isn't a solo sport. It’s about being in a room where someone is specialized in Cloud, another in AI, and another in Blockchain and realize you can learn from all of them. This collaborative, project-based model forced me to build something real, and that is the fastest way to bridge the gap.&lt;/p&gt;

&lt;p&gt;My Experience: A Note to the Beginners&lt;/p&gt;

&lt;p&gt;If you are worried that you’re "just a beginner," remember that every professional-grade product started as a buggy script. My scanner started as a simple ping; today it’s a vulnerability auditor that cross-references the NVD database.&lt;/p&gt;

&lt;p&gt;The takeaway? Don't wait until you "know enough" to start a project. Start the project so that you are forced to learn what you don't know.  &lt;/p&gt;

</description>
      <category>devops</category>
      <category>beginners</category>
      <category>career</category>
      <category>go</category>
    </item>
    <item>
      <title>Why Project-Based Learning Works: Building My First Port Scanner in Go</title>
      <dc:creator>Jeff Ronnie</dc:creator>
      <pubDate>Wed, 25 Mar 2026 12:42:45 +0000</pubDate>
      <link>https://dev.to/rjeff-sudo/why-project-based-learning-works-building-my-first-port-scanner-in-go-1n6k</link>
      <guid>https://dev.to/rjeff-sudo/why-project-based-learning-works-building-my-first-port-scanner-in-go-1n6k</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;I spent four years studying Communication and Computer Networks at the Technical University of Kenya. I was fairly solid on theory and could explain TCP/IP handshakes, draw network topologies, and describe exactly what happens when a packet moves from one host to another.&lt;/p&gt;

&lt;p&gt;Then I joined Zone01 Kisumu, an environment that forced me to build something with the knowledge I had. That’s when I realized there’s a massive gap between knowing how networking works and knowing how to code it.&lt;/p&gt;

&lt;p&gt;This is the story of how I bridged that gap. Let me walk you through the journey; from building a concurrent port scanner in Go to developing a strong conviction that real projects are the fastest way to learn.&lt;/p&gt;




&lt;p&gt;To understand how this project pushed me, let’s start by explaining the technical challenge at its core: what exactly is a port scanner?&lt;/p&gt;

&lt;p&gt;A port scanner probes a target IP address and checks which of the listed ports are open, closed, or filtered. Tools like nmap do this at a professional level. My scanner is a simpler version, and building it taught me more than any lecture ever did.&lt;/p&gt;




&lt;p&gt;The Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Language: Go&lt;/li&gt;
&lt;li&gt;Concurrency model: Worker pools with goroutines&lt;/li&gt;
&lt;li&gt;Input: CLI flags (target IP/range, port range, workers, timeout)&lt;/li&gt;
&lt;li&gt;Output: Terminal display + optional file export (JSON, CSV, TXT)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;How It Works&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Parsing the Target&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The scanner accepts a single IP address or a range, such as 192.168.1.1-192.168.1.254. The ParseIPs() function in the scanner package handles expanding that range into a slice of individual IP strings.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Parsing Ports&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This was one of the more interesting parts to design with flexibility in mind. I wanted to be able to scan a range (1-1000), a comma-separated list (22,80,443), or use a named profile:&lt;/p&gt;

&lt;p&gt;func parsePorts(input string) ([]int, error) {&lt;br&gt;
    // check for named profile first&lt;br&gt;
    if profile, ok := scanner.PortProfiles[input]; ok {&lt;br&gt;
        return profile, nil&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var ports []int

if strings.Contains(input, "-") {
    parts := strings.Split(input, "-")
    start, err1 := strconv.Atoi(parts[0])
    end, err2 := strconv.Atoi(parts[1])
    if err1 != nil || err2 != nil {
        return nil, fmt.Errorf("invalid port numbers in range: %s", input)
    }
    for i := start; i &amp;lt;= end; i++ {
        ports = append(ports, i)
    }
    return ports, nil
}

for _, p := range strings.Split(input, ",") {
    port, err := strconv.Atoi(strings.TrimSpace(p))
    if err != nil || port &amp;lt; 1 || port &amp;gt; 65535 {
        return nil, fmt.Errorf("invalid port: %s", p)
    }
    ports = append(ports, port)
}
return ports, nil
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Port profiles like common, web, db, and ssh are predefined slices in the scanner package. So instead of typing --ports 22,80,443,3306,5432, you just type --ports web. Much cleaner.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Worker Pool (Where Go Shines)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is my proudest bit. Scanning hundreds of IPs across hundreds of ports sequentially would take forever. The solution? Concurrency.&lt;/p&gt;

&lt;p&gt;Go makes this elegant with go routines. These are lightweight threads that can run thousands at a time. My scanner uses a worker pool pattern: a fixed number of workers pick jobs from a shared channel and process them concurrently.&lt;/p&gt;

&lt;p&gt;results := scanner.RunWorkerPool(ips, portList, *workers, time.Duration(*timeout)*time.Second)&lt;/p&gt;

&lt;p&gt;By default, 100 workers run simultaneously. That means scanning 254 hosts across 100 ports completes in seconds, not minutes.&lt;/p&gt;

&lt;p&gt;This was the hardest concept to get right. You’re not writing step-by-step instructions anymore; you’re designing a system where many things happen at once.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The CLI Interface&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The main.go uses Go’s built-in flag package to handle all inputs cleanly:&lt;/p&gt;

&lt;p&gt;target   := flag.String("target", "", "IP or range (e.g. 192.168.89.1-192.168.89.254)")&lt;br&gt;
ports    := flag.String("ports", "common", "Ports: range, list, or profile (common, web, db, ssh)")&lt;br&gt;
workers  := flag.Int("workers", 100, "Number of concurrent workers")&lt;br&gt;
timeout  := flag.Int("timeout", 1, "Connection timeout in seconds")&lt;br&gt;
verbose  := flag.Bool("v", false, "Show closed ports too")&lt;br&gt;
vverbose := flag.Bool("vv", false, "Show all ports including filtered")&lt;br&gt;
output   := flag.String("output", "", "Save results to file (e.g. results.json, results.csv, results.txt)")&lt;/p&gt;

&lt;p&gt;A typical scan looks like this:&lt;/p&gt;

&lt;p&gt;go run main.go -target 192.168.1.1-192.168.1.50 -ports web -workers 200 -output results.json&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Output &amp;amp; Saving Results&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The scanner prints results to the terminal and can optionally save them to a file. I added support for three formats; JSON, CSV, and plain text, because different use cases need different outputs. A security audit might want JSON for parsing; a quick report might want CSV for a spreadsheet.&lt;/p&gt;




&lt;p&gt;What I Learned That School Didn’t Teach Me&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Networking concepts look different in code.&lt;br&gt;
I knew what a TCP connection was. But writing code that attempts a TCP dial to check if a port is open, and then handling timeouts, refused connections, and filtered ports as separate outcomes, gave me a much deeper intuition for what’s actually happening on the wire.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Concurrency is a design problem, not just a syntax problem.&lt;br&gt;
Go’s go routines are simple to write. Worker pools are simple to understand. But designing a concurrent system, deciding how many workers, how to handle shared state, how to collect results safely   requires a different way of thinking that you only develop by doing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CLI design matters.&lt;br&gt;
A tool that’s hard to use won’t get used. Adding port profiles, verbosity levels, and multiple output formats wasn’t about making the code fancier, it was about making the tool actually useful in real scenarios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Error handling is where discipline lives.&lt;br&gt;
Go forces you to handle errors explicitly. At first, that felt annoying. Now I see it as one of the language’s best features. Every if err != nil block is a moment where you decide: what should actually happen here?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;What’s Next&lt;/p&gt;

&lt;p&gt;This scanner works well for small networks, which is exactly the audience I had in mind, SMEs in Kenya who need a lightweight, local tool for basic network visibility without the overhead of enterprise software.&lt;/p&gt;

&lt;p&gt;Next steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add OS fingerprinting&lt;/li&gt;
&lt;li&gt;Build a simple web UI for non-technical users.&lt;/li&gt;
&lt;li&gt;Package it as a standalone binary for easy distribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code is open source on GitHub: github.com/rjeff-sudo&lt;/p&gt;




&lt;p&gt;Final Thought&lt;/p&gt;

&lt;p&gt;If you’re learning a new language or trying to solidify concepts from school, stop doing tutorials in isolation. Pick something real, something slightly too hard for your current level, and build it. You’ll hit walls. You’ll Google things at 1am. You’ll rewrite entire functions because you didn’t think it through the first time.&lt;/p&gt;

&lt;p&gt;That’s not failure. That’s learning.&lt;/p&gt;




&lt;p&gt;Built with Go · Zone01 Kisumu · Nairobi, Kenya&lt;/p&gt;

&lt;p&gt;If you found this useful or have questions about the code, drop a comment below. I’m always happy to talk about networking and Go.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>go</category>
      <category>networking</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
