<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: elbanic</title>
    <description>The latest articles on DEV Community by elbanic (@elbanic).</description>
    <link>https://dev.to/elbanic</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%2F3549440%2Ff8620869-9aaa-44c5-9f02-64529998ef60.jpg</url>
      <title>DEV Community: elbanic</title>
      <link>https://dev.to/elbanic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elbanic"/>
    <language>en</language>
    <item>
      <title>We fail every day, but that failure becomes the success of our next attempt (feat. Claude Code)</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Wed, 18 Feb 2026 21:50:32 +0000</pubDate>
      <link>https://dev.to/elbanic/we-fail-every-day-but-that-failure-becomes-the-success-of-our-next-attempt-feat-claude-code-16cg</link>
      <guid>https://dev.to/elbanic/we-fail-every-day-but-that-failure-becomes-the-success-of-our-next-attempt-feat-claude-code-16cg</guid>
      <description>&lt;h2&gt;
  
  
  Dev Sentinel: Recording Failure So We Learn From It
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"We fail every day, but that failure becomes the success of our next attempt."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Failure Repeats
&lt;/h3&gt;

&lt;p&gt;Not long ago, a production incident occurred in a service I operate.&lt;/p&gt;

&lt;p&gt;An SQS-triggered Lambda handler processed a single event that spawned an excessive number of DynamoDB transactions in parallel. Eventually, the Lambda hit its timeout limit.&lt;/p&gt;

&lt;p&gt;It was a reminder that Promise-based parallelism is not always optimal. IO-bound workloads sometimes require concurrency control or even sequential execution. The code appeared logically sound, yet it failed under real-world resource constraints.&lt;/p&gt;

&lt;p&gt;I had a similar experience in a toy project.&lt;/p&gt;

&lt;p&gt;A memory-based persistence layer worked perfectly in a local environment, but after deploying to a cloud-based Docker setup, consistency tests failed. The root cause was a stateful design in an environment where container instances could change per request.&lt;/p&gt;

&lt;p&gt;Both incidents taught more than simple bug fixes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Code may be logically correct, but if it ignores the constraints of its execution environment, the system will eventually break.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These lessons clearly help in future projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does Every Failure Lead to Success?
&lt;/h3&gt;

&lt;p&gt;We fail every day. We encounter bugs, make incorrect assumptions, and struggle with performance issues.&lt;/p&gt;

&lt;p&gt;Becoming a senior engineer often means accumulating these experiences until they turn into intuition. Operational incidents, scaling failures, and flawed architectural decisions gradually build a sense that "something feels risky."&lt;/p&gt;

&lt;p&gt;However, in reality, not every failure translates into future success. Many lessons are never recorded, never revisited, and similar mistakes reappear in different contexts.&lt;/p&gt;

&lt;p&gt;The problem is not failure itself. The problem is that failure disappears.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dev Sentinel: Detecting and Preserving Failure
&lt;/h3&gt;

&lt;p&gt;Dev Sentinel started from this observation. The core idea is simple: Detect failure cycles, record them, and surface them when a similar situation arises again.&lt;/p&gt;

&lt;p&gt;I define failure as a cycle: Attempt → Frustration → (Abandonment | Resolution)&lt;/p&gt;

&lt;p&gt;Within this cycle, I designed two concepts.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Experience Capture
&lt;/h4&gt;

&lt;p&gt;Detect frustration, then track whether the attempt ended in abandonment or resolution, and store it as experience. This is not just logging. It structures the context: what the problem was, where the difficulty emerged, and how it concluded.&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%2Fc25vrpc3qfim6au7ofmy.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%2Fc25vrpc3qfim6au7ofmy.png" alt="Experience Capture process showing how Dev Sentinel detects and records failure cycles" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Active Recall
&lt;/h4&gt;

&lt;p&gt;When similar frustration is detected again, surface relevant past experiences. The goal is not to solve the problem automatically, but to remind the developer: "You have seen something like this before."&lt;/p&gt;

&lt;p&gt;To implement this, Dev Sentinel leverages Claude Code's UserPromptSubmit and Stop hooks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;During UserPromptSubmit, it detects signals of frustration (phrasing, repeated attempts, context shifts, etc.).&lt;/li&gt;
&lt;li&gt;During Stop, it determines whether the failure cycle concluded and stores the structured experience.&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%2F77wmg1domms38yahy38l.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%2F77wmg1domms38yahy38l.png" alt="Active Recall mechanism showing how Dev Sentinel surfaces relevant past experiences when similar patterns are detected" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What If Dev Sentinel Had Existed Then?
&lt;/h3&gt;

&lt;p&gt;Looking back at the earlier incidents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lambda timeout caused by excessive parallelism&lt;/li&gt;
&lt;li&gt;Stateful design failure in a containerized environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both were not merely implementation mistakes. They shared a pattern: underestimating environmental constraints.&lt;/p&gt;

&lt;p&gt;If Dev Sentinel had existed, then in a later project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When designing high-concurrency processing logic&lt;/li&gt;
&lt;li&gt;When introducing in-memory caching casually&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It could have surfaced past experiences as a reminder.&lt;/p&gt;

&lt;p&gt;Not to provide the answer, but to ask: "Have you seen this pattern fail before?"&lt;/p&gt;

&lt;h3&gt;
  
  
  Between Organizational Runbooks and Personal Memory
&lt;/h3&gt;

&lt;p&gt;Many organizations reduce failure through runbooks, SOPs, wikis, and knowledge bases. These are highly effective. However, organizational knowledge does not always align perfectly with individual context.&lt;/p&gt;

&lt;p&gt;Dev Sentinel takes the opposite direction:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capture individual failure experiences first&lt;/li&gt;
&lt;li&gt;Accumulate them over time&lt;/li&gt;
&lt;li&gt;Return them to the individual when relevant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The expectation is that accumulated personal experience leads to better design judgment, and that judgment ultimately influences projects and organizations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Closing Thoughts
&lt;/h3&gt;

&lt;p&gt;We fail every day. But failure does not automatically become an asset. Failures that are not remembered are repeated.&lt;/p&gt;

&lt;p&gt;Dev Sentinel is not a grand AI system. It is a small mechanism to prevent failure from quietly fading away. Tonight feels like a good time to reflect on what today's lesson was.&lt;/p&gt;

&lt;p&gt;git repo: &lt;a href="https://github.com/elbanic/dev-sentinel" rel="noopener noreferrer"&gt;https://github.com/elbanic/dev-sentinel&lt;/a&gt;&lt;/p&gt;

</description>
      <category>software</category>
      <category>failure</category>
      <category>lessonlearned</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>I Built an AI System Design Interviewer That Runs in My Mac Terminal</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Wed, 11 Feb 2026 06:39:31 +0000</pubDate>
      <link>https://dev.to/elbanic/i-built-an-ai-system-design-interviewer-that-runs-in-my-mac-terminal-1k61</link>
      <guid>https://dev.to/elbanic/i-built-an-ai-system-design-interviewer-that-runs-in-my-mac-terminal-1k61</guid>
      <description>&lt;h2&gt;
  
  
  Recently, I've been noticing something strange.
&lt;/h2&gt;

&lt;p&gt;Developers around me are writing no code.&lt;/p&gt;

&lt;p&gt;AI tools help with architecture, implementation, testing, documentation, and even debugging. In many workflows, developers are shifting from coding to directing.&lt;/p&gt;

&lt;p&gt;If coding itself is changing, it raises an interesting question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will coding interviews eventually lose relevance?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don't have a definitive answer. But one trend is very clear: companies are putting increasing emphasis on system design interviews.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And those are notoriously hard to practice.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Real Problem With System Design Interviews
&lt;/h2&gt;

&lt;p&gt;Algorithm problems are solo-friendly. You can grind them on LeetCode anytime.&lt;/p&gt;

&lt;p&gt;System design interviews are different.&lt;/p&gt;

