<?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: Wael Mansour</title>
    <description>The latest articles on Forem by Wael Mansour (@waelouf).</description>
    <link>https://forem.com/waelouf</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%2F1002138%2F9d1c6778-6c36-4d24-bbc6-0323279d6e4a.jpg</url>
      <title>Forem: Wael Mansour</title>
      <link>https://forem.com/waelouf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/waelouf"/>
    <language>en</language>
    <item>
      <title>Shadow Org Charts: Why the Official Hierarchy Is Only Half the Story</title>
      <dc:creator>Wael Mansour</dc:creator>
      <pubDate>Wed, 29 Apr 2026 15:21:00 +0000</pubDate>
      <link>https://forem.com/waelouf/shadow-org-charts-why-the-official-hierarchy-is-only-half-the-story-29fj</link>
      <guid>https://forem.com/waelouf/shadow-org-charts-why-the-official-hierarchy-is-only-half-the-story-29fj</guid>
      <description>&lt;p&gt;Every company has two org charts. The official one lives in an HR system somewhere. It shows boxes, lines, and reporting relationships. It is neat, hierarchical, and largely fictional as a map of how decisions actually get made.&lt;/p&gt;

&lt;p&gt;The second one exists nowhere in writing. It lives in people's heads — in the instincts of engineers who have been around long enough to know who you really need to talk to before a proposal goes anywhere. This is the shadow org chart, and understanding it is one of the more underrated career skills an engineer can develop.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the Official Chart Actually Represents
&lt;/h2&gt;

&lt;p&gt;Org charts are documentation of authority, not influence. They tell you who has formal power — who can hire, fire, promote, and approve budgets. That information is real and it matters. But it captures a snapshot of a single dimension of organizational life.&lt;/p&gt;

&lt;p&gt;What it misses is everything informal: who the technical expert is that three teams quietly consult before making architecture decisions, which program manager is the actual connector between two organizations that are theoretically aligned but practically siloed, and which senior engineer has been at the company long enough that even VPs will run a contentious idea past them before taking it to a staff meeting.&lt;/p&gt;

&lt;p&gt;The org chart is the skeleton. The shadow org is the nervous system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Informal Power Structures Develop
&lt;/h2&gt;

&lt;p&gt;Organizations are made of people, and people form relationships that predate and outlast any reporting structure. A manager who was promoted two years ago still defers to a peer who mentored them. An engineer who moved teams carries institutional knowledge and trust that their new org chart position does not reflect.&lt;/p&gt;

&lt;p&gt;Tanya Reilly's &lt;em&gt;The Staff Engineer's Path&lt;/em&gt; makes this point clearly: staff-level engineers need to understand not just the technical landscape but the organizational one. The ability to influence without authority — a phrase that appears often in conversations about senior technical leadership — is fundamentally a shadow-org skill. It only works if you know where the informal authority actually sits.&lt;/p&gt;

&lt;p&gt;Expertise creates its own gravity. When someone becomes the go-to person for a particular system, a domain, or a type of problem, people route around the org chart to reach them. Trust networks form through repeated collaboration, especially in ambiguous situations where the org chart offered no guidance. Historical relationships — people who worked together through a reorg, a crisis, or a product launch — carry weight that no reporting line can fully convey.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Types of Power That Never Appear on Any Chart
&lt;/h2&gt;

&lt;p&gt;There are a few archetypes worth learning to recognize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision gatekeepers&lt;/strong&gt; are people whose approval or buy-in is required before something moves forward, even though they have no formal authority over it. This might be a security architect who hasn't shipped code in three years but whose concerns can halt a launch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Informal advisors&lt;/strong&gt; are the people leadership quietly consults before making anything official. Their titles are often misleading. They might be an individual contributor with a decade of context, or a director who is technically peers with five others but whose read on a situation carries disproportionate weight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connectors&lt;/strong&gt; hold the shadow org together. They know everyone, they understand each team's actual priorities (not the stated ones), and they are often the fastest path between two groups that technically have a shared manager but practically never talk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blockers&lt;/strong&gt; are their own category. These are individuals whose opposition — stated or unstated — can stall an initiative indefinitely. Ignoring them is almost always a mistake.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Costs to Not Know
&lt;/h2&gt;

&lt;p&gt;The consequences of shadow-org blindness tend to be concrete and painful. An initiative that needed sign-off from a particular team lead stalls because the engineer driving it escalated to the wrong person. A proposal gets shot down in a staff meeting because the informal advisor whose concerns were never addressed chose that moment to voice them publicly.&lt;/p&gt;

&lt;p&gt;Missed alignment is probably the most common failure mode. Two teams are nominally working toward the same goal but the engineers who actually have influence over each team's direction have never been in the same room. The official structure suggests this should be fine. The shadow org makes clear it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Start Mapping It
&lt;/h2&gt;

