<?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: Shakiran Nannyombi</title>
    <description>The latest articles on Forem by Shakiran Nannyombi (@shakiran_nannyombi_b0bf41).</description>
    <link>https://forem.com/shakiran_nannyombi_b0bf41</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%2F2877088%2F0ce2d56e-1da7-4984-8208-a8e49bdba656.jpg</url>
      <title>Forem: Shakiran Nannyombi</title>
      <link>https://forem.com/shakiran_nannyombi_b0bf41</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/shakiran_nannyombi_b0bf41"/>
    <language>en</language>
    <item>
      <title>A Developer’s Lesson on Feedback</title>
      <dc:creator>Shakiran Nannyombi</dc:creator>
      <pubDate>Tue, 21 Apr 2026 06:49:21 +0000</pubDate>
      <link>https://forem.com/shakiran_nannyombi_b0bf41/a-developers-lesson-on-feedback-2291</link>
      <guid>https://forem.com/shakiran_nannyombi_b0bf41/a-developers-lesson-on-feedback-2291</guid>
      <description>&lt;p&gt;I built my first React Native MVP for a startup pitch.&lt;/p&gt;

&lt;p&gt;I was proud of it… until the feedback started coming in.&lt;/p&gt;

&lt;p&gt;Instead of handling it, I passed it to a junior teammate.&lt;/p&gt;

&lt;p&gt;At the time, I told myself:&lt;br&gt;
“I just don’t like being told what to do.”&lt;/p&gt;

&lt;p&gt;But the truth?&lt;/p&gt;

&lt;p&gt;I was tired.&lt;br&gt;
I felt unappreciated.&lt;br&gt;
And I was too attached to my work.&lt;/p&gt;

&lt;p&gt;Later that day, I stepped away, came back, and realized something:&lt;/p&gt;

&lt;p&gt;The problem wasn’t the feedback.&lt;br&gt;
It was my &lt;em&gt;state when I received it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As developers, we think we’re logical—but feedback hits your ego, your energy, and your identity.&lt;/p&gt;

&lt;p&gt;That’s why we react instead of process.&lt;/p&gt;

&lt;p&gt;This was a tough lesson for me, especially after realizing it’s a pattern that’s cost me opportunities before.&lt;/p&gt;

&lt;p&gt;I wrote a full breakdown on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why devs resist feedback&lt;/li&gt;
&lt;li&gt;how ego + burnout affect us&lt;/li&gt;
&lt;li&gt;and how to actually handle it better&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read it here 👇&lt;br&gt;
&lt;a href="https://shakiran.hashnode.dev/the-code-wasn-t-the-problem-my-state-was" rel="noopener noreferrer"&gt;the-code-wasn-t-the-problem-my-state-was&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>career</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building Secure AI Agents with Auth0 Token Vault</title>
      <dc:creator>Shakiran Nannyombi</dc:creator>
      <pubDate>Tue, 14 Apr 2026 01:55:43 +0000</pubDate>
      <link>https://forem.com/shakiran_nannyombi_b0bf41/building-secure-ai-agents-with-auth0-token-vault-47l1</link>
      <guid>https://forem.com/shakiran_nannyombi_b0bf41/building-secure-ai-agents-with-auth0-token-vault-47l1</guid>
      <description>&lt;h2&gt;
  
  
  How I stopped storing sensitive tokens in my database and built a security-first AI system
&lt;/h2&gt;

&lt;p&gt;I built a multi-agent AI assistant that needed access to user data like Gmail, Google Calendar, and Notion.&lt;/p&gt;

&lt;p&gt;At first, I thought I had it figured out.&lt;/p&gt;

&lt;p&gt;I encrypted OAuth tokens myself and stored them in my database.&lt;/p&gt;

&lt;p&gt;It worked… but something didn’t feel right.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with “DIY security.”
&lt;/h2&gt;

&lt;p&gt;During the Auth0 “Authorized to Act: Auth0 for AI Agents” hackathon, I took a step back and reviewed my setup.&lt;/p&gt;

&lt;p&gt;My system (Londoolink AI) is built with FastAPI + LangGraph and generates personalized daily briefings using multiple agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📧 Gmail Agent
&lt;/li&gt;
&lt;li&gt;📅 Calendar Agent
&lt;/li&gt;
&lt;li&gt;📝 Notion Agent
&lt;/li&gt;
&lt;li&gt;📱 Social Agent
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To do that, it relies on OAuth tokens.&lt;/p&gt;

&lt;p&gt;And that’s where things got risky.&lt;/p&gt;

&lt;h3&gt;
  
  
  My original approach:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AES-256 encryption for tokens