&lt;p&gt;They require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone to guide the conversation&lt;/li&gt;
&lt;li&gt;Follow-up questions that adapt to your answers&lt;/li&gt;
&lt;li&gt;Verbal explanation of your thought process&lt;/li&gt;
&lt;li&gt;Structured feedback after the session&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Building a Virtual System Design Interviewer (Mac CLI)
&lt;/h2&gt;

&lt;p&gt;That led me to build a virtual system design interview tool that runs entirely inside the Mac terminal.&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%2Fw8tyav46ods57zg7p4fm.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%2Fw8tyav46ods57zg7p4fm.png" alt=" " width="800" height="859"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swift&lt;/strong&gt; for the native Mac experience&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strands Agents&lt;/strong&gt; to orchestrate the AI interviewer workflow&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MLX Whisper&lt;/strong&gt; for speech recognition&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3 TTS&lt;/strong&gt; to generate interviewer voice responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Sonnet&lt;/strong&gt; to generate structured interview feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn't to build another chat-based Q&amp;amp;A bot.&lt;/p&gt;

&lt;p&gt;I wanted it to feel like a real interview.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the Interview Works
&lt;/h2&gt;

&lt;p&gt;Once the session starts, the AI interviewer leads a ~30 minute system design interview based on a selected topic.&lt;/p&gt;

&lt;p&gt;The experience is fully voice-driven.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;The AI interviewer asks a question (spoken via TTS)&lt;/li&gt;
&lt;li&gt;You answer using your microphone&lt;/li&gt;
&lt;li&gt;The conversation continues dynamically&lt;/li&gt;
&lt;li&gt;Every question and answer is transcribed automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the interview ends, the system generates a detailed evaluation report.&lt;/p&gt;




&lt;h2&gt;
  
  
  Making the Interview Feel Real
&lt;/h2&gt;

&lt;p&gt;I integrated Qwen3 TTS to simulate a speaking interviewer. It's not perfect, but it dramatically improves immersion and forces you to explain ideas verbally - which is critical in real interviews.&lt;/p&gt;

&lt;p&gt;The interview can end in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You manually stop using &lt;code&gt;/end&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;The 30-minute timer expires (but you still want to send &lt;code&gt;/end&lt;/code&gt; command)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that, the AI generates structured feedback including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strength analysis&lt;/li&gt;
&lt;li&gt;Weakness detection&lt;/li&gt;
&lt;li&gt;Communication clarity evaluation&lt;/li&gt;
&lt;li&gt;Architectural decision quality&lt;/li&gt;
&lt;li&gt;Tradeoff reasoning depth&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Example of What Gets Captured
&lt;/h2&gt;

&lt;p&gt;Because every interaction is transcribed, you can review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where you hesitated&lt;/li&gt;
&lt;li&gt;How your design evolved&lt;/li&gt;
&lt;li&gt;Whether your explanations were structured&lt;/li&gt;
&lt;li&gt;How well you justified tradeoffs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turned out to be one of the most valuable features for me personally.&lt;/p&gt;




&lt;h2&gt;
  
  
  Current Limitations
&lt;/h2&gt;

&lt;p&gt;This project is still experimental.&lt;/p&gt;

&lt;p&gt;Right now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Session audio is not recorded&lt;/li&gt;
&lt;li&gt;🔜 Local LLM support is planned&lt;/li&gt;
&lt;li&gt;🔜 Streaming LLM integration is planned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current version prioritizes simplicity and low friction setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo / Source Code
&lt;/h2&gt;

&lt;p&gt;If you're curious or want to try it yourself:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/elbanic/sdi.coach" rel="noopener noreferrer"&gt;https://github.com/elbanic/sdi.coach&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For more on system design interview preparation, check out my &lt;a href="https://dev.to/posts/hacking-system-design-interviews-with-ai-tutor/"&gt;AI System Design Tutor&lt;/a&gt; that helps you learn system design concepts right within your IDE.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;It's an uncertain time to be a developer.&lt;/p&gt;

&lt;p&gt;The industry is evolving fast. Hiring expectations are shifting. The tools we rely on are changing every year.&lt;/p&gt;

&lt;p&gt;But building tools to adapt to those changes feels like the most reliable way forward.&lt;/p&gt;

&lt;p&gt;If this helps someone practice system design or sparks new ideas, that alone makes the project worth it.&lt;/p&gt;

&lt;p&gt;If you have feedback, feature ideas, or want to contribute, I'd genuinely love to hear from you.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>whisper</category>
      <category>swift</category>
      <category>texttospeach</category>
    </item>
    <item>
      <title>dev.echo - Crushing Communication Debt</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Wed, 28 Jan 2026 08:04:47 +0000</pubDate>
      <link>https://dev.to/elbanic/crushing-communication-debt-an-ai-survival-guide-for-global-devs-3195</link>
      <guid>https://dev.to/elbanic/crushing-communication-debt-an-ai-survival-guide-for-global-devs-3195</guid>
      <description>&lt;h2&gt;
  
  
  I am not a native English speaker
&lt;/h2&gt;

&lt;p&gt;Yet I work as a software developer in a professional environment where English is the standard. As AI becomes increasingly integrated into our lives and deeply connected with business processes, the volume of communication has skyrocketed. We are constantly under pressure to produce faster results. While translation technology has made massive leaps and we now live in an era of real-time machine translation, keeping up with the torrent of real-time spoken English remains a significant challenge for foreigners like myself. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Concept of "Communication Debt"
&lt;/h2&gt;

&lt;p&gt;Let me be clear: my lack of English fluency does not diminish my value. I continue to solve complex business and technical problems, proving my engineering capabilities every day. However, language barriers create friction. When I miss a nuance or fail to answer quickly because I'm processing the language rather than the logic, I accrue what I call "communication debt."&lt;/p&gt;

&lt;p&gt;I started thinking about how AI could help solve the specific moments where I fall behind due to language struggles. For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Losing Focus&lt;/strong&gt;: Someone is explaining a concept during a meeting, and my mind wanders for a split second, causing me to lose the thread.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Deer in Headlights" Moment&lt;/strong&gt;: During a review of my software design, I get an unexpected question. I know the answer, but the sudden pressure makes me freeze, and I miss the chance to articulate my thoughts effectively.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding Struggles&lt;/strong&gt;: Joining a new team is hard enough, but when the conversation is filled with unfamiliar jargon and acronyms, "ramping up" becomes twice as difficult.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Enter the AI Assistant
&lt;/h2&gt;

&lt;p&gt;What if I had a dedicated assistant to bridge these gaps? Here is how it would handle those scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scenario 1 (Losing Focus)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Assistant: "The current discussion is about [Topic X]. They are currently debating how to optimize the performance of [Topic X]."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scenario 2 (Design Review Pressure)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Assistant: "The [Feature X] you implemented last August supports your argument here. Remember, [Feature X] is a robust function already proven in our live service."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scenario 3 (New Team Jargon)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Assistant: "The team is discussing [Term X]. This is the core technology for this project, defined as..."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How It Works: &lt;code&gt;dev.echo&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The role of this assistant is simple but powerful. It listens to meetings in real-time to summarize the conversation, and it maintains a knowledge base of my existing notes, documents, and deliverables. By combining an AI agent with RAG (Retrieval-Augmented Generation), it provides rich, relevant context the moment I need to catch up.&lt;/p&gt;

&lt;p&gt;I built this tool specifically for Mac + AWS users. However, if you prefer not to use AWS, you can run it entirely offline using a local LLM (Llama).&lt;/p&gt;

&lt;p&gt;You can explore the project here: &lt;a href="https://github.com/elbanic/dev.echo" rel="noopener noreferrer"&gt;dev.echo on GitHub&lt;/a&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%2Fqmsz2hx5crhe3k2mh2et.gif" 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%2Fqmsz2hx5crhe3k2mh2et.gif" alt="dev.echo demo" width="560" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A vital note on compliance&lt;/strong&gt;: Many companies have strict policies regarding recording or transcribing meetings. Please ensure you fully understand and adhere to your company's security and privacy policies before using this tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Language should not be a barrier to demonstrating your technical expertise. This tool is my attempt to level the playing field, ensuring that "communication debt" doesn't stand in the way of great engineering.&lt;/p&gt;