&lt;p&gt;Observation is the first tool. Watch who speaks in large meetings — not who is called upon because of their title, but who volunteers information and whose contributions visibly shift the conversation. Watch who gets thanked in all-hands updates. Both patterns point toward informal influence.&lt;/p&gt;

&lt;p&gt;One-on-ones are the best research instrument available. When meeting someone new, asking "who else do you think I should talk to about this?" generates a map of consultation networks faster than any org chart crawl. The people who keep appearing in these referrals are usually load-bearing nodes in the shadow structure.&lt;/p&gt;

&lt;p&gt;Pay attention to who gets consulted before decisions go public. There is almost always a pre-meeting before the meeting — a round of informal calls or Slack conversations where the real debate happens. Noticing who is in that circuit, and eventually being in it yourself, is how influence compounds over time.&lt;/p&gt;

&lt;p&gt;Watch where escalations actually land. When something is stuck, where do people take it? The answer is often a person, not a process — and that person's real organizational weight becomes visible in how quickly the problem moves afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Map Is Never Finished
&lt;/h2&gt;

&lt;p&gt;Shadow org charts are not static. They shift when people leave, when teams merge, when someone builds trust through a high-stakes project or loses it through a public misstep. The engineer who was a key node two years ago may be largely invisible today.&lt;/p&gt;

&lt;p&gt;The work of mapping it is therefore ongoing, not a one-time exercise. It requires staying curious about people — their history, their relationships, their areas of real expertise versus nominal responsibility.&lt;/p&gt;

&lt;p&gt;The engineers who navigate organizations well are rarely the ones who read the official chart and followed it literally. They are the ones who understood that the chart describes one kind of organizational reality, and built the patience to understand the other kind too.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>careerdevelopment</category>
      <category>influence</category>
      <category>workplace</category>
    </item>
    <item>
      <title>Yet Another Set of Claude Code Plugins (But Maybe Useful?)</title>
      <dc:creator>Wael Mansour</dc:creator>
      <pubDate>Sat, 07 Feb 2026 21:01:01 +0000</pubDate>
      <link>https://forem.com/waelouf/yet-another-set-of-claude-code-plugins-but-maybe-useful-2n4k</link>
      <guid>https://forem.com/waelouf/yet-another-set-of-claude-code-plugins-but-maybe-useful-2n4k</guid>
      <description>&lt;p&gt;I've been tinkering with &lt;a href="https://claude.com/code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; for a while now, and like many developers, I found myself repeating certain workflows over and over. So I did what any developer would do - I automated them into skills, agents, and commands. Then figured, why not package them up as plugins and share them with others?&lt;/p&gt;

&lt;p&gt;Here's &lt;strong&gt;Claude Code Powerups&lt;/strong&gt; - basically a small collection of plugins I've put together that help with some common tasks I run into. Nothing groundbreaking, but they've been useful for me, so maybe they'll be useful for you too.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What Are These Plugins?
&lt;/h2&gt;

&lt;p&gt;Just Claude Code plugins with some specialized prompts and workflows. Each one packages up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; - Some custom commands I found myself needing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents&lt;/strong&gt; - Prompts configured for specific tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tools&lt;/strong&gt; - A few utilities that make repetitive stuff easier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; - Basically documentation and patterns I keep referencing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of them as shortcuts to avoid having to explain the same context to Claude every time. Less "expert consultant," more "that thing you'd document in a wiki if you had time."&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 What's Available
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🏗️ Clean Architecture Powerup
&lt;/h3&gt;

&lt;p&gt;If you work with .NET and Clean Architecture, this might save you some time. It's got:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interactive scaffolding&lt;/strong&gt; - Helps set up new projects without forgetting the boilerplate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feature generation&lt;/strong&gt; - Generates CRUD features across layers (saves a lot of copy-paste)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architectural audits&lt;/strong&gt; - Points out when you accidentally broke the pattern&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration assistance&lt;/strong&gt; - Helps refactor existing code (though migrations are never fun)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pattern library&lt;/strong&gt; - Common patterns so you don't have to look them up every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful if you're building .NET applications with FastEndpoints and trying to keep things clean. Your mileage may vary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/waelouf/cc-powerup-clean-architecture" rel="noopener noreferrer"&gt;View Plugin →&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Azure Architect Powerup
&lt;/h3&gt;

&lt;p&gt;Azure configuration can be a pain, so this plugin tries to make it less painful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure provisioning&lt;/strong&gt; - Helps you set up Azure resources without missing the obvious stuff&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD pipeline setup&lt;/strong&gt; - Templates for Azure DevOps and GitHub Actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-environment deployment&lt;/strong&gt; - Separate dev/staging/prod configs (because we all forget to do this properly)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security and monitoring&lt;/strong&gt; - Basic security and logging setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost optimization&lt;/strong&gt; - Tries to help you not overspend on Azure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Works with Azure CLI, Bicep, and Terraform. Attempts to follow Azure best practices, though Azure has a lot of opinions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/waelouf/cc-powerup-azure-architect" rel="noopener noreferrer"&gt;View Plugin →&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 OWASP LLM Top 10 Security Auditor
&lt;/h3&gt;