&lt;/li&gt;
&lt;li&gt;Tokens stored in my database
&lt;/li&gt;
&lt;li&gt;Custom refresh handling
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It worked… but it wasn’t scalable or truly secure.&lt;/p&gt;

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

&lt;p&gt;I was responsible for things I shouldn’t be owning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔐 Encryption key management
&lt;/li&gt;
&lt;li&gt;🔄 Token refresh logic
&lt;/li&gt;
&lt;li&gt;📊 Audit trails (basically none)
&lt;/li&gt;
&lt;li&gt;👀 No visibility into token usage
&lt;/li&gt;
&lt;li&gt;⚠️ No proper control for sensitive actions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;p&gt;I was rebuilding a security system from scratch… badly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The switch: Auth0 Token Vault
&lt;/h2&gt;

&lt;p&gt;That’s when I found Auth0 Token Vault.&lt;/p&gt;

&lt;p&gt;And it changed everything.&lt;/p&gt;

&lt;p&gt;Instead of managing tokens myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auth0 handles token storage securely
&lt;/li&gt;
&lt;li&gt;Built-in token refresh just works
&lt;/li&gt;
&lt;li&gt;Full audit logs out of the box
&lt;/li&gt;
&lt;li&gt;Tokens never touch my database
&lt;/li&gt;
&lt;li&gt;Easy to enforce secure access patterns
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It basically turns token management into a secure API call.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔒 More secure by design
&lt;/li&gt;
&lt;li&gt;📈 Easier to scale
&lt;/li&gt;
&lt;li&gt;🧾 Fully auditable
&lt;/li&gt;
&lt;li&gt;🤝 Much more user trust
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly:&lt;/p&gt;

&lt;p&gt;I stopped worrying about whether I was “doing security right” and started focusing on building features.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the project
&lt;/h2&gt;

&lt;p&gt;Londoolink AI is a multi-agent assistant that reduces information overload by generating personalized daily briefings from your connected tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Shoutout
&lt;/h2&gt;

&lt;p&gt;Big shoutout to the Auth0 team for building tools that make secure AI development actually practical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the full story
&lt;/h2&gt;

&lt;p&gt;If you want the deeper breakdown, architecture details, and implementation steps, read the full post here:&lt;br&gt;&lt;br&gt;
&lt;a href="https://shakiran.hashnode.dev/building-secure-ai-agents-with-auth0-token-vault" rel="noopener noreferrer"&gt;Shakiran.hashnode.dev&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s talk
&lt;/h2&gt;

&lt;p&gt;Have you built AI agents before?&lt;/p&gt;

&lt;p&gt;How are you handling auth + token security?&lt;/p&gt;

&lt;p&gt;I’d love to hear your approach 👇&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>agents</category>
    </item>
    <item>
      <title>My AI Was Smart… But Useless</title>
      <dc:creator>Shakiran Nannyombi</dc:creator>
      <pubDate>Tue, 14 Apr 2026 00:42:07 +0000</pubDate>
      <link>https://forem.com/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n</link>
      <guid>https://forem.com/shakiran_nannyombi_b0bf41/my-ai-was-smart-but-useless-e4n</guid>
      <description>&lt;p&gt;I built an AI that generates daily briefings from emails, calendars, Notion, and social media.&lt;/p&gt;

&lt;p&gt;It worked. It was fast. It was accurate.&lt;/p&gt;

&lt;p&gt;But it had one fatal flaw:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It forgot everything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every session = reset.&lt;br&gt;
Every user = stranger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No memory. No context. No continuity.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Then I Fixed It
&lt;/h2&gt;

&lt;p&gt;I discovered &lt;strong&gt;Backboard.io&lt;/strong&gt; after an Auth0 Hackathon on Devpost, and later explored it deeper during MLH Global Hack Week: API Week 2026.&lt;/p&gt;

&lt;p&gt;That’s when it clicked:&lt;/p&gt;

&lt;p&gt;My AI didn’t need to be smarter. It needed memory.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Changed Instantly
&lt;/h3&gt;

&lt;p&gt;After adding memory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My AI remembers user preferences&lt;/li&gt;
&lt;li&gt;Conversations actually continue&lt;/li&gt;
&lt;li&gt;Outputs feel personal, not generic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It stopped feeling like a chatbot and started feeling like an assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Shift
&lt;/h2&gt;