&lt;p&gt;I am curious to hear your thoughts. How could this software be used to help you in your daily work?&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>softskills</category>
      <category>multilingual</category>
      <category>ai</category>
    </item>
    <item>
      <title>Agentic Software Engineering (ASE): The Software Development Landscape is Shifting Again</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Tue, 02 Dec 2025 19:40:00 +0000</pubDate>
      <link>https://dev.to/elbanic/agentic-software-engineering-ase-the-software-development-landscape-is-shifting-again-4bc4</link>
      <guid>https://dev.to/elbanic/agentic-software-engineering-ase-the-software-development-landscape-is-shifting-again-4bc4</guid>
      <description>&lt;h2&gt;
  
  
  Agentic Software Engineering (ASE): The Software Development Landscape is Shifting Again
&lt;/h2&gt;

&lt;p&gt;These days, we often hear stories like "Successful CI/CD Automation with a Coding Agent" or "An MVP for a side project completed in just a few days." It’s becoming clear that AI agents are moving beyond being mere assistants and are diving &lt;strong&gt;deep into the actual development workflow.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Industry buzzwords like AI-driven development, AI-DLC (AI-driven Development Life Cycle), and Agentic Software Engineering (SE 3.0) are already rampant. I want to consolidate this rapidly evolving trend from the perspective of a working developer and call it &lt;strong&gt;"Agentic Software Engineering (ASE)."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ASE is far more than simple code generation. It signifies a new software development framework where the agent understands and actively participates in the entire software development lifecycle, including &lt;strong&gt;testing, refactoring, and deployment.&lt;/strong&gt; This is beyond the level of a "slightly smarter autocomplete." It’s a concept that encompasses agents which take all code and documentation within a microservice as context, combine various tools, and produce actual change lists.&lt;/p&gt;

&lt;p&gt;Since the dawn of software, the fundamental framework-Requirements, Design, Implementation, Testing, and Operations-has remained largely unchanged. These five phases are the bedrock of software engineering and are unlikely to shift easily. The change ASE will bring is the ability to execute this lifecycle with &lt;strong&gt;better quality products and with far greater agility.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yet, few people can clearly answer &lt;em&gt;how&lt;/em&gt; this change will happen or &lt;em&gt;what future&lt;/em&gt; awaits. We can feel AI transforming the development paradigm, but the pace of change is so rapid that predicting the next step is difficult. With concepts and tools constantly changing every year or two, no one can confidently state &lt;strong&gt;"What the Next State is."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most practical approach we can take is to look back and re-examine &lt;strong&gt;what past paradigm shifts actually changed.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  What OOP, TDD, and Agile Actually Transformed
&lt;/h3&gt;

&lt;p&gt;What did the major paradigm shifts in software development history actually change?&lt;/p&gt;

&lt;h4&gt;
  
  
  1. OOP: The Structuring Paradigm that Allowed Software to Withstand Complexity
&lt;/h4&gt;

&lt;p&gt;Before the advent of Object-Oriented Programming (OOP), procedural programming was the mainstream. Conceptualized in the 1970s via Smalltalk and popularized by languages like C++, Java, and C#, OOP became the dominant force. It structured software-which was exploding in complexity, seen in large-scale GUI applications, game engines, and enterprise business systems-using concepts like classes, objects, and messages.&lt;/p&gt;

&lt;p&gt;The core insight is that the paradigm shift from procedural to object-oriented allowed us to manage software at a &lt;strong&gt;"maintainable level of complexity."&lt;/strong&gt; OOP provided the absolute foundation for improving software quality and productivity for decades to come.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. TDD: The Practical Technique that Reduced Defect Density and Boosted Maintainability
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2009/10/Realizing-Quality-Improvement-Through-Test-Driven-Development-Results-and-Experiences-of-Four-Industrial-Teams-nagappan_tdd.pdf" rel="noopener noreferrer"&gt;As demonstrated in famous case studies by IBM and Microsoft, Test-Driven Development (TDD) showed remarkable results&lt;/a&gt;, reducing &lt;strong&gt;pre-release defect density by 40–90%&lt;/strong&gt; upon adoption.&lt;/p&gt;

&lt;p&gt;While initial development time saw a slight increase, the benefits-reduced bug count, increased test coverage, improved code structure, and easier refactoring-dramatically enhanced quality and maintainability from a &lt;strong&gt;total lifecycle perspective.&lt;/strong&gt; TDD changed the 'practical technique' of writing code by providing developers with a 'tight feedback loop.'&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Agile &amp;amp; Scrum: The Methodology that Enabled Organizational Pivoting
&lt;/h4&gt;

&lt;p&gt;The transition from Waterfall to Agile/Scrum was more than a change in development methodology; it was a shift in organizational culture. It moved away from "slow, document-heavy project management" to "iterative experimentation and pivoting by small teams."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.forbes.com/sites/stevedenning/2019/06/02/how-amazon-became-agile" rel="noopener noreferrer"&gt;Amazon's use of the 'two-pizza team' structure to enable fast&lt;/a&gt;, customer-centric experimentation and frequent deployments is a prime example of how Agile can transform an &lt;strong&gt;organization's speed of execution.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are the key common threads we must note:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OOP&lt;/strong&gt; changed &lt;strong&gt;Code Structure&lt;/strong&gt; and &lt;strong&gt;Reusability.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TDD&lt;/strong&gt; changed &lt;strong&gt;Confidence&lt;/strong&gt; in the written code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agile&lt;/strong&gt; changed &lt;strong&gt;Organization, Process, and Culture.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they enabled us to build software &lt;strong&gt;"more robustly, more frequently, and more safely."&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  The Value and Prerequisites of ASE: A Future That Is Not Free
&lt;/h3&gt;

&lt;p&gt;Just as the shift from procedural programming to OOP required learning a new paradigm and changing team culture, the transition to ASE will be similar. Code will still exist, and the framework of Requirements/Design/Testing/Operations will remain.&lt;/p&gt;

&lt;p&gt;What changes is &lt;strong&gt;"How quickly we can validate and deploy new ideas."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The core values of ASE are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent-Level Reusability:&lt;/strong&gt; Managing prompts, workflows, and tool combinations as &lt;strong&gt;reusable "agent modules"&lt;/strong&gt; to elevate the unit of development work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximization of Experimentation Speed:&lt;/strong&gt; Securing the overwhelming speed to rapidly prototype new ideas using the &lt;strong&gt;"1 Human + Agent Stack"&lt;/strong&gt; combination, pushing them all the way through testing and deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this combination takes hold, the speed of software development and the density of experimentation are highly likely to scale to a degree incomparable to the past.&lt;/p&gt;

&lt;h4&gt;
  
  
  ASE is Not an 'Installation,' It's a 'Re-architecture'
&lt;/h4&gt;

&lt;p&gt;There is a critical caveat, however. ASE is not an automatic change handed out simply by adopting a coding agent or following the trend. &lt;strong&gt;The environment must first be set up&lt;/strong&gt; for the agent to do real work.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;prerequisites&lt;/strong&gt; for an agent to unleash its full potential are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rich Context:&lt;/strong&gt; &lt;strong&gt;All source code, design documents, specs, and issues&lt;/strong&gt; across microservices must be linked and searchable, providing the agent with abundant context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perfect Feedback Loop:&lt;/strong&gt; A &lt;strong&gt;unit/E2E testing environment and a sandbox&lt;/strong&gt; covering almost all code must be established, allowing the agent to self-generate and execute tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated Workflow:&lt;/strong&gt; A &lt;strong&gt;robust CI/CD pipeline&lt;/strong&gt; capable of running static analysis and security scans is essential.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In organizations lacking this infrastructure, the agent will ultimately remain just a smarter autocomplete within the IDE. ASE is less about &lt;strong&gt;"installing a new tool"&lt;/strong&gt; and more about &lt;strong&gt;re-architecting the entire development environment&lt;/strong&gt; to be agent-friendly.&lt;/p&gt;