&lt;p&gt;Security for AI stuff is still pretty new, and I kept forgetting to check for common issues. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability scanning&lt;/strong&gt; - Looks for OWASP LLM Top 10 issues in your code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk assessment&lt;/strong&gt; - Security reports (basically a checklist)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remediation guidance&lt;/strong&gt; - Suggestions for fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance checks&lt;/strong&gt; - Makes sure you're not doing obviously bad things&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-deployment audits&lt;/strong&gt; - Better to catch problems early&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Helpful if you're building AI applications and want to avoid the most common security mistakes. Won't catch everything, but catches the obvious stuff.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/waelouf/cc-powerup-owasp-llm" rel="noopener noreferrer"&gt;View Plugin →&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Getting Started
&lt;/h2&gt;

&lt;p&gt;Installing powerups is simple with the Claude Code CLI:&lt;/p&gt;

&lt;h3&gt;
  
  
  Install the Marketplace
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude-code plugin &lt;span class="nb"&gt;install &lt;/span&gt;waelouf/claude-code-powerups
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Individual Powerups
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Clean Architecture Powerup&lt;/span&gt;
claude-code plugin &lt;span class="nb"&gt;install &lt;/span&gt;waelouf/cc-powerup-clean-architecture

&lt;span class="c"&gt;# Install Azure Architect Powerup&lt;/span&gt;
claude-code plugin &lt;span class="nb"&gt;install &lt;/span&gt;waelouf/cc-powerup-azure-architect

&lt;span class="c"&gt;# Install OWASP LLM Security Auditor&lt;/span&gt;
claude-code plugin &lt;span class="nb"&gt;install &lt;/span&gt;waelouf/cc-powerup-owasp-llm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install all at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude-code plugin &lt;span class="nb"&gt;install &lt;/span&gt;waelouf/cc-powerup-clean-architecture waelouf/cc-powerup-azure-architect waelouf/cc-powerup-owasp-llm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  💡 Why Bother Making These?
&lt;/h2&gt;

&lt;p&gt;Honestly? I got tired of re-explaining the same context to Claude every time I switched tasks. One minute I'm working on a .NET project, the next I'm dealing with Azure deployment, then I'm reviewing security stuff.&lt;/p&gt;

&lt;p&gt;These plugins just save me from having to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open documentation tabs I've already read 50 times&lt;/li&gt;
&lt;li&gt;Remember which patterns I decided to use last time&lt;/li&gt;
&lt;li&gt;Copy-paste boilerplate from my previous projects&lt;/li&gt;
&lt;li&gt;Explain to Claude what "Clean Architecture" means for the hundredth time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not revolutionary, just practical. Like having notes from your last project readily available.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔮 What's Next?
&lt;/h2&gt;

