<?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: WI$DOM</title>
    <description>The latest articles on Forem by WI$DOM (@cyberwizd).</description>
    <link>https://forem.com/cyberwizd</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%2F3145071%2F16b5da27-70d0-4330-bd33-799ea2abfb34.png</url>
      <title>Forem: WI$DOM</title>
      <link>https://forem.com/cyberwizd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cyberwizd"/>
    <language>en</language>
    <item>
      <title>Everything gRPC (Part 1)</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Tue, 07 Apr 2026 09:26:51 +0000</pubDate>
      <link>https://forem.com/cyberwizd/everything-grpc-part-1-516l</link>
      <guid>https://forem.com/cyberwizd/everything-grpc-part-1-516l</guid>
      <description>&lt;p&gt;When people (Devs) first hear about gRPC, the usual description is that it’s a high-performance RPC framework built on top of HTTP/2, using Protocol Buffers.&lt;/p&gt;

&lt;p&gt;That’s accurate.&lt;/p&gt;

&lt;p&gt;But it doesn’t really help you understand anything.&lt;/p&gt;

&lt;p&gt;Because the real confusion doesn’t come from what gRPC is, it comes from how it actually behaves when you’re building with it.&lt;/p&gt;

&lt;p&gt;The moment you open a &lt;code&gt;.proto&lt;/code&gt; file for the first time, it feels unfamiliar. You’re defining services, messages, fields with numbers attached to them. It doesn’t look like the typical request-response structure you’re used to with REST.&lt;/p&gt;

&lt;p&gt;And that’s where the shift begins.&lt;/p&gt;

&lt;p&gt;Instead of thinking in terms of URLs and JSON payloads, gRPC asks you to think in terms of contracts.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.proto&lt;/code&gt; file is not just a schema. It’s more like an agreement between two systems. It defines what can be said, how it should be said, and in what structure. Before any communication happens, both sides already understand the language.&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%2F8765l7ufgmk1px0h9b8i.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%2F8765l7ufgmk1px0h9b8i.png" alt="Image of a .proto schema" width="223" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those numbers you see attached to fields are not random. They exist so that the message can be serialized efficiently. The system doesn’t care about the field names as much as it cares about those tags. That’s part of what makes it fast, but also part of what makes it feel strange at first.&lt;/p&gt;

&lt;p&gt;Then comes the generated code.&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%2Fwn3ywsuhna9sspi42w7c.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%2Fwn3ywsuhna9sspi42w7c.png" alt="Image of a generated go gRPC file" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, it can feel like magic. You write a &lt;code&gt;.proto&lt;/code&gt; file, and suddenly you have client and server code generated for you. Functions appear, request and response objects are already defined, and you’re expected to just use them.&lt;/p&gt;

&lt;p&gt;But what’s really happening is simple.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;.proto&lt;/code&gt; file defines the contract.&lt;br&gt;
The generated code enforces that contract.&lt;/p&gt;

&lt;p&gt;Now when a client wants to talk to a server, it doesn’t “construct” a request manually like in REST. It simply calls a function, almost like calling a local method. Under the hood, gRPC takes that function call, serializes the data using Protocol Buffers, sends it over HTTP/2, and reconstructs it on the server side.&lt;/p&gt;

&lt;p&gt;So instead of thinking:&lt;br&gt;
“I’m sending an HTTP request”&lt;/p&gt;

&lt;p&gt;It’s more accurate to think:&lt;br&gt;
“I’m calling a function that happens to exist on another machine.”&lt;/p&gt;

&lt;p&gt;That mental shift is where things start to make sense.&lt;/p&gt;

&lt;p&gt;At first, everything feels abstract. The &lt;code&gt;.proto&lt;/code&gt; file, the generated code, the client and server setup. It can feel like you’re just wiring things together without understanding the flow.&lt;/p&gt;

&lt;p&gt;But once you build a few small examples, the pattern becomes clearer.&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%2Fsk3tiatiktgzuftvbxi5.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%2Fsk3tiatiktgzuftvbxi5.png" alt="Image of a gRPC client to server communiacation" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The client calls a method.&lt;br&gt;
The method follows a contract.&lt;br&gt;
The contract was defined before anything was built.&lt;/p&gt;

&lt;p&gt;And everything else is just implementation detail.&lt;/p&gt;