&lt;h4&gt;
  
  
  Who Will Lead This Change?
&lt;/h4&gt;

&lt;p&gt;Past patterns will repeat. Just as not every company could instantly rewrite all existing code in OOP when it first emerged, ASE will likely follow a similar trajectory.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some teams won't move beyond treating the agent as a smart coding assistant for implementation tasks.&lt;/li&gt;
&lt;li&gt;Other teams will preemptively build frameworks that delegate testing, documentation, refactoring, and deployment to the agent.&lt;/li&gt;
&lt;li&gt;These advanced teams will achieve &lt;strong&gt;more frequent deployments and tighter experiments with fewer people.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;The skeleton of software engineering remains, but the paradigm is shifting once again. This time, the AI agent is at the center of that transformation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Agentic Software Engineering (ASE)"&lt;/strong&gt; is not just a methodology for improving efficiency; it is an opportunity to fundamentally redefine how we build and deliver software to the world.&lt;/p&gt;

&lt;p&gt;The question is simple.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Will you merely observe this era, or will you be the one to design your team's environment?"&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aidlc</category>
      <category>agents</category>
      <category>agenticsoftwareengineering</category>
    </item>
    <item>
      <title>Hacking System Design Interviews with an AI Tutor</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Thu, 27 Nov 2025 23:26:00 +0000</pubDate>
      <link>https://dev.to/elbanic/hacking-system-design-interviews-with-an-ai-tutor-1jnj</link>
      <guid>https://dev.to/elbanic/hacking-system-design-interviews-with-an-ai-tutor-1jnj</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;"In an age where AI writes our code/algorithms, what new skills are interviewers starting to ask? 🤔"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My recent conversations with HR specialists have confirmed a significant shift: many companies are intensifying the focus on extended system design interview - an expanded concept of the coding interview. As AI coding agents rise, the differentiability of simple algorithm writing is declining. The core competence for a modern software developer is now the ability to holistically understand the entire product lifecycle and implement a robust and resilient system.&lt;/p&gt;

&lt;p&gt;This change led me to a question: "What if a developer could study System Design right within their IDE, guided by an AI Tutor, without leaving their IDE environment?"&lt;/p&gt;

&lt;p&gt;The result is the System Design Tutor Project. I've implemented an AI designed to mentor and guide interview preparation, much like a seasoned engineer sitting right beside you.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI Tutor's 'Flow of Knowledge'
&lt;/h2&gt;

&lt;p&gt;The System Design Tutor primarily uses a RAG (Retrieval-Augmented Generation) system to assist with interview preparation. Think of it as an organized librarian for system design - it rapidly finds and delivers accurate, in-depth knowledge to the learner.&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%2Fd1gz58salap09a7fbi87.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%2Fd1gz58salap09a7fbi87.png" alt="System Design Tutor Architecture showing the sync and question workflows" width="800" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sync Workflow: Stocking the Library
&lt;/h3&gt;

