<?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: Hamza A</title>
    <description>The latest articles on DEV Community by Hamza A (@hamza_a_1dba9c327788c448f).</description>
    <link>https://dev.to/hamza_a_1dba9c327788c448f</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%2F2039501%2F01a9c68e-6315-4f90-b3f8-7df3c5546882.jpg</url>
      <title>DEV Community: Hamza A</title>
      <link>https://dev.to/hamza_a_1dba9c327788c448f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hamza_a_1dba9c327788c448f"/>
    <language>en</language>
    <item>
      <title>Rune: A Rust-Native AI Runtime — And Why It Needs Contributors</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Fri, 10 Apr 2026 10:04:38 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/rune-a-rust-native-ai-runtime-and-why-it-needs-contributors-4k65</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/rune-a-rust-native-ai-runtime-and-why-it-needs-contributors-4k65</guid>
      <description>&lt;p&gt;I have been building &lt;strong&gt;Rune&lt;/strong&gt; over the past few weeks — a Rust-native AI runtime that acts as a personal agent gateway. It handles multi-provider routing, durable sessions, semantic memory, tool approval workflows, and federated multi-instance orchestration.&lt;/p&gt;

&lt;p&gt;It is moving fast — over 1,200 commits since mid-March and I use it daily. But it needs more hands. Here is what it is, where it is going, and how you can help.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Rune does
&lt;/h2&gt;

&lt;p&gt;Rune sits between your messaging channels (CLI, WebChat, API) and your model providers (OpenAI, Anthropic, Azure AI Foundry, Azure OpenAI). It adds the runtime layer that every serious agent deployment needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Durable sessions&lt;/strong&gt; — survive restarts, crashes, redeployments. Backed by PostgreSQL, SQLite, or Azure Cosmos DB.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool call approval workflows&lt;/strong&gt; — agents propose actions, operators approve or reject. Every decision is logged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic memory and retrieval&lt;/strong&gt; — context that persists across conversations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider routing&lt;/strong&gt; — switch models per task, failover between providers, manage cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cron jobs and reminders&lt;/strong&gt; — scheduled agent work without external orchestration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Federated instances&lt;/strong&gt; — run Rune on your laptop and your server, share state, delegate workloads.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The agent gateway is a long-running process that holds sessions, queues approvals, brokers every model call, and runs on your infrastructure 24/7. That is a systems programming problem.&lt;/p&gt;

&lt;p&gt;Rust gives Rune predictable performance (no GC pauses), memory safety without a runtime, single-binary deployment, and a type system that catches bugs before they reach production. The tradeoff is that Rust has a steeper learning curve — which is exactly why this project needs contributors who enjoy working in that space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get it running in 60 seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One-line install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ghostrider0470/rune/main/scripts/install.sh | sh

&lt;span class="c"&gt;# Or from source&lt;/span&gt;
cargo build &lt;span class="nt"&gt;--release&lt;/span&gt; &lt;span class="nt"&gt;--bin&lt;/span&gt; rune-gateway &lt;span class="nt"&gt;--bin&lt;/span&gt; rune
cargo run &lt;span class="nt"&gt;--release&lt;/span&gt; &lt;span class="nt"&gt;--bin&lt;/span&gt; rune &lt;span class="nt"&gt;--&lt;/span&gt; setup &lt;span class="nt"&gt;--api-key&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get a working gateway with WebChat at &lt;code&gt;localhost:8787/webchat&lt;/code&gt;, a dashboard, SQLite state, and auto-detected local Ollama. Docker Compose is also supported for zero-config deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native spells (built-in tools)
&lt;/h2&gt;

&lt;p&gt;Rune ships with compiled-in tools called "spells":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;rust-patterns&lt;/strong&gt; — query production Rust patterns by topic, tags, or imports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;security-audit&lt;/strong&gt; — baseline host security checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;code-review&lt;/strong&gt; — structured multi-dimensional review for files, diffs, and PRs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;evolver&lt;/strong&gt; — self-evolution workflow scaffold&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not plugins. They compile into the binary and run at native speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where contributors can make an impact
&lt;/h2&gt;

&lt;p&gt;This is where I need help. Rune is an active, parity-seeking runtime — the core loop works, but there is a lot of surface area to cover. Here are the areas where contributions would move the needle:&lt;/p&gt;