&lt;p&gt;Most AI apps today are stateless. That’s the problem.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Without Memory&lt;/th&gt;
&lt;th&gt;With Memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;You repeat yourself&lt;/td&gt;
&lt;td&gt;Your AI learns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context is lost&lt;/td&gt;
&lt;td&gt;Your AI adapts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Personalization is fake&lt;/td&gt;
&lt;td&gt;Your AI improves over time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I break down exactly how I built it here:&lt;br&gt;
👉 &lt;a href="https://shakiran.hashnode.dev/how-backboard-io-added-memory-to-my-ai-agent" rel="noopener noreferrer"&gt;https://shakiran.hashnode.dev/how-backboard-io-added-memory-to-my-ai-agent&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Shoutout
&lt;/h2&gt;

&lt;p&gt;Huge shoutout to @MLH Global API Hack Week for the sessions and community that made it easier to explore and build with tools like this in real time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Invisible Brains: 5 Surprising Realities of the Tiny Operating Systems Running Our World</title>
      <dc:creator>Shakiran Nannyombi</dc:creator>
      <pubDate>Wed, 01 Apr 2026 10:48:15 +0000</pubDate>
      <link>https://forem.com/shakiran_nannyombi_b0bf41/the-invisible-brains-5-surprising-realities-of-the-tiny-operating-systems-running-our-world-dnd</link>
      <guid>https://forem.com/shakiran_nannyombi_b0bf41/the-invisible-brains-5-surprising-realities-of-the-tiny-operating-systems-running-our-world-dnd</guid>
      <description>&lt;h3&gt;
  
  
  How tiny operating systems power billions of IoT devices with just kilobytes of memory.
&lt;/h3&gt;

&lt;p&gt;When we think about operating systems, we usually imagine powerful platforms like Microsoft Windows, macOS, or Linux, designed for laptops, servers, and smartphones, with gigabytes of RAM and multi-core processors.&lt;/p&gt;

&lt;p&gt;But the majority of computers on Earth don’t run those systems.&lt;/p&gt;

&lt;p&gt;Instead, they run tiny operating systems on microscopic hardware: microcontrollers with 10 KB of RAM, a 50 MHz processor, and batteries expected to last years.&lt;/p&gt;

&lt;p&gt;These “invisible” operating systems power:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;medical implants&lt;/li&gt;
&lt;li&gt;industrial sensors&lt;/li&gt;
&lt;li&gt;smart home devices&lt;/li&gt;
&lt;li&gt;vehicle controllers&lt;/li&gt;
&lt;li&gt;environmental monitoring systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Operating systems like &lt;strong&gt;Contiki&lt;/strong&gt;, &lt;strong&gt;TinyOS&lt;/strong&gt;, and &lt;strong&gt;Tock OS&lt;/strong&gt; redefine what an operating system can be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are five surprising realities about how these systems actually work.
&lt;/h2&gt;

&lt;p&gt;Read more at &lt;a href="https://shakiran.hashnode.dev/embedded-operating-systems-realities" rel="noopener noreferrer"&gt;Where the wind meets me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iot</category>
      <category>os</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Welcome to Fundamentals Mastery: Learning in Public</title>
      <dc:creator>Shakiran Nannyombi</dc:creator>
      <pubDate>Wed, 25 Mar 2026 12:30:36 +0000</pubDate>
      <link>https://forem.com/shakiran_nannyombi_b0bf41/welcome-to-fundamentals-mastery-learning-in-public-4d80</link>
      <guid>https://forem.com/shakiran_nannyombi_b0bf41/welcome-to-fundamentals-mastery-learning-in-public-4d80</guid>
      <description>&lt;p&gt;&lt;a href="https://shakiran.hashnode.dev/welcome-to-fundamentals-mastery-learning-in-public" rel="noopener noreferrer"&gt;Read full blog&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Every great engineer eventually discovers the same truth:
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Strong fundamentals matter more than anything else.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Frameworks change. Tools evolve. Programming languages rise and fall. But the core concepts of computer science and software engineering remain the foundation that great software is built on.&lt;/p&gt;

&lt;p&gt;That realization is what inspired me to start this blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why I Started Fundamentals Mastery&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My name is Shakiran Nannyombi, and I’m a software engineer who is deeply passionate about technology, developer communities, and continuous learning.&lt;/p&gt;

&lt;p&gt;As I continue growing in software engineering, I’ve realized that truly understanding the fundamentals of computer science is one of the most valuable investments I can make.&lt;/p&gt;

&lt;p&gt;Instead of just consuming tutorials or jumping from tool to tool, I want to slow down and master the concepts that power modern software systems.&lt;/p&gt;

&lt;p&gt;Let’s learn and grow together.&lt;/p&gt;

&lt;p&gt;— Shakiran&lt;/p&gt;

</description>
      <category>fundamentals</category>
      <category>mastery</category>
      <category>learning</category>
      <category>navigating</category>
    </item>
  </channel>
</rss>