&lt;p&gt;The Sync Workflow is how the AI Tutor keeps its knowledge base up-to-date.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starting with clicking a button (TutorUI), the Sync Data mechanism downloads source materials from a trusted GitHub repository (e.g., &lt;a href="https://github.com/donnemartin/system-design-primer" rel="noopener noreferrer"&gt;donnemartin's system-design-primer&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Llama Embed then converts these extensive documents into small, AI-digestible pieces (embeddings).&lt;/li&gt;
&lt;li&gt;Finally, these transformed knowledge chunks are stored in ChromaDB, a vector database, ensuring the tutor can rapidly access and reference the information at any time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Question Workflow: Personalized Tutoring on Demand
&lt;/h3&gt;

&lt;p&gt;This is the intelligent core that handles the actual interaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The user's question (e.g., &lt;em&gt;"Teach me the design of a Real-time Chat System"&lt;/em&gt;) is received via the Cline.&lt;/li&gt;
&lt;li&gt;Cline calls the Tutor MCP Server to query the Tutor Agent, which holds the core AI logic.&lt;/li&gt;
&lt;li&gt;The Tutor Agent analyzes the query and initiates the RAG process by searching ChromaDB for all relevant stored knowledge.&lt;/li&gt;
&lt;li&gt;By combining the retrieved knowledge with a powerful Large Language Model (like AWS Bedrock Claude), it generates a comprehensive, structured learning guide - not just a simple text dump.&lt;/li&gt;
&lt;li&gt;The Cline then wraps this guide to the user, simulating an engaging, conversational learning experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A Quick Demo
&lt;/h3&gt;

&lt;p&gt;You will need to install &lt;a href="https://github.com/elbanic/SystemDesignTutor" rel="noopener noreferrer"&gt;VS Code Extension: SystemDesignTutor&lt;/a&gt; before start.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. User → Cline: "Teach me the design of a Real-time Chat System"&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%2F9gf9h08x7ih16fhxr4g8.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%2F9gf9h08x7ih16fhxr4g8.png" alt="User asking Cline about real-time chat system design" width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Cline → AI Tutor: Utilizes ChromaDB and the LLM to create a structured tutoring session.&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%2F7sn0q4xa0cc18dr8uwpl.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%2F7sn0q4xa0cc18dr8uwpl.png" alt="AI Tutor processing the query using RAG" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Cline → User: Instantly receives a systematic guide covering everything from Load Balancer placement to Scalability and Consistency trade-offs.&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%2Fxv8n5o2dfj04k4j14z81.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%2Fxv8n5o2dfj04k4j14z81.png" alt="Comprehensive system design guide generated by AI Tutor" width="800" height="619"&gt;&lt;/a&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%2F8ox840665eloivws28l7.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%2F8ox840665eloivws28l7.png" alt="Detailed architecture recommendations from AI Tutor" width="800" height="660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full source code is available here:&lt;/strong&gt; &lt;a href="https://github.com/elbanic/SystemDesignTutor" rel="noopener noreferrer"&gt;&lt;strong&gt;https://github.com/elbanic/SystemDesignTutor&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Unbreakable Foundation: Quality of Knowledge
&lt;/h2&gt;

&lt;p&gt;Using this AI Tutor, I realized that the value of the system is ultimately defined by the quality of its content. While the system-design-primer was an excellent starting point, the potential for this RAG system lies in continuously injecting diverse, verified, and high-quality content.&lt;/p&gt;

&lt;p&gt;In an era of generative AI, where incomplete information is easily exposed, our challenge is to focus on foundational principles and robust design. AI tools are here to help us focus on what truly matters.&lt;/p&gt;

&lt;p&gt;For more on building RAG systems, check out my guide on &lt;a href="https://dev.to/elbanic/building-an-aws-based-rag-pipeline-1lp1"&gt;building an AWS-based RAG pipeline&lt;/a&gt; and &lt;a href="https://dev.to/elbanic/context-management-with-kiro-part-1-21hc"&gt;context management strategies&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What was your biggest roadblock when learning System Design, and how do you see an AI Tutor changing that learning process for you or your team?&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>aws</category>
      <category>notimetocode</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Unlocking Automation with Strands Agents and Bedrock</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Tue, 25 Nov 2025 01:20:00 +0000</pubDate>
      <link>https://dev.to/elbanic/unlocking-automation-with-strands-agents-and-bedrock-3noa</link>
      <guid>https://dev.to/elbanic/unlocking-automation-with-strands-agents-and-bedrock-3noa</guid>
      <description>&lt;h2&gt;
  
  
  Introducing Strands Agents &amp;amp; The YourDay Project Overview
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Strands Agents&lt;/strong&gt; is a powerful, &lt;strong&gt;code-first&lt;/strong&gt; framework that dramatically simplifies the process of building and operating complex, multi-tool &lt;strong&gt;Agentic systems&lt;/strong&gt;. It provides a robust structure for orchestrating Large Language Models (LLMs) and integrating them with external services.&lt;/p&gt;

&lt;p&gt;For more insights on AI agent development and context management, check out my series on &lt;a href="https://dev.to/elbanic/context-management-with-kiro-part-1-21hc"&gt;context management with Kiro&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To showcase how easily Strands Agents can be utilized, I've built a practical example: the &lt;strong&gt;YourDay&lt;/strong&gt; project. This project combines the framework with the powerful &lt;strong&gt;Claude Sonnet&lt;/strong&gt; model from AWS Bedrock and publicly available APIs (Open-Meteo, GNews) to automatically generate a daily summary and post it to the Obsidian note app. Let's see how Strands Agents makes this complex automation straightforward.&lt;/p&gt;




&lt;h2&gt;
  
  
  YourDay
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Project Overview
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;YourDay&lt;/strong&gt; is an AI agent based on the Strands SDK, designed to automate the following tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collects current &lt;strong&gt;weather data&lt;/strong&gt; via Open-Meteo's APIs.&lt;/li&gt;
&lt;li&gt;Fetches the &lt;strong&gt;top 10 news headlines&lt;/strong&gt; from the GNews API.&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;AWS Bedrock Claude Sonnet 4.5&lt;/strong&gt; to transform the collected data into a formatted summary report in Markdown.&lt;/li&gt;
&lt;li&gt;Automatically publishes the summary to an Obsidian Vault via the &lt;strong&gt;Obsidian MCP (Markdown Communication Protocol) server&lt;/strong&gt;, automating the creation of the Daily Weather &amp;amp; News note.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  System Diagram
&lt;/h3&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%2Fyfipsnwrrx4walozrkga.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%2Fyfipsnwrrx4walozrkga.png" alt="YourDay System Architecture" width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  API Keys
&lt;/h3&gt;

&lt;p&gt;To run YourDay, the following access permissions and keys are required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GNews API Key&lt;/strong&gt;: For collecting news data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Bedrock Access (Claude Sonnet)&lt;/strong&gt;: For generating the AI summary (requires an AWS account).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Obsidian API Key&lt;/strong&gt;: For integration with the Obsidian MCP server.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Code Implementation: The Heart of the Agentic System
&lt;/h3&gt;

&lt;p&gt;Now let's implement the code. YourDay is structured to integrate various clients (Weather, News, Obsidian) and uses the Strands Agent to orchestrate the generation of the final Markdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. YourDayAgent: The Core Agent Defining the Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The YourDayAgent class collects data, and then calls the Bedrock model via &lt;code&gt;self.agent.invoke_async(prompt=prompt)&lt;/code&gt; to generate summary. Finally, it posts the result to Obsidian.&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%2Fra1bmzjgfycfy7l5ynrz.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%2Fra1bmzjgfycfy7l5ynrz.png" alt="YourDayAgent implementation code showing workflow orchestration with Strands SDK" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. WeatherClient: Open-Meteo Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The WeatherClient uses Open-Meteo's &lt;strong&gt;Geocoding API&lt;/strong&gt; to convert the location name into coordinates, and then calls the &lt;strong&gt;Forecast API&lt;/strong&gt; to fetch current weather information.&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%2Fjvgkbzigostyi3vnrsfm.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%2Fjvgkbzigostyi3vnrsfm.png" alt="WeatherClient implementation" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. NewsClient: GNews API Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The NewsClient uses the provided NEWS_API_KEY to call the GNews top-headlines endpoint, refining and returning a list of top news articles.&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%2Fx6yxajs4kdwq9t2gud5m.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%2Fx6yxajs4kdwq9t2gud5m.png" alt="NewsClient implementation integrating GNews API for top headlines" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. ObsidianClient: Publishing to Obsidian&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The ObsidianClient uses a PUT request targeting the Obsidian &lt;strong&gt;MCP server&lt;/strong&gt; to write the Markdown content to a specific path within the Vault.&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%2Fjwl9e63mlmrci3en4ino.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%2Fjwl9e63mlmrci3en4ino.png" alt="ObsidianClient implementation publishing markdown content to Obsidian vault via MCP server" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. CLI: Execution Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cli.py&lt;/code&gt; loads the configuration, initializes the clients and the YourDayAgent, and then calls &lt;code&gt;agent.run()&lt;/code&gt; to execute the entire workflow.&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%2Fgflxekm3v0utlbxwfe44.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%2Fgflxekm3v0utlbxwfe44.png" alt="CLI implementation loading configuration and initializing YourDay agent workflow" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, the entire workflow will be executed by executing &lt;code&gt;_run_async&lt;/code&gt; of YourDayAgent described in step 1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Demo: Agent Execution Result&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's run the script now. When the &lt;code&gt;yourday run&lt;/code&gt; command is executed in the CLI, you can see the agent progress through the steps of &lt;strong&gt;loading configuration&lt;/strong&gt;, &lt;strong&gt;initializing clients&lt;/strong&gt;, and &lt;strong&gt;generating the summary&lt;/strong&gt;. The screenshot below illustrates the successful final posting to Obsidian, including successful communication with Bedrock and the path of the newly created Markdown file.&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%2Fyeax0otjmons8xzb5e0p.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%2Fyeax0otjmons8xzb5e0p.png" alt="YourDay execution demo showing successful agent workflow and Obsidian note creation" width="800" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scheduling the Task (Cronjob)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To ensure this software runs automatically every morning, you can register it as a scheduler using &lt;strong&gt;cronjob&lt;/strong&gt; (on Linux/macOS).&lt;/p&gt;

&lt;p&gt;Here's an example of scheduling this script as a cronjob to run every morning at 7:00 AM. You'll need to adjust the paths to suit your environment.&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%2Fdx7uf4101kcmjte5k2uh.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%2Fdx7uf4101kcmjte5k2uh.png" alt="Cronjob configuration for scheduling YourDay agent to run daily at 7 AM" width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The complete source package including the code above is available here: &lt;a href="https://github.com/elbanic/yourday" rel="noopener noreferrer"&gt;https://github.com/elbanic/yourday&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Build Your First Agent
&lt;/h2&gt;

&lt;p&gt;Strands Agents makes building automated &lt;strong&gt;Agentic workflows&lt;/strong&gt; a reality by neatly orchestrating complex LLM calls and external service integrations. Through the YourDay project, we can experience the era where agents handle routine daily tasks simply by defining API keys and the workflow.&lt;/p&gt;

&lt;p&gt;What's in your daily routine that could be automated with Agent?&lt;/p&gt;

</description>
      <category>aws</category>
      <category>agents</category>
      <category>notimetocode</category>
      <category>strands</category>
    </item>
    <item>
      <title>Building an AWS-Based RAG Pipeline</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Fri, 21 Nov 2025 21:02:00 +0000</pubDate>
      <link>https://dev.to/elbanic/building-an-aws-based-rag-pipeline-1lp1</link>
      <guid>https://dev.to/elbanic/building-an-aws-based-rag-pipeline-1lp1</guid>
      <description>&lt;h2&gt;
  
  
  The Generational AI Blind Spot
&lt;/h2&gt;

&lt;p&gt;We've got a fantastic new &lt;strong&gt;AI coding assistant&lt;/strong&gt;, but when you ask it about your company's proprietary service architecture, it gives you a generic shrug (or worse, a confident hallucination). Why? Because our AI lives on the general internet, and our team's hard-won knowledge is locked behind firewalls and scattered across tools like &lt;strong&gt;Confluence, Slack, and internal documentation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is a pain point for everyone. As a service developer, we need that agent to understand the nuance of our codebase and team conventions. As a service operator, we can't afford to waste time retracing the steps of a solved production issue - we need the fastest, most reliable fix, instantly.&lt;/p&gt;

&lt;p&gt;If you're interested in how to systematically manage context for AI coding assistants, check out my series on &lt;a href="https://dev.to/elbanic/context-management-with-kiro-part-1-21hc"&gt;context management with Kiro&lt;/a&gt; and &lt;a href="https://dev.to/elbanic/context-bridging-the-ai-agents-blind-spot-38d6"&gt;Context - Bridging the AI Agent's Blind Spot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Stories&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As a &lt;strong&gt;service developer&lt;/strong&gt;, I want to provide context to my coding agent based on the knowledge my team possesses.&lt;/li&gt;
&lt;li&gt;As a &lt;strong&gt;service operator&lt;/strong&gt;, I want to find the right and shortest path to solving similar issues my team has previously encountered.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Power of Retrieval Augmented Generation (RAG)
&lt;/h3&gt;

&lt;p&gt;The bridge between general LLM intelligence and specific team expertise is &lt;strong&gt;Retrieval Augmented Generation (RAG)&lt;/strong&gt;. This article details the construction of a robust, AWS-based RAG pipeline designed to eliminate those "blind spots." I'll walk you through the entire ETL process - extracting changes every six hours, cleaning sensitive info with Comprehend, and indexing for code structure (&lt;strong&gt;Neptune&lt;/strong&gt;) and semantics (&lt;strong&gt;OpenSearch&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Our goal is simple: to create an AI agent that is not only intelligent but institutionally smart, giving software developers the right context to AI agents.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture the RAG Data Pipeline
&lt;/h2&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%2Fn4cejp4o87gy1ihx0gs4.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%2Fn4cejp4o87gy1ihx0gs4.png" alt="RAG Pipeline Architecture" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building a RAG system that delivers high-quality, up-to-date answers requires a disciplined and automated data pipeline. Our AWS-based RAG system is designed to periodically collect diverse internal materials - from wikis to Slack threads - and process, embed, and index them for the question answering engine.&lt;/p&gt;

&lt;p&gt;The core of this system is an &lt;strong&gt;ETL (Extract, Transform, Load)&lt;/strong&gt; workflow, triggered every six hours by &lt;strong&gt;AWS Step Functions&lt;/strong&gt; or whenever the source data is updated.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extract&lt;/strong&gt;: Changes are incrementally synced from diverse data sources and saved to an &lt;strong&gt;S3 raw-data bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transform/Process&lt;/strong&gt;: Sensitive information (like PII) is detected and masked using &lt;strong&gt;Amazon Comprehend&lt;/strong&gt;. Document formats are standardized and saved to an &lt;strong&gt;S3 processed-data bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Load/Index&lt;/strong&gt;: Embeddings are generated, and the data is indexed in two places: &lt;strong&gt;Amazon OpenSearch Service&lt;/strong&gt; for vector search and &lt;strong&gt;Amazon Neptune&lt;/strong&gt; for code structure and relational information. If you'd like to see what these two databases can do, check out &lt;a href="https://dev.to/elbanic/context-bridging-the-ai-agents-blind-spot-38d6"&gt;this article on context management&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Sources and Incremental Ingestion
&lt;/h3&gt;

&lt;p&gt;The ingestion stage focuses on efficiency by only processing what has changed. We pull from everywhere: internal wikis (Confluence, SharePoint), documents (Word/PDF), and collaboration tools (Slack/Teams message threads).&lt;/p&gt;

&lt;p&gt;To handle large datasets efficiently, &lt;strong&gt;AWS Step Functions&lt;/strong&gt; and &lt;strong&gt;Lambda functions/AWS Glue jobs&lt;/strong&gt; are scheduled (via EventBridge) to incrementally sync &lt;em&gt;only&lt;/em&gt; the content that has been changed or newly created since the last collection. This is critical for keeping the knowledge base fresh without wasting resources. We use APIs (like Confluence or Slack) to fetch content and store the results in an &lt;strong&gt;S3 raw-data bucket&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preprocessing and Transformation for Quality
&lt;/h3&gt;

&lt;p&gt;The quality of your RAG answer is directly proportional to the quality of your source documents. This stage ensures a clean, consistent knowledge base.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Filtering and Cleansing&lt;/strong&gt;: We use &lt;strong&gt;Amazon Comprehend's PII detection&lt;/strong&gt; to automatically identify and mask sensitive items (names, emails) before they're embedded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format Standardization&lt;/strong&gt;: We convert various formats (Word, PDF) into plain text using tools like &lt;strong&gt;AWS Textract&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chunking&lt;/strong&gt;: For optimal retrieval, the cleaned content is split into smaller, meaningful chunks (typically 200–500 tokens). Each chunk gets a unique ID and reference metadata, which is stored in the &lt;strong&gt;S3 processed-data bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dual Indexing: Vectors and Graphs
&lt;/h3&gt;

&lt;p&gt;Effective RAG often requires more than just semantic similarity. By using two specialized databases, we can enrich the context with both meaning and structure.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Embedding Generation&lt;/strong&gt;: We call models like &lt;strong&gt;Titan Text Embeddings models&lt;/strong&gt; via &lt;strong&gt;Amazon Bedrock&lt;/strong&gt; to generate the vector embedding for each document chunk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector DB (Semantic Search)&lt;/strong&gt;: The generated embedding vectors are stored in the k-NN vector index of &lt;strong&gt;Amazon OpenSearch Service&lt;/strong&gt;. This enables &lt;strong&gt;real-time vector search&lt;/strong&gt; to find the most semantically similar document chunks relevant to the user's query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph DB (Structural Search)&lt;/strong&gt;: Content with relationships - like source code, configuration files, or relational data - is stored in &lt;strong&gt;Amazon Neptune&lt;/strong&gt;. This allows the RAG query to perform a &lt;strong&gt;knowledge graph query&lt;/strong&gt; to retrieve associated entities, enriching the context with structural understanding.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Query Processing and Serving
&lt;/h3&gt;

&lt;p&gt;This is where the user's question becomes a relevant, cited answer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Query Reception (MCP server)&lt;/strong&gt;: The query hits an &lt;strong&gt;AWS API Gateway&lt;/strong&gt; endpoint, which is forwarded to a backend &lt;strong&gt;Lambda function&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG Retrieval&lt;/strong&gt;: The Lambda function calls the &lt;strong&gt;Bedrock RAG API (/retrieveAndGenerate)&lt;/strong&gt;. It retrieves the top $k$ similar chunks from &lt;strong&gt;OpenSearch&lt;/strong&gt; and simultaneously queries &lt;strong&gt;Neptune&lt;/strong&gt; for additional structural context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response Generation&lt;/strong&gt;: All of this retrieved context (the document text chunks and key entity information) is passed in a single prompt to &lt;strong&gt;Claude Sonnet 4.5&lt;/strong&gt; (Actually, you can use any LLM you want). The model synthesizes this evidence and the original question to formulate the final response. The response &lt;strong&gt;must&lt;/strong&gt; include the source of information to ensure trustworthiness.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Evolution of Context Engineering
&lt;/h2&gt;

&lt;p&gt;We're still iterating to find the optimal way to develop a highly accurate agent. There will always be a gap when it comes to fully keeping up with human context and nuance. However, by defining tasks, breaking them into manageable units, and building a &lt;strong&gt;team-specific knowledge base&lt;/strong&gt; that serves as a &lt;strong&gt;context engine&lt;/strong&gt;, we can continuously evolve our agents to be more accurate, more reliable, and ultimately, more valuable to the developers and operators who rely on them.&lt;/p&gt;

</description>
      <category>rag</category>
      <category>notimetocode</category>
      <category>aws</category>
      <category>knowledgebase</category>
    </item>
    <item>
      <title>Context - Bridging the AI Agent's Blind Spot</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Wed, 19 Nov 2025 01:46:00 +0000</pubDate>
      <link>https://dev.to/elbanic/context-bridging-the-ai-agents-blind-spot-38d6</link>
      <guid>https://dev.to/elbanic/context-bridging-the-ai-agents-blind-spot-38d6</guid>
      <description>&lt;h3&gt;
  
  
  Context - Bridging the AI Agent's Blind Spot
&lt;/h3&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/elbanic/context-management-with-kiro-part-1-21hc"&gt;last post&lt;/a&gt;, I introduced how to leverage &lt;strong&gt;Kiro's Steering&lt;/strong&gt; feature to automatically record task completion history and use it as persistent context for subsequent work. This time, we'll dive into a more &lt;strong&gt;technical approach to feeding context&lt;/strong&gt; to the AI agent, focusing on securing code quality and stability.&lt;/p&gt;

&lt;p&gt;For those interested in enterprise-scale context management, I've also written about building an AWS-based RAG pipeline that can handle institutional knowledge at scale.&lt;/p&gt;

&lt;p&gt;AI agents generally tend to do &lt;strong&gt;only what they are asked.&lt;/strong&gt; If you request a modification to a specific function in the source code, the agent typically changes just that part. The problem arises when the modified function is &lt;strong&gt;referenced in multiple other locations&lt;/strong&gt;. While agents sometimes figure out related code to adjust, they often fail to consider the full &lt;strong&gt;side effects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ultimately, unless the developer provides a &lt;strong&gt;perfect prompt&lt;/strong&gt; that accounts for the entire code flow and includes all relevant parts, it's difficult to produce high-quality code in large projects. This issue grows exponentially with the project's size.&lt;/p&gt;




&lt;h3&gt;
  
  
  Limitations of Existing Context Provisioning Methods
&lt;/h3&gt;

&lt;p&gt;To address this, several services have emerged that turn the entire code repository into a &lt;strong&gt;Knowledge Base&lt;/strong&gt;, delivered to the agent via &lt;strong&gt;RAG (Retrieval-Augmented Generation)&lt;/strong&gt; or an &lt;strong&gt;MCP (Model Context Protocol) Server&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Context&lt;/strong&gt;: This is an open-source VSCode plugin for Anthropic's Claude code agent. It &lt;strong&gt;embeds code chunks&lt;/strong&gt; and stores them in a vector database. When a query is made, it uses &lt;strong&gt;semantic search&lt;/strong&gt; to find relevant code, inserting it into Claude's prompt context. This allows it to handle large codebases (millions of lines) by delivering only the necessary information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codebuddy&lt;/strong&gt;: An AI coding helper for JetBrains IDEs and VSCode. Like Cursor, it &lt;strong&gt;scans and stores the entire codebase in a vector database&lt;/strong&gt;, enabling the agent to answer questions about the repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, these approaches commonly require &lt;strong&gt;cloud access&lt;/strong&gt; or &lt;strong&gt;external Database.&lt;/strong&gt; This poses a constraint for organizations with restrictive software usage policies or those in isolated network environments (e.g., air-gapped systems). Furthermore, calling LLMs is &lt;strong&gt;not cheap&lt;/strong&gt;, as costs accrue based on usage.&lt;/p&gt;

&lt;p&gt;These issues could be solved with a &lt;strong&gt;local knowledge base that can be easily built and used as open-source.&lt;/strong&gt; This is the motivation behind the &lt;strong&gt;local context knowledge base&lt;/strong&gt; I've developed, which I introduce here.&lt;/p&gt;




&lt;h3&gt;
  
  
  Local Context Bank - Converting the Local Codebase into a Knowledge Graph
&lt;/h3&gt;

&lt;p&gt;One of the key methodologies in context engineering is &lt;strong&gt;'retrieving relevant knowledge from a vector store.'&lt;/strong&gt; &lt;em&gt;GraphLoom&lt;/em&gt; is being developed with the goal of implementing this method, optimized for the local environment.&lt;/p&gt;

&lt;p&gt;The core objectives GraphLoom aims to achieve are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Independent Operation&lt;/strong&gt;: No need to call external APIs or remote MCPs, allowing usage in isolated environments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Source Context&lt;/strong&gt;: Ability to provide semantic context from various documents, including code, specs, design decisions, and implementation summaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular Context&lt;/strong&gt;: Support for adding context from independent code packages (e.g., back-end, front-end, microservices).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Local Context Bank&lt;/em&gt; combines two core technologies to provide semantic search, impact analysis, and specification-code synchronization for a local codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Design
&lt;/h3&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%2Fq9j96385fvu2g026nttr.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%2Fq9j96385fvu2g026nttr.png" alt="graphloom architecture" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Modeling the Codebase as a Graph: Understanding Relationships for Impact Analysis
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Local Context Bank&lt;/em&gt; stores the source code as a &lt;strong&gt;graph of relationships&lt;/strong&gt; between functions, classes, and modules. When a part is modified, it traverses this graph to find all related nodes, notifying the agent of potential impacts.&lt;/p&gt;

&lt;p&gt;This approach is crucial for inferring side effects. For example, if you change function A, graph traversal identifies other functions that call it, related data structures, etc., prompting the agent to &lt;strong&gt;review and modify them together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It constructs a Code Knowledge Graph (CKG) by using &lt;strong&gt;Abstract Syntax Tree (AST) parsing&lt;/strong&gt; (via tools like &lt;strong&gt;Tree-sitter&lt;/strong&gt;) and &lt;strong&gt;LSP&lt;/strong&gt; (Language Server Protocol) to extract dependency relations (function calls, variable references, import relationships). This CKG makes it easy for the agent to quickly grasp the scope of potential changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Contextual Retrieval via Vector DB: Semantic Search for Intent
&lt;/h3&gt;

&lt;p&gt;In addition to the graph structure, &lt;em&gt;Local Context Bank&lt;/em&gt; embeds the project's code and documentation and stores them in a &lt;strong&gt;local vector database&lt;/strong&gt;. When the agent needs information, it can query naturally, and the system retrieves the semantically relevant parts using &lt;strong&gt;semantic search&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For instance, if the agent asks, "Find the configuration related to this function," the vector DB finds code snippets or specs with high similarity and provides them as context. This &lt;strong&gt;RAG-based approach&lt;/strong&gt; helps overcome the context window limitations of the LLM by retrieving &lt;strong&gt;only the relevant code&lt;/strong&gt; from large repositories. Since it avoids reading all files for every request, it also offers &lt;strong&gt;cost-saving benefits in a local environment.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo: GraphLoom Workflow
&lt;/h3&gt;

&lt;p&gt;I named this software gloom. Here are the steps for indexing the &lt;em&gt;Local Context Bank&lt;/em&gt; project locally to show how the Agent utilizes the MCP.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialization&lt;/strong&gt;: Set up the GraphLoom environment and local vector DB.&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%2Fr0jbz0l08us3ntwophnp.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%2Fr0jbz0l08us3ntwophnp.png" alt="graphloom init" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Workspace Creation&lt;/strong&gt;: Specify the project directory for analysis.&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%2Fjlfhfgyxktmbxtz1jn39.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%2Fjlfhfgyxktmbxtz1jn39.png" alt="graphloom workspace" width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Indexing &amp;amp; Graph Build&lt;/strong&gt;: Parse code and documents to build the knowledge graph and vector DB.&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%2Fouqtsxqodw6dsfu6lnvx.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%2Fouqtsxqodw6dsfu6lnvx.png" alt="graphloom indexing 1" width="800" height="128"&gt;&lt;/a&gt;&lt;br&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%2Fg6noxepzakx6twwun3l9.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%2Fg6noxepzakx6twwun3l9.png" alt="graphloom indexing 2" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Impact&lt;/strong&gt;: You can query related nodes for a specific code change through CLI.&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%2Fl44tpollg9axsrzpoelx.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%2Fl44tpollg9axsrzpoelx.png" alt="graphloom impact" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;MCP integration:&lt;/strong&gt; The Agent queries the context using natural language.&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%2F4pg32v2kbiw6zjbvekwg.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%2F4pg32v2kbiw6zjbvekwg.png" alt="graphloom mcp" width="800" height="991"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Results&lt;/strong&gt;: Agents can utilize the provided output as context.&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%2Fczbrptu5jvbub7hrt6h2.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%2Fczbrptu5jvbub7hrt6h2.png" alt="graphloom result" width="800" height="997"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Expanding the Potential of Coding Agents
&lt;/h3&gt;

&lt;p&gt;I built and used this software myself, and it reduced the time it took to provide context to coding agents. Software developers using coding agents will need context management capabilities when conducting software engineering. If you can't use a commercially available service, you can implement something similar like this to improve the agent's efficiency.&lt;/p&gt;

&lt;p&gt;The ultimate goal of &lt;em&gt;(Local) Context Bank&lt;/em&gt; is to reduce the time developers spend manually managing context and encourage agents to generate high-quality code that considers side effects.&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>contextengineering</category>
      <category>notimetocode</category>
    </item>
    <item>
      <title>Context Management with Kiro (Part 1)</title>
      <dc:creator>elbanic</dc:creator>
      <pubDate>Tue, 18 Nov 2025 06:35:00 +0000</pubDate>
      <link>https://dev.to/elbanic/context-management-with-kiro-part-1-21hc</link>
      <guid>https://dev.to/elbanic/context-management-with-kiro-part-1-21hc</guid>
      <description>&lt;h3&gt;
  
  
  The Weight of Context for Humans and AI Coding Assistant
&lt;/h3&gt;

&lt;p&gt;With the advancement of AI technology, coding assistants have become deeply embedded in the daily development environment. But, let's momentarily set aside AI and consider how vital &lt;strong&gt;Context&lt;/strong&gt; is when we work with people. If a colleague abruptly asks about a single line of code without any background knowledge of the previous discussion or project history, you'd likely feel just as lost.&lt;/p&gt;

&lt;p&gt;Just as collaboration is impossible without context, &lt;strong&gt;context is everything in collaboration with an AI coding agent.&lt;/strong&gt; The agent must accurately understand the project's goals, architecture, and existing codebase to serve as a truly "smart" partner.&lt;/p&gt;

&lt;p&gt;I've been using spec-driven development tools like &lt;strong&gt;Kiro (or VSCode + Cline)&lt;/strong&gt; for my personal coding projects. While these tools offer incredible productivity, the process of &lt;strong&gt;constantly prompting and providing context&lt;/strong&gt; for better code quality led to the following pain points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Repetitive Work&lt;/strong&gt;: Having to re-enter the project's &lt;strong&gt;relevant context&lt;/strong&gt; every time I start a new session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token Limits&lt;/strong&gt;: Issues where the agent's &lt;strong&gt;token limit&lt;/strong&gt; was hit during long sessions, causing previous conversation history to be cut off.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this article, I will explain how I overcame these inefficiencies and introduce my method for &lt;strong&gt;systematically managing context&lt;/strong&gt; for the AI coding assistant throughout my projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Automation Strategy for Recording and Utilizing 'Memory'
&lt;/h3&gt;

&lt;p&gt;To solve the recurring problem of context entry, I devised a method to &lt;strong&gt;automatically select and include highly relevant context.&lt;/strong&gt; This involves leveraging the &lt;em&gt;Kiro Steering&lt;/em&gt; or &lt;em&gt;Cline Rule&lt;/em&gt; features.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;About Kiro Steering and Cline Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kiro Steering&lt;/strong&gt;: This is a core feature of Kiro, the AWS-provided, agent-based IDE. It's a system that permanently guides the AI agent's behavior by providing continuous project knowledge (e.g., coding conventions, architectural decisions) stored as Markdown files in the &lt;code&gt;.kiro/steering/&lt;/code&gt; directory. This grants the agent an Institutional Memory of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cline Rule&lt;/strong&gt;: A feature provided by the VSCode extension Cline, which offers system-level guidelines or preferences. These are typically stored as Markdown files in the &lt;code&gt;.clinerules/&lt;/code&gt; directory (or a file) at the project root, delivering project-wide context and rules to the agent to ensure consistent behavior.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Practical Application: 'Memory Management' Instructions in the Steering File
&lt;/h3&gt;

&lt;p&gt;I leveraged these features to give the agent specific &lt;strong&gt;Instructions&lt;/strong&gt; demanding &lt;strong&gt;continuous context management&lt;/strong&gt; for the project. In a real Kiro project, the &lt;code&gt;.kiro/steering/implementation.md&lt;/code&gt; file specifies the following rules. These instructions are key to ensuring the agent records new implementations and is mandated to reference past records before starting the next task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upon Implementation Completion (Mandatory Recording)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MUST&lt;/strong&gt;: Write an implementation summary or task completion status as Markdown and save it to the &lt;code&gt;.kiro_context/&lt;/code&gt; folder. (Purpose: Record implementation history)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHOULD&lt;/strong&gt;: Write design decisions or technical specifications as Markdown and save them to the &lt;code&gt;.design_decision/&lt;/code&gt; folder. (Purpose: Record design decisions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Before Starting Work (Mandatory Reference)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MUST&lt;/strong&gt;: Read the &lt;code&gt;.kiro_context/*.md&lt;/code&gt; files and understand the entire context. (Purpose: Reference previous implementation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHOULD&lt;/strong&gt;: Refer to the &lt;code&gt;.design_decision/*.md&lt;/code&gt; files to grasp the design intent. (Purpose: Understand design intent)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Context Recording Example in the GraphLoom Project
&lt;/h3&gt;

&lt;p&gt;Through these instructions, the agent is instructed to summarize the implementation after completing each task and save it to the &lt;code&gt;.kiro_context&lt;/code&gt; folder. If you check the GraphLoom repository and &lt;code&gt;.kiro_context&lt;/code&gt;, you can see the files the agent is actually recording:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.kiro_context/
├── task_1_implementation_summary.md
├── task_2_implementation_summary.md
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Consequently, when the agent needs to reference previously implemented code, there is no need for me to explain the details repeatedly. The agent can &lt;strong&gt;understand the project's current status and implementation history&lt;/strong&gt; simply by reading the summary files it recorded itself.&lt;/p&gt;

&lt;p&gt;Interestingly, even when these files are included in the Rule or Steering instructions, the agent doesn't always read every file. The agent appears to &lt;strong&gt;make its own relevance judgment&lt;/strong&gt; on the current task and selectively reads only the most necessary context files. Therefore, &lt;strong&gt;writing clear and intuitive titles and content&lt;/strong&gt; for the summary files is a crucial factor in helping the agent with its 'selective knowledge utilization.'&lt;/p&gt;




&lt;h3&gt;
  
  
  Faster, More Accurate Development
&lt;/h3&gt;

&lt;p&gt;By establishing this system for context management, the time spent inputting context during development has been drastically reduced. The greatest advantages are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Perspective&lt;/strong&gt;: The agent maintains &lt;strong&gt;continuous project memory&lt;/strong&gt; without worrying about token limits, and it performs subsequent tasks &lt;strong&gt;faster and more accurately&lt;/strong&gt; because there's no need for repetitive prompting of detailed previous work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Perspective&lt;/strong&gt;: The context files provide &lt;strong&gt;automated project documentation&lt;/strong&gt;, allowing both the agent and me to quickly verify past implementations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, this method is more than just a developer convenience; it's a core strategy that advances AI agent collaboration from &lt;strong&gt;'one-time conversations'&lt;/strong&gt; to &lt;strong&gt;'sustainable knowledge sharing.'&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/elbanic/context-bridging-the-ai-agents-blind-spot-38d6?"&gt;next post&lt;/a&gt;, I'll introduce GraphLoom, a tool I personally developed for context management, and provide specific examples of its use. For a broader perspective on building knowledge bases for AI systems, you might also be interested in my article on building an AWS-based RAG pipeline.&lt;/p&gt;

</description>
      <category>kiro</category>
      <category>contextengineering</category>
      <category>notimetocode</category>
    </item>
  </channel>
</rss>