&lt;p&gt;I'll probably add more as I run into repetitive tasks that bug me enough. Some ideas I'm considering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend patterns (if I can figure out how to keep up with JS framework churn)&lt;/li&gt;
&lt;li&gt;Database stuff (schema design, migrations)&lt;/li&gt;
&lt;li&gt;DevOps workflows (the kind everyone does but nobody documents)&lt;/li&gt;
&lt;li&gt;API design patterns (REST, GraphQL, whatever's trendy)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But we'll see. Depends on what I actually need and have time for.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Community and Contributions
&lt;/h2&gt;

&lt;p&gt;Everything's open source on GitHub. If you find bugs (which you probably will) or have ideas for improvements, feel free to open an issue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Marketplace&lt;/strong&gt;: &lt;a href="https://github.com/waelouf/claude-code-powerups" rel="noopener noreferrer"&gt;github.com/waelouf/claude-code-powerups&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Issues &amp;amp; Feedback&lt;/strong&gt;: Open an issue on the respective repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contributions&lt;/strong&gt;: PRs welcome if you want to fix something I messed up&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎓 Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://claude.com/code" rel="noopener noreferrer"&gt;Claude Code Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/waelouf/cc-powerup-clean-architecture" rel="noopener noreferrer"&gt;Clean Architecture Powerup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/waelouf/cc-powerup-azure-architect" rel="noopener noreferrer"&gt;Azure Architect Powerup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/waelouf/cc-powerup-owasp-llm" rel="noopener noreferrer"&gt;OWASP LLM Security Auditor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Give them a try if you think they might be useful. Or don't. No pressure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Questions, feedback, or just want to tell me something's broken? Drop a comment below or open an issue on GitHub.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.waelouf.com/post/blog/claude-powerups/" rel="noopener noreferrer"&gt;Original post&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devtools</category>
      <category>claude</category>
      <category>plugin</category>
    </item>
    <item>
      <title>How to Be an SME, Not an SPF: From Gatekeeper to Growth Enabler</title>
      <dc:creator>Wael Mansour</dc:creator>
      <pubDate>Sun, 25 Jan 2026 18:01:49 +0000</pubDate>
      <link>https://forem.com/waelouf/how-to-be-an-sme-not-an-spf-from-gatekeeper-to-growth-enabler-59oa</link>
      <guid>https://forem.com/waelouf/how-to-be-an-sme-not-an-spf-from-gatekeeper-to-growth-enabler-59oa</guid>
      <description>&lt;p&gt;In the fast-paced world of technology and business, there's a certain allure to being the go-to person. The one everyone turns to when a critical system goes down, or a complex problem needs solving. You're the expert, the guru, the Subject Matter Expert (SME). And that feels good. But there's a subtle, yet dangerous, line you can cross, transforming yourself from an invaluable asset into a Single Point of Failure (SPF).&lt;/p&gt;

&lt;p&gt;This isn't just about job security; it's about career growth, team resilience, and ultimately, the health of your organization. Let's dive into what these terms really mean and how you can ensure your expertise elevates everyone, rather than holding them hostage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Defining the Acronyms: SME vs. SPF
&lt;/h3&gt;

&lt;p&gt;At first glance, an SME and an SPF might seem similar. Both possess deep knowledge in a specific area. But their impact couldn't be more different.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Subject Matter Expert (SME)&lt;/strong&gt; is an individual with profound knowledge and understanding in a particular field. They are the authority, the person who can provide insights, guide decisions, and solve complex problems within their domain. Think of the lead architect who understands every nuance of a system's design, or the data scientist who can interpret the most obscure analytical models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Single Point of Failure (SPF)&lt;/strong&gt;, on the other hand, is a component of a system that, if it fails, stops the entire system from working. In human terms, an SPF is the person without whom a critical process, project, or even an entire department grinds to a halt. Imagine a star striker on a football team who's the only person who can score goals. If they get injured, the team is practically guaranteed to lose.&lt;/p&gt;

&lt;p&gt;The critical distinction lies in the impact of their absence. An SME’s absence might slow things down; an SPF’s absence brings everything crashing down.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Hidden Dangers of Being an SPF
&lt;/h3&gt;

&lt;p&gt;While being the "only one who knows how to do X" can feel empowering and even secure your position in the short term, it's a dangerous trap for both you and your organization.&lt;/p&gt;

&lt;p&gt;For the Individual:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Burnout&lt;/strong&gt;: Being constantly on call, with no one else to share the load, leads to immense stress and exhaustion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stagnation&lt;/strong&gt;: You spend all your time maintaining the status quo or putting out fires, leaving no room for learning new skills, innovation, or career advancement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limited Growth&lt;/strong&gt;: It's hard to move up when you're indispensable in your current role. Your organization might hesitate to promote you if it means creating a gaping hole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vacation Guilt&lt;/strong&gt;: Ever feel like you can't take a proper holiday because everything will collapse without you? That's the SPF burden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the Organization:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High Risk&lt;/strong&gt;: What happens if your SPF gets sick, leaves, win the lottery and decide not to work anymore, or simply makes a mistake? Critical operations can cease, leading to lost revenue, missed deadlines, and damaged reputation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slow Progress&lt;/strong&gt;: Bottlenecks form around the SPF, slowing down projects and innovation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lack of Redundancy&lt;/strong&gt;: The team becomes fragile, unable to adapt to changes or unexpected challenges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disengaged Team&lt;/strong&gt;: Other team members might feel disempowered or unmotivated if they can't contribute to critical areas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  From Gatekeeper to Growth Enabler: The SME Mindset
&lt;/h3&gt;

&lt;p&gt;The shift from SPF to a true, impactful SME begins with a change in mindset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The SPF mindset&lt;/strong&gt; often involves hoarding knowledge, being a gatekeeper, and subtly (or overtly) enjoying the power that comes from being the only one who understands a complex system. They might believe that their indispensability is their job security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The SME mindset&lt;/strong&gt;, conversely, is about leverage and empowerment. It means understanding that your true value isn't in what only you know, but in how effectively you can enable everyone else to succeed. It's about sharing knowledge, building robust processes, and mentoring others so that the team thrives even without your direct, constant intervention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Strategies to Transform from SPF to True SME
&lt;/h3&gt;

&lt;p&gt;The good news is that this transformation is entirely within your control. Here are actionable steps to shed the SPF burden and become an impactful SME:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document Everything, Relentlessly:

&lt;ul&gt;
&lt;li&gt;"If it's not documented, it didn't happen." This adage is your new mantra. Create detailed process guides, system architecture diagrams, troubleshooting steps, and decision logs.&lt;/li&gt;
&lt;li&gt;Tools: Utilize wikis (Confluence, Notion), shared drives, README files in repositories, or internal knowledge bases. Make it easy for others to find and understand.&lt;/li&gt;
&lt;li&gt;Regular Updates: Documentation isn't a one-time task. Schedule regular reviews and updates to ensure it remains current.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cross-Train and Delegate:

&lt;ul&gt;
&lt;li&gt;Identify Critical Tasks: Pinpoint the tasks where you are currently the sole owner.&lt;/li&gt;
&lt;li&gt;Train Your Peers: Actively teach your colleagues. Schedule dedicated training sessions, pair programming, or shadowing opportunities.&lt;/li&gt;
&lt;li&gt;Empower Delegation: Once trained, empower team members to take ownership. Start with smaller, less critical tasks and gradually increase responsibility.&lt;/li&gt;
&lt;li&gt;Create a visual example of a cross-training session with two people at a computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Automate Mundane and Repetitive Tasks:

&lt;ul&gt;
&lt;li&gt;If you're repeatedly doing the same manual task, it's a candidate for automation.&lt;/li&gt;
&lt;li&gt;Scripting: Learn scripting languages (Python, PowerShell, Bash) to automate routine operations.&lt;/li&gt;
&lt;li&gt;Tools: Leverage automation platforms and CI/CD pipelines to streamline deployments, testing, and monitoring. This frees up your intellectual capacity for higher-level problem-solving.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Foster a Culture of Knowledge Sharing:

&lt;ul&gt;
&lt;li&gt;Lead by Example: Be open to questions, share your insights in team meetings, and actively seek opportunities to teach.&lt;/li&gt;
&lt;li&gt;Regular Knowledge Sharing Sessions: Encourage your team to hold "lunch and learns" or internal tech talks where individuals share what they've learned.&lt;/li&gt;
&lt;li&gt;Blameless Postmortems: When incidents occur, focus on what can be learned and documented, rather than who is to blame. This encourages open discussion and process improvement.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Seek Mentorship – Both Ways:

&lt;ul&gt;
&lt;li&gt;Mentor Others: Actively participate in mentorship programs within your organization. Guide junior team members, helping them develop their skills and confidence.&lt;/li&gt;
&lt;li&gt;Be Mentored: Don't stop learning. Find mentors who can help you grow in new areas, pushing you beyond your current domain of expertise.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Rewards of Being a True SME
&lt;/h3&gt;

&lt;p&gt;Shifting from an SPF to a truly impactful SME doesn't diminish your value; it amplifies it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Greater Impact: You move from being a reactive problem-solver to a proactive innovator. You can focus on strategic initiatives, complex challenges, and driving genuine progress.&lt;/li&gt;
&lt;li&gt;Enhanced Career Growth: You're seen as a leader, a mentor, and a force multiplier for your team. This opens doors to new roles, promotions, and opportunities.&lt;/li&gt;
&lt;li&gt;Reduced Stress and Improved Work-Life Balance: With shared knowledge and delegated responsibilities, you gain the freedom to step away, take a vacation, and truly disconnect without fear of things collapsing.&lt;/li&gt;
&lt;li&gt;Resilient Teams: You contribute to building a stronger, more adaptable, and more capable team that can weather any storm.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, your goal shouldn't be to make yourself indispensable by hoarding knowledge, but to make your team indispensable by sharing it. Embrace the true spirit of a Subject Matter Expert, and you'll find not only greater professional success but also a more fulfilling and less stressful career.&lt;/p&gt;




&lt;p&gt;Some good reads related to this topic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Phoenix Project&lt;/li&gt;
&lt;li&gt;The Mythical Man-Month&lt;/li&gt;
&lt;li&gt;Team of Teams&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Original Post:&lt;br&gt;
&lt;a href="https://blog.waelouf.com/post/blog/sme-vs-spf/" rel="noopener noreferrer"&gt;https://blog.waelouf.com/post/blog/sme-vs-spf/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>leadership</category>
      <category>careerdevelopment</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Nanuq 2.0: Unified Management Platform for Kafka, Redis, RabbitMQ, AWS, and Azure</title>
      <dc:creator>Wael Mansour</dc:creator>
      <pubDate>Tue, 20 Jan 2026 01:31:44 +0000</pubDate>
      <link>https://forem.com/waelouf/nanuq-20-unified-management-platform-for-kafka-redis-rabbitmq-aws-and-azure-4odf</link>
      <guid>https://forem.com/waelouf/nanuq-20-unified-management-platform-for-kafka-redis-rabbitmq-aws-and-azure-4odf</guid>
      <description>&lt;p&gt;Managing multiple messaging and caching systems across development environments is a common pain point. Each platform requires its own CLI tools, different authentication mechanisms, and unique management interfaces. After working with teams juggling Kafka topics, Redis caches, RabbitMQ exchanges, AWS SQS queues, and Azure Service Bus—often simultaneously—I built Nanuq to solve this problem.&lt;/p&gt;

&lt;p&gt;Today, I'm excited to share Nanuq 2.0, a major milestone that brings cloud platform support, enterprise-grade security, and production-ready features to this open-source project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Nanuq?
&lt;/h2&gt;

&lt;p&gt;Nanuq is a unified management interface that consolidates five critical messaging and caching platforms into a single, intuitive web UI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apache Kafka&lt;/strong&gt; - Topic management and monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis&lt;/strong&gt; - 6 data types with full CRUD operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RabbitMQ&lt;/strong&gt; - Exchange and queue management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS (SQS/SNS)&lt;/strong&gt; - Cloud message queuing and pub/sub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Service Bus&lt;/strong&gt; - Enterprise messaging with queues, topics, and subscriptions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of switching between &lt;code&gt;kafka-console-consumer&lt;/code&gt;, &lt;code&gt;redis-cli&lt;/code&gt;, &lt;code&gt;rabbitmqctl&lt;/code&gt;, AWS Console, and Azure Portal, developers can manage everything from one place.&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%2Flmq0bq6k29iye12x75vn.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%2Flmq0bq6k29iye12x75vn.png" alt="Kafka Topic Management" width="800" height="330"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Kafka topic management with message counts and partition details&lt;/em&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%2F9v0svxb6w4ph09uan8ce.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%2F9v0svxb6w4ph09uan8ce.png" alt="Nanuq Dashboard - Unified view of all platforms" width="800" height="318"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Unified dashboard showing metrics across all five platforms&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What's New in Version 2.0
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Cloud Platform Integration
&lt;/h3&gt;

&lt;p&gt;The biggest addition in 2.0 is complete cloud platform support:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS (SQS/SNS)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;15 AWS regions supported (us-east-1, eu-west-1, ap-southeast-1, etc.)&lt;/li&gt;
&lt;li&gt;Full SQS operations: create queues (standard/FIFO), send/receive messages, monitor queue attributes&lt;/li&gt;
&lt;li&gt;SNS topic management: publish messages, manage subscriptions (HTTP, Email, SMS, SQS, Lambda)&lt;/li&gt;
&lt;li&gt;Multi-region deployment for distributed teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Azure Service Bus&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;30+ Azure regions supported globally&lt;/li&gt;
&lt;li&gt;Queue management with configurable TTL, dead-lettering, and duplicate detection&lt;/li&gt;
&lt;li&gt;Topics and subscriptions with filtering capabilities&lt;/li&gt;
&lt;li&gt;Complete message lifecycle: send, receive (peek-lock mode), and dead-letter queue access&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%2F6haf4i2jbcuzysk8svws.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%2F6haf4i2jbcuzysk8svws.png" alt="AWS SQS Queue Management" width="800" height="310"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Managing AWS SQS queues with send/receive capabilities&lt;/em&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%2F2aoc3x9593nfutpx6obo.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%2F2aoc3x9593nfutpx6obo.png" alt="Azure Service Bus Topics" width="800" height="304"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Azure Service Bus topic and subscription management&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Enterprise Security
&lt;/h3&gt;

&lt;p&gt;Security was a top priority for 2.0:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AES-256 Encrypted Credential Storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All stored credentials (passwords, access keys, connection strings) are encrypted at rest using AES-256 with DPAPI-derived keys. The encryption service handles automatic encryption when credentials are saved and decryption when they're needed for API calls. Passwords are never exposed in API responses—only metadata returns to the frontend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before saving credentials, users can test connections to verify they work. This validates that access keys, passwords, and connection strings are correct before persisting them to the database, preventing configuration errors.&lt;/p&gt;
&lt;h3&gt;
  
  
  Unified Dashboard
&lt;/h3&gt;

&lt;p&gt;The new dashboard provides real-time visibility across all platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server count, topic/queue count, and resource metrics per platform&lt;/li&gt;
&lt;li&gt;Environment breakdown (Development, Staging, Production) with color-coded badges&lt;/li&gt;
&lt;li&gt;Recent activity feed with filtering by platform and operation type&lt;/li&gt;
&lt;li&gt;Quick actions to add new servers for each platform&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Activity Tracking &amp;amp; Audit
&lt;/h3&gt;

&lt;p&gt;Complete audit trail with 24+ activity types covering all operations across all platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Advanced filtering (by type, date range, search text)&lt;/li&gt;
&lt;li&gt;Export to CSV or JSON for compliance&lt;/li&gt;
&lt;li&gt;Visual timeline with Material Design icons&lt;/li&gt;
&lt;li&gt;Auto-refresh for real-time monitoring&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%2Fcb2icdgj3b4eb9mhfghg.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%2Fcb2icdgj3b4eb9mhfghg.png" alt="Activity Log" width="800" height="345"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Complete activity audit trail with filtering and export capabilities&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Advanced Redis Support
&lt;/h3&gt;

&lt;p&gt;Full CRUD operations for all 6 Redis data types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strings&lt;/strong&gt; - View, add, update, and delete cached keys with TTL support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lists&lt;/strong&gt; - Push/pop elements, view all elements, manage list keys&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hashes&lt;/strong&gt; - Set/get fields, view all fields, manage hash keys&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sets&lt;/strong&gt; - Add/remove members, view set members&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sorted Sets&lt;/strong&gt; - Add members with scores, view sorted members&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streams&lt;/strong&gt; - Add entries with multiple fields, view stream entries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All operations support pagination for handling large datasets.&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%2F6i9p99cksouoeanhp4l9.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%2F6i9p99cksouoeanhp4l9.png" alt="Redis Data Type Management" width="800" height="334"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Managing Redis keys across different data types&lt;/em&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%2Fzx6aqrznbnbgx2l9w7vt.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%2Fzx6aqrznbnbgx2l9w7vt.png" alt="RabbitMQ Exchange Management" width="800" height="317"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;RabbitMQ exchange and queue management&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Multi-Environment Management
&lt;/h3&gt;

&lt;p&gt;Tag servers by environment (Development, Staging, Production) with color-coded badges in the UI. This makes it easy to avoid accidentally modifying production resources and helps teams manage multi-environment workflows.&lt;/p&gt;
&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Backend: .NET 10.0 Modular Monolith
&lt;/h3&gt;

&lt;p&gt;The backend uses a clean, modular architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nanuq.WebApi/          # FastEndpoints API
Nanuq.Kafka/           # Kafka integration
Nanuq.Redis/           # Redis integration
Nanuq.RabbitMQ/        # RabbitMQ integration
Nanuq.AWS/             # AWS SQS/SNS integration
Nanuq.Azure/           # Azure Service Bus integration
Nanuq.Security/        # AES-256 encryption service
Nanuq.EF/              # Entity Framework Core context
Nanuq.Sqlite/          # SQLite repositories
Nanuq.Common/          # Shared records and interfaces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key patterns:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastEndpoints&lt;/strong&gt; instead of traditional controllers for better performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repository pattern&lt;/strong&gt; for data access abstraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DbUp migrations&lt;/strong&gt; for database schema management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency injection&lt;/strong&gt; throughout&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Frontend: Vue 3 + Vuetify
&lt;/h3&gt;

&lt;p&gt;The frontend leverages Vue 3 with Vuetify's Material Design components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State management:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separate Vuex modules for each platform (kafka.js, redis.js, aws.js, azure.js)&lt;/li&gt;
&lt;li&gt;Centralized error handling with global notification system&lt;/li&gt;
&lt;li&gt;Optimistic UI updates with rollback on errors&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database: SQLite with EF Core
&lt;/h3&gt;

&lt;p&gt;SQLite provides zero-configuration persistence for all server configurations, credentials, and activity logs. DbUp migrations run automatically on startup, making schema updates seamless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Docker (Recommended)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pull and run both backend and frontend&lt;/span&gt;
docker-compose &lt;span class="nt"&gt;-f&lt;/span&gt; Docker/docker-compose.yml up &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;span class="c"&gt;# Access the app&lt;/span&gt;
open http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Kubernetes
&lt;/h3&gt;

&lt;p&gt;One-command deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; https://raw.githubusercontent.com/waelouf/Nanuq/main/K8s/nanuq-all-in-one.yaml

&lt;span class="c"&gt;# Check deployment&lt;/span&gt;
kubectl get pods
kubectl get service nanuq-frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Local Development
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;src/services/Nanuq/Nanuq.WebApi
dotnet run  &lt;span class="c"&gt;# Runs on http://localhost:5000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;src/app/nanuq-app
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run serve  &lt;span class="c"&gt;# Runs on http://localhost:8080&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-World Use Cases
&lt;/h2&gt;

&lt;p&gt;Here are some scenarios where Nanuq shines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Microservices Development&lt;/strong&gt;&lt;br&gt;
Developers working on microservices often need to inspect Kafka topics for event streams, check Redis caches for session data, and verify RabbitMQ queues for async tasks—all in one session.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Multi-Cloud Deployments&lt;/strong&gt;&lt;br&gt;
Teams deploying to both AWS and Azure can manage SQS queues and Azure Service Bus from the same interface, reducing context switching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Environment Promotion&lt;/strong&gt;&lt;br&gt;
Tag servers as Dev/Staging/Production and easily compare configurations across environments before promoting changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Debugging Production Issues&lt;/strong&gt;&lt;br&gt;
Quickly check message counts, peek at queue contents, and identify bottlenecks without installing CLI tools or memorizing commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Considerations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pagination&lt;/strong&gt;&lt;br&gt;
All list operations support pagination to handle large datasets efficiently. Queue lists, topic lists, and message retrieval all use cursor-based or token-based pagination to prevent memory issues when dealing with hundreds or thousands of resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caching Strategy&lt;/strong&gt;&lt;br&gt;
Frontend implements smart caching with selective invalidation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server lists cached until explicit refresh&lt;/li&gt;
&lt;li&gt;Queue/topic details cached with 5-minute TTL&lt;/li&gt;
&lt;li&gt;Message lists never cached (always fresh)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connection Pooling&lt;/strong&gt;&lt;br&gt;
AWS and Azure SDK clients use connection pooling to minimize overhead and improve response times for consecutive operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Best Practices
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What Nanuq Does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encrypts all credentials at rest (AES-256)&lt;/li&gt;
&lt;li&gt;Never logs sensitive data (passwords, keys, tokens)&lt;/li&gt;
&lt;li&gt;Uses HTTPS for all frontend-backend communication&lt;/li&gt;
&lt;li&gt;Validates all user input on both frontend and backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What You Should Do:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use environment-specific credentials (don't share prod creds in dev)&lt;/li&gt;
&lt;li&gt;Enable MFA on cloud accounts&lt;/li&gt;
&lt;li&gt;Rotate credentials regularly&lt;/li&gt;
&lt;li&gt;Review activity logs for unauthorized access&lt;/li&gt;
&lt;li&gt;Deploy behind a VPN or restrict network access&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations and Future Roadmap
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Current Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No built-in user authentication (single-user mode)&lt;/li&gt;
&lt;li&gt;No role-based access control (RBAC)&lt;/li&gt;
&lt;li&gt;Limited to Windows for DPAPI-based encryption (cross-platform encryption planned)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Roadmap (contributions welcome!):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metrics and alerting (Prometheus integration)&lt;/li&gt;
&lt;li&gt;Schema registry support for Kafka&lt;/li&gt;
&lt;li&gt;More cloud platforms (Google Cloud Pub/Sub)&lt;/li&gt;
&lt;li&gt;Dark mode UI theme&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;Nanuq is open source and welcomes contributions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Areas we'd love help with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cross-platform encryption (replace Windows DPAPI)&lt;/li&gt;
&lt;li&gt;Unit and integration test coverage&lt;/li&gt;
&lt;li&gt;Documentation improvements&lt;/li&gt;
&lt;li&gt;Bug reports and feature requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the &lt;a href="https://github.com/waelouf/Nanuq" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Nanuq 2.0 represents a significant step forward in simplifying messaging and caching platform management. By consolidating five platforms into one interface with enterprise-grade security, we're reducing cognitive load for developers and making multi-platform workflows more efficient.&lt;/p&gt;

&lt;p&gt;The project is built with modern .NET and Vue.js, follows clean architecture principles, and is designed to be easily extensible for additional platforms.&lt;/p&gt;

&lt;p&gt;Try it out, and let me know what you think in the comments!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/waelouf/Nanuq" rel="noopener noreferrer"&gt;https://github.com/waelouf/Nanuq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Issues: &lt;a href="https://github.com/waelouf/Nanuq/issues" rel="noopener noreferrer"&gt;https://github.com/waelouf/Nanuq/issues&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;What messaging platforms are you managing in your projects? Would a unified interface like this help your workflow? Share your thoughts below!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>cloudnative</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>Nanuq!</title>
      <dc:creator>Wael Mansour</dc:creator>
      <pubDate>Thu, 16 Jan 2025 02:53:18 +0000</pubDate>
      <link>https://forem.com/waelouf/nanuq-470l</link>
      <guid>https://forem.com/waelouf/nanuq-470l</guid>
      <description>&lt;h2&gt;
  
  
  What is Nanuq?
&lt;/h2&gt;

&lt;p&gt;Nanuq (which means “polar bear” in the Inuktitut language spoken in the central and eastern Canadian Arctic) is an application designed to simplify the management of Kafka and Redis for developers. Instead of relying on command-line interfaces for each server, Nanuq provides a unified, user-friendly interface that streamlines daily tasks. Whether you’re monitoring queues, managing datasets, or configuring clusters, Nanuq empowers you to handle these critical operations with ease, all from a single UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;The main purpose of this application is to help track middleware (Kafka, Redis, etc.) during development.&lt;/p&gt;

&lt;p&gt;Another reason is to have a small greenfield project where I can learn new (or refresh rusty) technologies.&lt;/p&gt;

&lt;p&gt;Continue reading the post &lt;a href="https://blog.waelouf.com/post/blog/nanuq/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>kafka</category>
      <category>vue</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