&lt;h3&gt;
  
  
  Good first issues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation improvements&lt;/strong&gt; — the &lt;code&gt;docs/&lt;/code&gt; folder is comprehensive but can always be clearer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error messages and diagnostics&lt;/strong&gt; — make &lt;code&gt;rune doctor run&lt;/code&gt; catch more edge cases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI UX&lt;/strong&gt; — better help text, output formatting, progress indicators&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Medium complexity
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New spells&lt;/strong&gt; — build a new built-in tool (web scraping, file management, git automation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider integrations&lt;/strong&gt; — add support for Groq, Mistral, or local llama.cpp&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard features&lt;/strong&gt; — the TypeScript frontend (10% of the codebase) needs love&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage backends&lt;/strong&gt; — help harden the Cosmos DB and Azure SQL paths&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advanced
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Federation protocol&lt;/strong&gt; — improve multi-instance delegation and health checking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic memory&lt;/strong&gt; — better retrieval strategies, embedding pipeline optimizations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt; — improve real-time token streaming across the gateway&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security hardening&lt;/strong&gt; — audit the approval workflow, session isolation, auth paths&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Non-code contributions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Try it and file issues&lt;/strong&gt; — install Rune, break it, tell me what confused you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write about it&lt;/strong&gt; — blog posts, tutorials, comparison articles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design feedback&lt;/strong&gt; — if you have opinions about agent runtime UX, I want to hear them&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The architecture at a glance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Channels (CLI / WebChat / API)
       |
   Rune Gateway (Rust)
   ├── Session Manager (durable state)
   ├── Tool Executor (approval queue)
   ├── Provider Router (multi-model)
   ├── Memory &amp;amp; Retrieval
   ├── Scheduler (cron / reminders)
   └── Federation (multi-instance)
       |
Providers (OpenAI / Anthropic / Azure AI / Ollama)
       |
Storage (SQLite / PostgreSQL / Cosmos DB)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to start contributing
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Star and clone&lt;/strong&gt;: &lt;a href="https://github.com/ghostrider0470/rune" rel="noopener noreferrer"&gt;github.com/ghostrider0470/rune&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read &lt;code&gt;docs/contributor/&lt;/code&gt;&lt;/strong&gt; — development workflow, build instructions, PR conventions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check &lt;code&gt;docs/parity/&lt;/code&gt;&lt;/strong&gt; — see what is shipped vs what is next&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pick something from the issues&lt;/strong&gt; or propose your own&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Join the conversation&lt;/strong&gt; — open a discussion on GitHub, I respond to everything&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The codebase is 88% Rust, 10% TypeScript, with comprehensive documentation organized by audience (operator, contributor, reference, strategy). Architecture Decision Records live in &lt;code&gt;docs/adr/&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why contribute to Rune?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real Rust systems programming&lt;/strong&gt; — not toy examples, actual long-running service code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI infrastructure&lt;/strong&gt; — the agent runtime space is early and moving fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small project, big impact&lt;/strong&gt; — your PR will not disappear into a 10,000-file monorepo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn by building&lt;/strong&gt; — async Rust, PostgreSQL, provider APIs, WebSocket streaming, federation protocols&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have ever wanted to work on the infrastructure layer of AI agents — the part that actually runs them reliably — Rune is a good place to start.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ghostrider0470/rune.git
&lt;span class="nb"&gt;cd &lt;/span&gt;rune
cargo build &lt;span class="nt"&gt;--release&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's build this together.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/ghostrider0470/rune" rel="noopener noreferrer"&gt;ghostrider0470/rune&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;License&lt;/strong&gt;: Open Source (MIT)&lt;/p&gt;

</description>
      <category>rust</category>
      <category>ai</category>
      <category>opensource</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Microsoft Fabric and OneLake: The Unified Data Platform</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:28:53 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/microsoft-fabric-and-onelake-the-unified-data-platform-4lj8</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/microsoft-fabric-and-onelake-the-unified-data-platform-4lj8</guid>
      <description>&lt;p&gt;For years, the Microsoft data story was a shopping list: Synapse, ADF, Power BI, Purview, ADLS, Databricks-or-not. &lt;strong&gt;Microsoft Fabric&lt;/strong&gt; and &lt;strong&gt;OneLake&lt;/strong&gt; collapse most of that into a single SaaS platform — and in 2026, it is finally mature enough to bet a production workload on.&lt;/p&gt;

&lt;p&gt;Here is what actually changed and what to watch.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea
&lt;/h2&gt;

&lt;p&gt;One tenant, one lake. OneLake is the &lt;strong&gt;OneDrive for data&lt;/strong&gt;: a single logical data lake across your entire org, built on Delta/Parquet, accessible from every Fabric workload (Data Engineering, Data Warehouse, Real-Time Intelligence, Data Science, Power BI) without copying data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shortcuts&lt;/strong&gt; let you point at data in ADLS, S3, or GCS and treat it as if it lived in OneLake. No duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No more pipeline jungle&lt;/strong&gt; just to get data into Power BI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct Lake&lt;/strong&gt; mode in Power BI queries Parquet files directly — no import, no DirectQuery tax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git integration&lt;/strong&gt; for notebooks, pipelines, and semantic models&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unified governance&lt;/strong&gt; via Purview baked in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One compute metering model&lt;/strong&gt; (capacity units) across all workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it is great
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Organizations already standardized on Power BI&lt;/li&gt;
&lt;li&gt;Mid-size data estates that never wanted to operate Databricks themselves&lt;/li&gt;
&lt;li&gt;Teams that want medallion architecture without assembling six services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it is not yet the answer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Very large, very custom Spark workloads (Databricks still wins)&lt;/li&gt;
&lt;li&gt;Teams with strict multi-cloud strategies (Fabric is Azure-first)&lt;/li&gt;
&lt;li&gt;Workloads that need streaming semantics beyond what KQL and Eventstream provide&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with &lt;strong&gt;one domain&lt;/strong&gt;, not the whole estate&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;shortcuts&lt;/strong&gt; before you move data — prove the queries work first&lt;/li&gt;
&lt;li&gt;Adopt &lt;strong&gt;medallion layout&lt;/strong&gt; in OneLake from day one (Bronze / Silver / Gold)&lt;/li&gt;
&lt;li&gt;Bring &lt;strong&gt;Git integration&lt;/strong&gt; in early — it is the biggest quality-of-life upgrade&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/microsoft-fabric-onelake-unified-data-platform" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>data</category>
      <category>dataengineering</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Event-Driven Serverless Patterns That Scale on Azure</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:28:09 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/event-driven-serverless-patterns-that-scale-on-azure-ko5</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/event-driven-serverless-patterns-that-scale-on-azure-ko5</guid>
      <description>&lt;p&gt;Serverless hit its awkward teenage years somewhere around 2022. In 2026, it is grown up: the patterns are settled, the tooling is boring (good), and event-driven architectures on Azure genuinely scale when you build them right.&lt;/p&gt;

&lt;p&gt;Here are the patterns that actually hold up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three building blocks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Event Grid&lt;/strong&gt; — cheap, low-latency, pub/sub for reactive workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Bus&lt;/strong&gt; — durable, ordered, transactional messaging for business logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Hubs&lt;/strong&gt; — high-throughput streaming for telemetry and logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use all three. They are not competitors; they are different instruments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Patterns that scale
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Grid → Function → Bus
&lt;/h3&gt;

&lt;p&gt;Event Grid fans out a lightweight notification to a Function. The Function does the minimum work needed to enqueue a durable command into Service Bus. Keeps the hot path fast and the business path reliable.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Outbox → Event Grid
&lt;/h3&gt;

&lt;p&gt;Write to your database and to an outbox table in the same transaction. A tiny worker drains the outbox to Event Grid. You get exactly-once-ish semantics without distributed transactions.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Saga over Service Bus
&lt;/h3&gt;

&lt;p&gt;Long-running business processes as a chain of Service Bus messages with compensation steps. Durable Functions make the orchestration readable.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Event Hubs → Stream Analytics → Fabric
&lt;/h3&gt;

&lt;p&gt;High-volume telemetry lands in Event Hubs, gets projected into Fabric or ADX for queries. Functions handle alerts off the same stream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things to get right early
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency keys&lt;/strong&gt; on every handler&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poison queues&lt;/strong&gt; and &lt;strong&gt;dead letter&lt;/strong&gt; alarms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema registry&lt;/strong&gt; for event contracts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracing&lt;/strong&gt; via OpenTelemetry across the whole chain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backpressure&lt;/strong&gt; — Functions can scale, your downstream database cannot&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When not to go serverless
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Long-running heavy compute (use Container Apps)&lt;/li&gt;
&lt;li&gt;Very latency-sensitive synchronous APIs (use Container Apps or AKS)&lt;/li&gt;
&lt;li&gt;When your team has zero operational experience with distributed systems&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/event-driven-serverless-patterns-scale-azure" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>serverless</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Cloud-Native Authentication Patterns for Web Apps</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:27:36 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/cloud-native-authentication-patterns-for-web-apps-346b</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/cloud-native-authentication-patterns-for-web-apps-346b</guid>
      <description>&lt;p&gt;Authentication in cloud-native web apps in 2026 is not about rolling your own login form. It is about picking the right &lt;strong&gt;pattern&lt;/strong&gt; for your topology — single-page app, server-rendered, mobile, or API-first — and wiring it to an identity provider you trust.&lt;/p&gt;

&lt;p&gt;Here are the patterns that hold up in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four shapes of modern auth
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Authorization Code + PKCE (SPAs and mobile).&lt;/strong&gt; The default for anything client-side. No client secret, PKCE binds the token to the client, refresh via rotating tokens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BFF (Backend-for-Frontend) with session cookies.&lt;/strong&gt; The comeback pattern. Keep tokens on the server, give the browser a signed session cookie. Works beautifully with SSR frameworks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client Credentials (service-to-service).&lt;/strong&gt; For machine-to-machine, scoped to one audience per client. Never reuse across services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device Code (CLIs and IoT).&lt;/strong&gt; For inputs without a browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What to put on the identity provider
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entra ID / Auth0 / Clerk / Keycloak&lt;/strong&gt; — pick one and commit&lt;/li&gt;
&lt;li&gt;Configure &lt;strong&gt;per-environment tenants&lt;/strong&gt; or at least per-environment apps&lt;/li&gt;
&lt;li&gt;Enforce &lt;strong&gt;MFA&lt;/strong&gt; at the IdP, not the app&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;short-lived access tokens&lt;/strong&gt; and &lt;strong&gt;refresh token rotation&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Storing access tokens in &lt;code&gt;localStorage&lt;/code&gt; (XSS steals them instantly)&lt;/li&gt;
&lt;li&gt;Treating ID tokens as access tokens&lt;/li&gt;
&lt;li&gt;Rolling custom JWT verification instead of using the IdP SDK&lt;/li&gt;
&lt;li&gt;Skipping audience and issuer checks&lt;/li&gt;
&lt;li&gt;No token revocation story&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The BFF pattern in one paragraph
&lt;/h2&gt;

&lt;p&gt;Your frontend talks only to your backend via &lt;code&gt;HttpOnly&lt;/code&gt;, &lt;code&gt;Secure&lt;/code&gt;, &lt;code&gt;SameSite=Lax&lt;/code&gt; cookies. Your backend holds the real tokens, talks to downstream APIs on behalf of the user, and handles refresh. Result: zero tokens in JavaScript, no &lt;code&gt;localStorage&lt;/code&gt; exposure, and CSRF is manageable with the usual double-submit pattern.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/cloud-native-authentication-patterns-web-apps" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>cloud</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Azure IoT Operations: Edge Intelligence for Industry</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:27:01 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/azure-iot-operations-edge-intelligence-for-industry-1khe</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/azure-iot-operations-edge-intelligence-for-industry-1khe</guid>
      <description>&lt;p&gt;If you run industrial IoT in 2026, the center of gravity has moved to the edge. &lt;strong&gt;Azure IoT Operations&lt;/strong&gt; is Microsoft's Arc-enabled, Kubernetes-native edge stack — and it is finally the answer to "how do I run real logic next to my PLCs without shipping everything to the cloud?"&lt;/p&gt;

&lt;p&gt;Here is what it actually is and when to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What IoT Operations gives you
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arc-enabled Kubernetes&lt;/strong&gt; as the runtime — you can use AKS Edge Essentials, K3s, or any CNCF-conformant cluster&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MQTT broker&lt;/strong&gt; at the edge (replaces the old IoT Edge hub)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data flows&lt;/strong&gt; for transformation and routing before data leaves the plant&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPC UA connector&lt;/strong&gt; for talking to industrial equipment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema registry&lt;/strong&gt; so you are not shipping untyped JSON around&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in observability&lt;/strong&gt; via OpenTelemetry&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it beats classic IoT Edge
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes-native, so your existing GitOps and Helm workflows just work&lt;/li&gt;
&lt;li&gt;Clean separation of broker, connectors, and data flows&lt;/li&gt;
&lt;li&gt;Local processing with cloud-optional operation&lt;/li&gt;
&lt;li&gt;Better story for high availability at the edge&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architectural patterns that work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plant-local MQTT + cloud fan-out.&lt;/strong&gt; Brokers at the edge, with filtered routes to Event Hubs or Fabric.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol translation at the edge.&lt;/strong&gt; OPC UA in, Cloud Events out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules at the edge, analytics in the cloud.&lt;/strong&gt; Fast loops stay local, slow loops go to Fabric or ADX.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where teams stumble
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treating it like IoT Edge v2 instead of a Kubernetes platform&lt;/li&gt;
&lt;li&gt;Skipping the schema registry — you will regret it in month six&lt;/li&gt;
&lt;li&gt;Under-provisioning edge clusters for real workloads&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/azure-iot-operations-edge-intelligence-industry" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>iot</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Azure IoT Hub: Enterprise Device Management at Scale</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:26:21 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/azure-iot-hub-enterprise-device-management-at-scale-32oe</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/azure-iot-hub-enterprise-device-management-at-scale-32oe</guid>
      <description>&lt;p&gt;Managing 10 IoT devices is a weekend project. Managing 100,000 is a platform problem — and in 2026, &lt;strong&gt;Azure IoT Hub&lt;/strong&gt; is still the most battle-tested way to do it if you are already on Azure.&lt;/p&gt;

&lt;p&gt;Here is what running IoT Hub at real scale actually looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What IoT Hub gives you
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Per-device identity and auth&lt;/strong&gt; (X.509, SAS, TPM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bi-directional messaging&lt;/strong&gt; — telemetry up, commands and direct methods down&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device twins&lt;/strong&gt; for desired/reported state sync&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message routing&lt;/strong&gt; to Event Hubs, Service Bus, Storage, or custom endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Device Provisioning Service (DPS)&lt;/strong&gt; for zero-touch onboarding&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The scaling patterns that work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shard by DPS enrollment groups&lt;/strong&gt;, not by hub. Start with one hub per region and grow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route telemetry out immediately.&lt;/strong&gt; IoT Hub is a message broker, not a database. Land it in Event Hubs or ADX.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use device twins for state, not telemetry.&lt;/strong&gt; Twins are not free — treat them like config, not a data stream.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Back off on ingestion spikes.&lt;/strong&gt; Use the built-in throttles instead of fighting them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Operational gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connection storms&lt;/strong&gt; after a regional outage can overwhelm DPS — stagger reconnects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quota limits per hub&lt;/strong&gt; are real; plan for S2/S3 tiers before you hit them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message size matters&lt;/strong&gt; — batch small payloads, compress where you can&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs are expensive&lt;/strong&gt; — route diagnostics to Log Analytics selectively&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to look elsewhere
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You are fully on AWS → IoT Core is fine&lt;/li&gt;
&lt;li&gt;You need MQTT 5 features IoT Hub does not yet expose&lt;/li&gt;
&lt;li&gt;You are at the edge and want local-first → pair IoT Hub with IoT Operations&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/azure-iot-hub-enterprise-device-management-scale" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>azure</category>
      <category>iot</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Digital Twins Meet BIM: Smart Building Intelligence</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:24:59 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/digital-twins-meet-bim-smart-building-intelligence-17m5</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/digital-twins-meet-bim-smart-building-intelligence-17m5</guid>
      <description>&lt;p&gt;Building Information Modeling (BIM) gave us detailed 3D models of buildings. Digital twins gave us live, data-connected replicas of physical systems. In 2026, combining the two is finally producing the "smart building" outcomes that were overpromised for a decade.&lt;/p&gt;

&lt;p&gt;Here is what is actually working in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes when BIM meets a digital twin
&lt;/h2&gt;

&lt;p&gt;A static BIM model is a snapshot of design intent. A digital twin fuses that model with real-time telemetry — HVAC, occupancy, energy, water, elevators — so operators can reason about a building the way a pilot reasons about an aircraft.&lt;/p&gt;

&lt;p&gt;The result is a queryable, time-series-aware model of the building.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases that pay for themselves
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Predictive HVAC tuning.&lt;/strong&gt; Cut energy by 15–30% by learning occupancy patterns instead of running fixed schedules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fault detection and diagnostics.&lt;/strong&gt; Catch failing chillers and leaky dampers weeks before they trigger tenant complaints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space optimization.&lt;/strong&gt; Use live occupancy to rightsize floors, meeting rooms, and amenities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tenant experience.&lt;/strong&gt; Wayfinding, booking, and indoor air quality dashboards tied to the same model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The architecture that keeps working
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ingestion:&lt;/strong&gt; IoT Hub or MQTT broker at the edge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Azure Digital Twins (DTDL) or an open twin framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics:&lt;/strong&gt; Time-series DB plus a rules engine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visualization:&lt;/strong&gt; Unity or web-based 3D viewer bound to the twin graph&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where teams get stuck
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treating the twin as a dashboard project instead of a data platform&lt;/li&gt;
&lt;li&gt;Underestimating the BIM cleanup work — most IFC exports need heavy normalization&lt;/li&gt;
&lt;li&gt;Ignoring change management — if facilities teams do not trust the twin, nothing ships&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/digital-twins-bim-smart-building-intelligence" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>data</category>
      <category>iot</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Azure DevOps vs GitHub Issues: Choosing the Right PM Stack</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:19:57 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/azure-devops-vs-github-issues-choosing-the-right-pm-stack-4l13</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/azure-devops-vs-github-issues-choosing-the-right-pm-stack-4l13</guid>
      <description>&lt;p&gt;If you are picking a project management stack for an engineering team in 2026, the question is no longer "Jira or not." It is &lt;strong&gt;Azure DevOps or GitHub Issues&lt;/strong&gt; — and the answer matters more than it used to, because the new AI-powered developer features are shipping exclusively on GitHub.&lt;/p&gt;

&lt;p&gt;Here is the honest comparison after running both in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Azure DevOps still wins
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise reporting and compliance.&lt;/strong&gt; Boards, queries, and audit trails that a PMO actually trusts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test plans and manual QA workflows.&lt;/strong&gt; Nothing in GitHub comes close.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deep integration with the Microsoft stack&lt;/strong&gt; — AAD, Power BI, Office 365, Teams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fine-grained work item hierarchies&lt;/strong&gt; (Epic → Feature → PBI → Task) out of the box.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where GitHub Issues pulls ahead
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copilot and agent features&lt;/strong&gt; ship there first and often only there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projects v2&lt;/strong&gt; is finally good — spreadsheet-style views, custom fields, and automation rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Everything lives next to the code.&lt;/strong&gt; Reviewers, issues, discussions, and CI in one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lower friction for open source and contractor collaboration.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The practical call
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regulated enterprise with a PMO and test teams?&lt;/strong&gt; Stay on Azure DevOps for now. Use GitHub for source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product engineering team shipping fast?&lt;/strong&gt; Move to GitHub Issues + Projects. The AI tooling gap is widening every quarter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid?&lt;/strong&gt; It works, but pick &lt;em&gt;one&lt;/em&gt; as the source of truth for work items. Duplication kills you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Work item history does not transfer cleanly — export to CSV and archive&lt;/li&gt;
&lt;li&gt;Custom fields in Azure Boards rarely map 1:1 to GitHub Projects&lt;/li&gt;
&lt;li&gt;Pipelines vs Actions is a separate migration — do not do both at once&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/azure-devops-vs-github-issues-choosing-right-pm-stack" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>github</category>
      <category>management</category>
    </item>
    <item>
      <title>RFC 9457: Structured Errors Cut AI Agent Costs 98%</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:18:36 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/rfc-9457-structured-errors-cut-ai-agent-costs-98-o83</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/rfc-9457-structured-errors-cut-ai-agent-costs-98-o83</guid>
      <description>&lt;p&gt;If you are still returning &lt;code&gt;{"error": "Something went wrong"}&lt;/code&gt; from your HTTP APIs in 2026, it is time to upgrade. &lt;strong&gt;RFC 9457&lt;/strong&gt; (Problem Details for HTTP APIs) is now the de facto standard — and it obsoletes the older RFC 7807 that most teams copy-pasted into production years ago.&lt;/p&gt;

&lt;p&gt;Here is what actually changed and what it means for your services.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RFC 9457 defines
&lt;/h2&gt;

&lt;p&gt;A standard JSON (or XML) shape for error responses so clients can reliably parse and act on failures:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/probs/out-of-credit"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You do not have enough credit."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"detail"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Your current balance is 30, but that costs 50."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"instance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/account/12345/msgs/abc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"balance"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"accounts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"/account/12345"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/account/67890"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The required fields are minimal: &lt;code&gt;type&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;detail&lt;/code&gt;, and &lt;code&gt;instance&lt;/code&gt;. Everything else is an extension you control.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is new vs RFC 7807
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clarifications around extension members&lt;/strong&gt; — you can safely add your own fields without breaking clients&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better guidance on &lt;code&gt;type&lt;/code&gt; URIs&lt;/strong&gt; — they should be stable and dereferenceable documentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explicit support for i18n&lt;/strong&gt; via content negotiation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tightened security guidance&lt;/strong&gt; so you do not leak stack traces or internal IDs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters for your team
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clients can finally handle errors generically.&lt;/strong&gt; No more "every service has its own error shape."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability gets easier.&lt;/strong&gt; Your logs and traces can pivot on &lt;code&gt;type&lt;/code&gt; without custom parsers per service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fewer support tickets.&lt;/strong&gt; A stable &lt;code&gt;instance&lt;/code&gt; URL makes bug reports actually reproducible.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Migration tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pick a single &lt;code&gt;type&lt;/code&gt; URI namespace and document it&lt;/li&gt;
&lt;li&gt;Keep &lt;code&gt;title&lt;/code&gt; human-readable and stable; put the variable bits in &lt;code&gt;detail&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Never put PII or secrets in &lt;code&gt;detail&lt;/code&gt; or extensions&lt;/li&gt;
&lt;li&gt;Map your existing error codes to &lt;code&gt;type&lt;/code&gt; URIs before changing the wire format&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/rfc-9457-structured-errors-cut-ai-agent-costs" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Claude Code Is Reshaping Software Engineering in 2026</title>
      <dc:creator>Hamza A</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:14:14 +0000</pubDate>
      <link>https://dev.to/hamza_a_1dba9c327788c448f/claude-code-is-reshaping-software-engineering-in-2026-4ljf</link>
      <guid>https://dev.to/hamza_a_1dba9c327788c448f/claude-code-is-reshaping-software-engineering-in-2026-4ljf</guid>
      <description>&lt;p&gt;Claude Code is now authoring roughly &lt;strong&gt;4% of all commits on GitHub&lt;/strong&gt;. That is not a rounding error — it is a structural shift in how software gets written.&lt;/p&gt;

&lt;p&gt;Over the last few weeks we dug into what agentic coding actually looks like in production across multiple client teams: where it works, where teams are getting burned, and which workflows are quietly becoming the new default in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  The headline stat
&lt;/h2&gt;

&lt;p&gt;4% of commits sounds small until you remember that a year ago it was essentially zero. The adoption curve is steeper than anything we have seen since the original GitHub Copilot launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised us
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PR velocity is not the real win.&lt;/strong&gt; Review quality is. Teams that treat Claude Code as a junior dev who needs feedback ship better code, not just faster code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The biggest gains are not from the heaviest users.&lt;/strong&gt; The teams winning are the ones with the tightest guardrails around review, testing, and spec-first prompting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guardrails are the moat, not the model.&lt;/strong&gt; Anyone can point an agent at a repo. Very few teams have figured out the review loop that makes it safe.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it genuinely saves time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Boilerplate migrations (framework upgrades, test scaffolding, API client generation)&lt;/li&gt;
&lt;li&gt;Reading and summarizing unfamiliar codebases before a refactor&lt;/li&gt;
&lt;li&gt;Writing tests for existing code with clear contracts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it creates review debt
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Large cross-cutting refactors without a spec&lt;/li&gt;
&lt;li&gt;Anything involving subtle business logic the agent cannot infer from context&lt;/li&gt;
&lt;li&gt;"Just let it run" workflows with no human checkpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 2026 default
&lt;/h2&gt;

&lt;p&gt;Spec-first prompting is becoming the norm. The teams that win treat the prompt like a design doc: acceptance criteria, constraints, non-goals, and a plan the agent has to confirm before touching code.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://www.horizon-tech.io/en-US/blog/claude-code-reshaping-software-engineering-2026" rel="noopener noreferrer"&gt;Horizon Tech Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>claude</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