&lt;p&gt;That’s the entry point into understanding gRPC.&lt;/p&gt;

&lt;p&gt;Not just what it is, but how to think with it.&lt;/p&gt;

&lt;p&gt;Follow for Part 2 -&amp;gt; streaming (where it gets really interesting).&lt;/p&gt;

</description>
      <category>programming</category>
      <category>architecture</category>
      <category>api</category>
      <category>learning</category>
    </item>
    <item>
      <title>I Built an AI Agent to End Team Arguments (Mostly) - My HNG Stage 3 Journey</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Mon, 03 Nov 2025 22:02:10 +0000</pubDate>
      <link>https://forem.com/cyberwizd/i-built-an-ai-agent-to-end-team-arguments-mostly-my-hng-stage-3-journey-2hao</link>
      <guid>https://forem.com/cyberwizd/i-built-an-ai-agent-to-end-team-arguments-mostly-my-hng-stage-3-journey-2hao</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: Team Chats are Where Decisions Go to Die
&lt;/h2&gt;

&lt;p&gt;You know the drill. You're in a team chat. Ideas are flying. Someone makes a great point. Everyone agrees. High-fives all around.&lt;/p&gt;

&lt;p&gt;A week later: "Wait, what did we decide about the database again?"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Crickets.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The decision is buried under 300 memes, 50 "lols", and a heated debate about whether pineapple belongs on pizza (it doesn't, fight me). Team discussions are great, but they can be black holes for important decisions.&lt;/p&gt;

&lt;p&gt;As part of the HNG Internship, my Stage 3 task was to tackle a problem like this. The challenge? Build an AI agent that integrates with a chat platform, Telex.im, to make sense of the chaos.&lt;/p&gt;

&lt;p&gt;So, I built the &lt;strong&gt;Decision Note Agent&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%2Ff3w6ih6r5s6pgel08dty.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%2Ff3w6ih6r5s6pgel08dty.png" alt="A screenshot of the agent in action in a chat" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's This Magical Agent You Speak Of?
&lt;/h2&gt;

&lt;p&gt;The Decision Note Agent is a smart assistant that lives in your team chat. Its job is to listen for specific commands, capture decisions, and log them in a structured, searchable way.&lt;/p&gt;

&lt;p&gt;No more scrolling endlessly. No more "I thought we agreed on...". Just clear, recorded decisions.&lt;/p&gt;

&lt;p&gt;Here's the command list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;/decision propose "Let's use FastAPI for the new service"&lt;/code&gt;: Propose an idea for the team to vote on.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision approve [id]&lt;/code&gt;: Approve a proposal.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision reject [id]&lt;/code&gt;: Reject a proposal.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision add "We will use PostgreSQL"&lt;/code&gt;: Log a decision that's already been made.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision list&lt;/code&gt;: See all the decisions.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision search "database"&lt;/code&gt;: Find a specific decision.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;/decision history&lt;/code&gt;: Get the history of all decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple, right? The goal was to make it as frictionless as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack: Python, FastAPI, and a Dash of AI
&lt;/h2&gt;

&lt;p&gt;I chose a stack I'm comfortable with but that's also powerful and modern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Python&lt;/strong&gt;: Because it's the undisputed king of AI and backend development.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;FastAPI&lt;/strong&gt;: It's a modern, fast (hence the name) web framework for building APIs. Its asynchronous nature is perfect for handling real-time chat interactions.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Gemini AI&lt;/strong&gt;: To add a little "smart" to the agent, validating decisions and providing summaries.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Telex.im A2A Protocol&lt;/strong&gt;: This was the trickiest part. It's the "Agent-to-Agent" protocol that allows my agent to talk to the Telex chat platform.&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%2F8936x8x6opswbatq9y7k.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%2F8936x8x6opswbatq9y7k.png" alt="Code Snippet of the a2a endpoint" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Journey: Integrating with Telex.im (and Fighting Bugs)
&lt;/h2&gt;

&lt;p&gt;The core of the task was getting my FastAPI application to communicate with Telex.im. This happens through a "well-known" endpoint (&lt;code&gt;/.well-known/agent.json&lt;/code&gt;) where my agent advertises its skills, and an A2A endpoint where it receives messages.&lt;/p&gt;

&lt;p&gt;Think of it like a job interview. The &lt;code&gt;agent.json&lt;/code&gt; file is the resume, listing all the cool things my agent can do (&lt;code&gt;add&lt;/code&gt;, &lt;code&gt;propose&lt;/code&gt;, &lt;code&gt;list&lt;/code&gt;, etc.). The A2A endpoint is the interview itself, where the agent has to actually perform those tasks.&lt;/p&gt;

&lt;p&gt;The message format is JSON-RPC, which is a standard for remote procedure calls. It's basically a structured JSON object that says, "Hey agent, a user sent this message. Do something with it."&lt;/p&gt;

&lt;h3&gt;
  
  
  The Bug Hunt
&lt;/h3&gt;

&lt;p&gt;It wasn't all smooth sailing. My initial build was, to put it mildly, a bit buggy. The logs were filled with "Unknown command" and "Error while streaming". It was like the agent was having a really bad day at the office.&lt;/p&gt;

&lt;p&gt;After a lot of debugging, I found the culprits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Clueless Agent:&lt;/strong&gt; My &lt;code&gt;agent.json&lt;/code&gt; file was missing half the commands! I was telling Telex my agent could only &lt;code&gt;add&lt;/code&gt; and &lt;code&gt;list&lt;/code&gt;, so when a user tried to &lt;code&gt;propose&lt;/code&gt; or &lt;code&gt;reject&lt;/code&gt;, Telex was (rightfully) confused. &lt;strong&gt;Fix:&lt;/strong&gt; I updated the &lt;code&gt;well_known.py&lt;/code&gt; file to include all the commands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Mismatched Payloads:&lt;/strong&gt; My main message handler was correctly parsing the command from a complex JSON payload, but the individual command functions were looking for it in the wrong place. It was a classic case of the left hand not knowing what the right hand was doing. &lt;strong&gt;Fix:&lt;/strong&gt; I refactored &lt;code&gt;workflow_handlers.py&lt;/code&gt; to pass the correct message text down to every function.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fp93cd000rvru29q622sd.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%2Fp93cd000rvru29q622sd.png" alt="Using postman to test locally" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How It All Came Together
&lt;/h2&gt;

&lt;p&gt;After fixing the bugs and updating my README to reflect the &lt;em&gt;actual&lt;/em&gt; project structure (whoops), it finally worked. The agent was listening, responding, and logging decisions like a champ.&lt;/p&gt;

&lt;p&gt;This HNG task was a rollercoaster. It pushed me to not just write code, but to think about architecture, protocols, and the real-world usability of a tool. It's one thing to build an API; it's another to make it a helpful participant in a team conversation.&lt;/p&gt;

&lt;p&gt;If you want to check out the code, you can find the full project on my GitHub.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[https://github.com/CyberwizD/Decision-Note-Agent]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading! Now, go make some (well-documented) decisions.&lt;/p&gt;

</description>
      <category>python</category>
      <category>fastapi</category>
      <category>ai</category>
      <category>hnginternship</category>
    </item>
    <item>
      <title>Pk vs Fk 🔑</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Fri, 29 Aug 2025 10:25:00 +0000</pubDate>
      <link>https://forem.com/cyberwizd/pk-vs-fk-458o</link>
      <guid>https://forem.com/cyberwizd/pk-vs-fk-458o</guid>
      <description>&lt;h2&gt;
  
  
  Understanding Primary Keys and Foreign Keys in Relational Databases
&lt;/h2&gt;

&lt;p&gt;When you're building applications, especially with relational databases like &lt;strong&gt;PostgreSQL&lt;/strong&gt; (which is quite familiar), you're not just storing data; you're storing &lt;em&gt;related&lt;/em&gt; data — and that's where &lt;strong&gt;Primary Keys&lt;/strong&gt; and &lt;strong&gt;Foreign Keys&lt;/strong&gt; come into play.&lt;/p&gt;

&lt;p&gt;They might sound intimidating (not really), but they're fundamental concepts that ensure your data is organized, consistent, and easy to work with. Let's break them down.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Do We Need Keys Anyway?
&lt;/h2&gt;

&lt;p&gt;Imagine building an e-commerce platform. You have users, and these users create orders. Without a structured way to connect a specific order to a specific user, your data would be a chaotic mess. You wouldn't know who bought what!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keys provide that structure.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
They are special columns (or groups of columns) that help us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Uniquely identify&lt;/strong&gt; each piece of information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Establish relationships&lt;/strong&gt; between different pieces of information across various tables.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Primary Key
&lt;/h2&gt;

&lt;p&gt;Think of a &lt;strong&gt;Primary Key&lt;/strong&gt; as the unique identifier for each individual record (row) within a table. No two records in the same table can have the same primary key value. It's like your &lt;strong&gt;National Identification Number (NIN)&lt;/strong&gt; – it identifies only you. &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%2Fd7s8z4awfhj31q0mvwik.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%2Fd7s8z4awfhj31q0mvwik.png" alt="Description of a primary key" width="717" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Users Table:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;user_id (PK)&lt;/th&gt;
&lt;th&gt;username&lt;/th&gt;
&lt;th&gt;email&lt;/th&gt;
&lt;th&gt;created_at&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;alice&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:alice@example.com"&gt;alice@example.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2023-01-15 10:00:00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;bob&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:bob@example.com"&gt;bob@example.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2023-01-15 10:05:00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;103&lt;/td&gt;
&lt;td&gt;charlie&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:charlie@example.com"&gt;charlie@example.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2023-01-16 11:30:00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here, &lt;code&gt;user_id&lt;/code&gt; uniquely identifies each user.&lt;br&gt;&lt;br&gt;
If you query for &lt;code&gt;user_id = 102&lt;/code&gt;, you'll always get &lt;strong&gt;Bob&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Foreign Key
&lt;/h2&gt;

&lt;p&gt;While a &lt;strong&gt;primary key&lt;/strong&gt; identifies a record within its own table, a &lt;strong&gt;foreign key&lt;/strong&gt; links a record in one table to a record in another. It acts as a &lt;em&gt;reference&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A foreign key in &lt;strong&gt;Table A&lt;/strong&gt; points to a primary key in &lt;strong&gt;Table B&lt;/strong&gt;, creating a &lt;strong&gt;relationship&lt;/strong&gt; between them.   &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%2Fzy12octr7yzeady15iaw.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%2Fzy12octr7yzeady15iaw.png" alt="Description of a foreign key" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Orders Table:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;order_id (PK)&lt;/th&gt;
&lt;th&gt;user_id (FK)&lt;/th&gt;
&lt;th&gt;order_date&lt;/th&gt;
&lt;th&gt;total_amount&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2001&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;2023-01-15 10:30:00&lt;/td&gt;
&lt;td&gt;55.99&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2002&lt;/td&gt;
&lt;td&gt;102&lt;/td&gt;
&lt;td&gt;2023-01-15 11:00:00&lt;/td&gt;
&lt;td&gt;120.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2003&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;2023-01-16 14:00:00&lt;/td&gt;
&lt;td&gt;25.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2004&lt;/td&gt;
&lt;td&gt;103&lt;/td&gt;
&lt;td&gt;2023-01-17 09:15:00&lt;/td&gt;
&lt;td&gt;88.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Here, &lt;code&gt;user_id&lt;/code&gt; in the &lt;strong&gt;Orders&lt;/strong&gt; table is a &lt;strong&gt;foreign key&lt;/strong&gt; referencing &lt;code&gt;user_id&lt;/code&gt; in the &lt;strong&gt;Users&lt;/strong&gt; table.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Orders &lt;code&gt;2001&lt;/code&gt; and &lt;code&gt;2003&lt;/code&gt; belong to &lt;code&gt;user_id = 101&lt;/code&gt; (Alice).
&lt;/li&gt;
&lt;li&gt;If we tried to delete Alice (&lt;code&gt;user_id = 101&lt;/code&gt;), the database would prevent it (or cascade delete her orders).
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;In a Nutshell&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Key&lt;/strong&gt;: Uniquely identifies a record in its own table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Key&lt;/strong&gt;: Links a record to a record in another table.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>primary</category>
      <category>foreign</category>
      <category>keys</category>
      <category>database</category>
    </item>
    <item>
      <title>What is Authentication?</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Mon, 28 Jul 2025 20:01:53 +0000</pubDate>
      <link>https://forem.com/cyberwizd/what-is-authentication-30e4</link>
      <guid>https://forem.com/cyberwizd/what-is-authentication-30e4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: Proving You're You&lt;/p&gt;

&lt;p&gt;Think about logging into your &lt;em&gt;email account&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;When you type in your &lt;em&gt;username&lt;/em&gt; and &lt;em&gt;password&lt;/em&gt;, you're performing &lt;strong&gt;authentication&lt;/strong&gt;. You're proving to the email service that you are the legitimate owner of that account. If the username and password match what's on file, you're &lt;em&gt;authenticated&lt;/em&gt; and granted entry. If they don't, you're denied access. It's simply verifying your identity.&lt;/p&gt;

&lt;p&gt;But wait! What's the difference between &lt;strong&gt;authentication&lt;/strong&gt; and &lt;strong&gt;authorization&lt;/strong&gt;? Well, here's a way to simplify it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt; simply means &lt;strong&gt;"Who you are"&lt;/strong&gt; while &lt;strong&gt;Authorization&lt;/strong&gt; simply means &lt;strong&gt;"What you can do"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example, &lt;em&gt;Authentication&lt;/em&gt; determines whether someone accessing a website is actually the person who created the account, while &lt;em&gt;Authorization&lt;/em&gt; determines what that person is permitted to access once they're identified. Simple, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Authentication Mechanisms and Potential Vulnerabilities&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that we've clarified the basics, let's talk about how authentication systems can be attacked and exploited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Brute-Force Attack&lt;/strong&gt;&lt;br&gt;
This is a blunt but often effective method where an attacker performs an automated trial-and-error process, systematically guessing credentials against an authentication system like a login page, SSH, or FTP. The goal is to eventually stumble upon the correct username and password combination.&lt;/p&gt;

&lt;p&gt;A common tactic within this attack is &lt;strong&gt;Username Enumeration&lt;/strong&gt;. This occurs when an attacker can validate whether a username is valid or invalid, often by observing different error messages on a login page (e.g., "Username not found" or "Incorrect password"). Once a valid username is identified, the attacker then focuses their brute-force efforts by trying a large wordlist of common or likely passwords against that specific username.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bypassing Two-Factor Authentication (2FA)&lt;/strong&gt;&lt;br&gt;
You might think 2FA makes you impenetrable, and it's certainly a strong defense. However, even this crucial security layer isn't always flawless. The implementation of 2FA can sometimes contain weaknesses that allow it to be bypassed entirely.&lt;/p&gt;

&lt;p&gt;You know how 2FA typically works, right? You log in with your username and password, and then you're prompted on a separate page to enter a verification code sent to your phone or generated by an app. But what if I told you that some websites don't actually check whether you completed that second verification step?&lt;/p&gt;

&lt;p&gt;So you're thinking what I'm thinking? 😏&lt;/p&gt;

&lt;p&gt;In some poorly implemented systems, once the initial username and password are submitted, the server might generate a session token before the 2FA code is verified. If an attacker intercepts this token or can manipulate the request to skip the 2FA verification page, they could potentially gain full access to the account without ever entering the second factor. This highlights that even the best security concepts depend heavily on their flawless implementation.&lt;/p&gt;

</description>
      <category>websecurity</category>
      <category>serverside</category>
      <category>vulnerabilities</category>
      <category>authentication</category>
    </item>
    <item>
      <title>Access Control</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Tue, 22 Jul 2025 13:51:03 +0000</pubDate>
      <link>https://forem.com/cyberwizd/access-control-16nb</link>
      <guid>https://forem.com/cyberwizd/access-control-16nb</guid>
      <description>&lt;p&gt;Let's get straight to it.. &lt;strong&gt;Accss Control&lt;/strong&gt;, What does it mean?&lt;/p&gt;

&lt;p&gt;So, let's put it this way, you saw this blog, and as you're reading it, you probably saw the typo i wrote &lt;em&gt;Accss&lt;/em&gt;, and if you're me, you'd be thinking of editing it. Making it readable, so indirectly you want to edit my blog post 😏.&lt;/p&gt;

&lt;p&gt;But here's the critical question: &lt;strong&gt;Should you be able to?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Access Control&lt;/strong&gt; fundamentally comes into play.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access Control&lt;/strong&gt; is the gatekeeper that determines &lt;em&gt;who&lt;/em&gt; can access &lt;em&gt;what&lt;/em&gt; resources, and what actions they're permitted to perform. It's not just about letting people in; it's about defining their privileges once they're inside.&lt;/p&gt;

&lt;p&gt;In the context of web applications, access control is dependent on authentication and session management. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; confirms that the user is who they say they are.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session management&lt;/strong&gt; identifies which subsequent HTTP requests are being made by that same user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have you heard of &lt;strong&gt;Vertical Privilege Escalation&lt;/strong&gt;?&lt;br&gt;
This is when a non-administrative user gains access to an administrative account (a user with a higher level of access), where they can delete user accounts. &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%2Fzuh3cw1w6eiuvrg68efe.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%2Fzuh3cw1w6eiuvrg68efe.png" alt="Vertical Privilege Escalation" width="634" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then there's &lt;strong&gt;Horizontal Privilege Escalation&lt;/strong&gt;&lt;br&gt;
This is when a non-administrative user gains access to another non-administrative user's account&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%2Fsfvdzx82kjllr8xvzlrr.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%2Fsfvdzx82kjllr8xvzlrr.png" alt="Horizontal Privilege Escalation" width="588" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unprotected Functionality&lt;/strong&gt;&lt;br&gt;
So privilege escalation arises when there's little to no protection to sensitive data. For instance, a user might be able to access administrative functions by browsing to&lt;br&gt;
&lt;code&gt;https://insecure-website.com/admin&lt;/code&gt;, &lt;code&gt;https://insecure-website.com/admin&lt;/code&gt; or just using a wordlist to brute-force sub-directories that contains administrative functionalities or simply checking the JavaScript on the user interface:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;script&amp;gt; var isAdmin = false; if (isAdmin) { ... var adminPanelTag = document.createElement('a'); adminPanelTag.setAttribute('href', 'https://insecure-website.com/administrator-panel-yb556'); adminPanelTag.innerText = 'Admin panel'; ... } &amp;lt;/script&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parameter-based Access Control Methods&lt;/strong&gt;&lt;br&gt;
In a web URL &lt;code&gt;https://insecure-website.com/login/home.jsp?admin=true&lt;/code&gt;, the parameter &lt;code&gt;admin&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt;. Which means that when a non-administrative user browses to the URL, the user gains admin privileges, due to the parameter &lt;code&gt;admin&lt;/code&gt; being set to &lt;code&gt;true&lt;/code&gt;. This approach is insecure as the web URL can be modified to gain access. &lt;/p&gt;

&lt;p&gt;So with that, you've got an idea on &lt;em&gt;Access Control&lt;/em&gt;. Without robust &lt;em&gt;access control&lt;/em&gt;, anyone spotting that typo could theoretically change it, or worse, delete the entire blog post.😏&lt;/p&gt;

</description>
      <category>websecurity</category>
      <category>serverside</category>
      <category>vulnerabilities</category>
      <category>accesscontrol</category>
    </item>
    <item>
      <title>Path Traversal Attack</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Tue, 22 Jul 2025 11:13:10 +0000</pubDate>
      <link>https://forem.com/cyberwizd/path-traversal-5ac</link>
      <guid>https://forem.com/cyberwizd/path-traversal-5ac</guid>
      <description>&lt;p&gt;So, you've heard... &lt;strong&gt;Path Traversal&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;Path traversal vulnerabilities is one of the most common server-side vulnerabilities. Well, this is also known as &lt;code&gt;directory traversal&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;This vulnerability enables an attacker to access files in a server. These files might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application code and data&lt;/li&gt;
&lt;li&gt;Credentials for backend systems&lt;/li&gt;
&lt;li&gt;Sensitive files such as users data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In some cases, an attacker can write to a file to modify it. Thereby gaining full access control. So, how do you read these files?&lt;/p&gt;

&lt;p&gt;Imagine a shopping application that displays an image, the image loads with the HTML tag:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;img src="/loadImage?filename=218.png"&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;LoadImage&lt;/code&gt; takes the &lt;code&gt;filename&lt;/code&gt; parameter and returns the content of the specified file. The image might be stored in &lt;code&gt;/var/www/images&lt;/code&gt;. So what this means is that the stored image path on the server is &lt;code&gt;/var/www/images/218.png&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now an attacker can read from the file server with &lt;code&gt;https://insecure-website.com/loadImage?filename=../../../etc/passwd&lt;/code&gt; which reads &lt;code&gt;/var/www/images/../../../etc/passwd&lt;/code&gt;. The &lt;code&gt;../&lt;/code&gt; means to step up in the directory structure, which means the file actually being read is &lt;code&gt;/etc/passwd&lt;/code&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%2Fuk5vqfj28f956x05svn7.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%2Fuk5vqfj28f956x05svn7.png" alt="How path traversal is exploited" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a simplified story version for you to understand better.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine your website is like a &lt;strong&gt;restaurant kitchen&lt;/strong&gt;. Everything a customer (you, the user) can ask for—menu items, prices, the daily special—is in a specific, public area of the kitchen. That's like your "public files" folder.&lt;/p&gt;

&lt;p&gt;Now, imagine there's a back room in that kitchen. This room holds all the &lt;strong&gt;secret stuff&lt;/strong&gt;: the chef's private recipes, the safe with the day's earnings, and employee records. This area is strictly off-limits to customers.&lt;/p&gt;

&lt;p&gt;Here's where the problem, called &lt;strong&gt;Path Traversal&lt;/strong&gt;, sneaks in.&lt;/p&gt;

&lt;p&gt;A hacker tries to order something from your website. But instead of asking for "menu.pdf," they try a trick:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;../../secret_chef_recipes/private_sauce.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Think of &lt;code&gt;../&lt;/code&gt; as telling the website, "Go back one step, then another step."&lt;/p&gt;

&lt;p&gt;It's like someone telling the kitchen staff, "Instead of getting me the soup from &lt;em&gt;here&lt;/em&gt;, go out of the kitchen, then back through the restaurant door, and then look for the 'secret chef recipes' room!"&lt;/p&gt;

&lt;p&gt;If the website isn't careful, it blindly follows these "go back" instructions. Suddenly, it steps outside the public area and hands over the chef's secret sauce recipe – or even worse, the day's earnings!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Path Traversal&lt;/strong&gt; happens when a website lets a hacker use these &lt;code&gt;../&lt;/code&gt; tricks to leave the public areas and snoop around for private files they shouldn't see. Sometimes, they can even change these files, just like someone sneaking into the secret room and messing with the recipes!&lt;/p&gt;

&lt;p&gt;So, while the concept of Path Traversal might seem simple, its implications are severe. &lt;strong&gt;Never trust user input!!&lt;/strong&gt; 😂&lt;/p&gt;

&lt;p&gt;Now that you understand &lt;em&gt;path traversal&lt;/em&gt;, next step is to learn who can access what. That's where &lt;em&gt;Access Control&lt;/em&gt; comes in. Check out the next blog post. ✌️&lt;/p&gt;

</description>
      <category>websecurity</category>
      <category>serverside</category>
      <category>vulnerabilities</category>
      <category>pathtraversal</category>
    </item>
    <item>
      <title>Where it all started.</title>
      <dc:creator>WI$DOM</dc:creator>
      <pubDate>Fri, 30 May 2025 19:08:20 +0000</pubDate>
      <link>https://forem.com/cyberwizd/where-it-all-started-233e</link>
      <guid>https://forem.com/cyberwizd/where-it-all-started-233e</guid>
      <description>&lt;h2&gt;
  
  
  My Tech Origin Story
&lt;/h2&gt;

&lt;p&gt;Hey folks, Let me take you to where it all began. Here's a piece of my journey, raw and real.&lt;/p&gt;

&lt;p&gt;We all have an origin story in tech, and NO! mine didn’t involve a hoodie, dark terminal screen, and some Matrix-like music playing in the background. I wasn’t “born to code”. If anything, I spent a good chunk of my early dev life asking Google questions like “What's the most interesting career?” and "How do i know what to pursue?”&lt;/p&gt;

&lt;p&gt;This post? It’s personal. I wanted to write this now, while everything’s still raw and messy and in-progress. This is my version of leaving breadcrumbs.&lt;/p&gt;

&lt;p&gt;So yeah! here’s how I got here, and where I’m headed next.&lt;/p&gt;

&lt;p&gt;When I first got curious about tech, I didn’t even know where to begin. I just knew I liked breaking things and figuring out why they broke. That naturally led me to programming. Python was my first real tool: simple, clean, friendly. The kind of language that gently pats you on the back while still letting you shoot yourself in the foot. I wrote a bunch of print statements, tried to build stuff I didn’t fully understand, and kept hitting errors that felt like personal attacks. But every time I fixed something, even something tiny, it felt like magic. Like: “yo, I did that?”&lt;/p&gt;

&lt;p&gt;Of course, I went through that phase every dev hits where I tried to learn everything. One week I’m reading up on networking, the next I’m trying to build a scanner app, and somehow I’m knee-deep in a YouTube video about "Top 10 best programming languages to learn" at 1AM (??? 😅). I was moving, but not always forward. And that’s okay. That’s part of the ride.&lt;/p&gt;

&lt;p&gt;Somewhere along the way, I discovered cybersecurity.&lt;/p&gt;

&lt;p&gt;And it was like someone handed me a new lens to see the entire tech world differently. Suddenly, it wasn’t just about writing code. It was about thinking, figuring out the how and why. And man, that pulled me in deep.&lt;/p&gt;

&lt;p&gt;My first few months in cybersecurity were chaotic, lots of scattered learning. I was doing everything: watching Udemy courses, jumping between HackTheBox, TryHackMe, random articles, old forum threads, spent two months reading compTIA+, even skimming through OWASP docs I barely understood at the time. I was trying to find my thing. Red team? Blue team? Maybe purple, maybe chartreuse? 🤣&lt;/p&gt;

&lt;p&gt;Then one night, I stumbled across UnixGuy’s video on “Why Most Beginners Fail at Cybersecurity.” That one hit different. It didn’t just teach, it made me reflect. I wasn’t failing, but I was unfocused. I felt a nudge towards application security, and something clicked. Web apps, APIs, misconfigs, vulns. All the messy stuff that lives right at the intersection of code and security. I was home.&lt;/p&gt;

&lt;p&gt;Around this time, I was also navigating college, not exactly the ideal multitask setup, but I made it work. I started small: DoS attacks in a lab setup, web hacking, setting up various linux distros just to find what suits best for me (i use kali btw), brute-forcing services (legally, don’t worry), setting up reverse shells, learning how to phish like the bad guys, just so I could learn how to defend like the good ones.&lt;/p&gt;

&lt;p&gt;And somewhere in between, I realized something wild:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Small consistent efforts can add up to something big :: Slow progress &amp;gt; No progress&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Meanwhile, I kept coding. Python was still my comfort zone, but then Go (Golang) came knocking. And yeah, if Python is like playing with LEGO bricks, Go is like building IKEA furniture with laser precision. It’s clean, fast, and just works. I spent weeks learning the basics and then proceeded to advanced concepts with goroutines, concurrency patterns, channels. It was fun connecting the dots. I built different software ranging from APIs, Backend, CLIs... (Wait, there's more)&lt;/p&gt;

&lt;p&gt;Then came the certifications. Along the way, i got the APIsec Certified Practitioner, and that basically flipped a switch in my brain to just how many APIs are out there casually leaking sensitive data like it’s a hobby. It was a whole new level of security stuff, API designs, documentations...&lt;/p&gt;

&lt;p&gt;Right now? I’m obsessed with building tools, solving problems, and contributing to anything that mixes code with security. I’ve started focusing on Application security, secure coding, software engineering concepts and principles (Where software meets security). I want to create things that not only work but are hard to break.&lt;/p&gt;

&lt;p&gt;And the best part? I know this is still just the beginning.&lt;/p&gt;

&lt;p&gt;Looking back, it's clear I'm not just aiming to learn a thousand concepts. I'm really trying to build a thousand projects. Because when you build a thousand projects, you can learn ten thousand concepts.&lt;/p&gt;

&lt;p&gt;This post is a bit of a personal checkpoint for me, something to look back on in a few years and see how far I've come.&lt;/p&gt;

&lt;h4&gt;
  
  
  #LessonLearned
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;▫️ Your Passion and Curiosity is your Fuel to Greatness &lt;br&gt;
▫️ Don’t rely on every piece of info from social media &lt;br&gt;
▫️ &lt;strong&gt;Your Mindset is Everything&lt;/strong&gt;&lt;br&gt;
▫️ Never Back Down (Consistency is KEY)&lt;br&gt;
▫️ Don't worry about the Future (Flow with the GO) &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Big Thanks 🙏&lt;br&gt;
To everyone who's supported me so far; from X (Twitter), LinkedIn, my college course mates, random Discord servers, the cybersecurity community, and all the quiet internet mentors I’ve never met but who changed my mindset forever. Thank you!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>go</category>
      <category>cybersecurity</category>
    </item>
  </channel>
</rss>
