<?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: Raiyan C</title>
    <description>The latest articles on DEV Community by Raiyan C (@raiyanu).</description>
    <link>https://dev.to/raiyanu</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3708844%2F75cb57c0-a6bc-472a-8869-b5df5a052722.png</url>
      <title>DEV Community: Raiyan C</title>
      <link>https://dev.to/raiyanu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raiyanu"/>
    <language>en</language>
    <item>
      <title>Database Development Without ORM: A Pragmatic Approach to SQL-First Workflows</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Tue, 18 Aug 2026 04:52:35 +0000</pubDate>
      <link>https://dev.to/raiyanu/database-development-without-orm-a-pragmatic-approach-to-sql-first-workflows-578j</link>
      <guid>https://dev.to/raiyanu/database-development-without-orm-a-pragmatic-approach-to-sql-first-workflows-578j</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with ORM Abstraction
&lt;/h2&gt;

&lt;p&gt;Many developers express frustration with ORM tooling, particularly around SQL migrations. The desire to work directly with SQL is common, yet existing solutions often fall short when handling testing, seeding, staging environments, and team onboarding.&lt;/p&gt;

&lt;h2&gt;
  
  
  A SQL-First Alternative
&lt;/h2&gt;

&lt;p&gt;A new approach addresses these pain points without introducing additional abstractions. The tooling is built on Kysely, allowing developers to maintain typed queries while gaining support for stored procedures and table-valued parameters. The JavaScript/TypeScript layer remains responsible for IO coordination and business logic, with the database layer handling schema management.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No domain-specific language (DSL)&lt;/li&gt;
&lt;li&gt;No code generation&lt;/li&gt;
&lt;li&gt;No subscription requirements&lt;/li&gt;
&lt;li&gt;Native SQL validation and debugging support&lt;/li&gt;
&lt;li&gt;Integration with visual database clients&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Supporting AI Agents
&lt;/h2&gt;

&lt;p&gt;The platform includes safeguards for AI agent interactions, with built-in skills, MCP support, and per-agent role configurations. This prevents automated processes from making destructive changes to production environments while enabling efficient development workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Modeling and Schema Design
&lt;/h2&gt;

&lt;p&gt;A separate tool, Ignatius, handles data modeling and planning. It supports multiple schema description formats, including IDEF1X with modern symbols, and is designed for iterative development. The markdown-based workflow allows developers to maintain context details for themselves and their LLM assistants.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Benefits
&lt;/h2&gt;

&lt;p&gt;This approach eliminates the translation layer between SQL and JavaScript, allowing developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy and debug SQL directly in visual clients&lt;/li&gt;
&lt;li&gt;Maintain full language server validation for SQL&lt;/li&gt;
&lt;li&gt;Use SQL migration files without additional wrappers&lt;/li&gt;
&lt;li&gt;Avoid the cognitive overhead of ORM method translation&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The solution provides a middle ground between raw SQL management and full ORM tooling, serving developers who prefer direct database interaction while still offering TypeScript integration and modern development workflow support.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>kysely</category>
      <category>database</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Why HTTP 429 Should Not Count Against a Job's Retry Budget</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Tue, 18 Aug 2026 04:34:12 +0000</pubDate>
      <link>https://dev.to/raiyanu/why-http-429-should-not-count-against-a-jobs-retry-budget-485b</link>
      <guid>https://dev.to/raiyanu/why-http-429-should-not-count-against-a-jobs-retry-budget-485b</guid>
      <description>&lt;p&gt;Most retry implementations—including BullMQ, custom wrappers, and managed queues—treat every non-2xx HTTP response as an identical failure. Each attempt increments the retry counter, applies backoff, and after N attempts moves the job to a dead-letter queue (DLQ).&lt;/p&gt;

&lt;p&gt;However, a 429 status code indicates rate limiting, not a failure. The downstream service explicitly tells the client when to retry, often via a &lt;code&gt;Retry-After&lt;/code&gt; header. Counting a 429 as a failed attempt means sustained rate limiting can move valid jobs to the DLQ, while the actual error budget—intended for 500s, timeouts, and connection resets—remains unused.&lt;/p&gt;

&lt;p&gt;An alternative approach treats 429 (and similarly 503/529) as deferrals rather than failures: honor &lt;code&gt;Retry-After&lt;/code&gt;, requeue the job, and do not decrement the retry count. This preserves the retry budget for genuine errors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ceilings for Deferred Jobs
&lt;/h3&gt;

&lt;p&gt;A deferral strategy requires safeguards to prevent indefinite requeuing. Two ceilings are commonly used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wall-clock deadline&lt;/strong&gt;: A job expires after a fixed time (e.g., 24 hours) regardless of deferral count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximum defer count&lt;/strong&gt;: A separate limit on how many times a job can be deferred.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a job exceeds the defer ceiling, it moves to the DLQ with a distinct reason—separate from "out of retries." This distinction matters because exceeding retries suggests the downstream is broken, while exceeding deferrals suggests the service has been unusable long enough to be treated as broken.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring and Visibility
&lt;/h3&gt;

&lt;p&gt;Deferred jobs are invisible in standard failure metrics. They do not trigger alerts or appear as failures, so a queue can remain undrained while appearing healthy. This requires dedicated state tracking and alerts for deferred jobs, rather than folding them into "pending" or "processing" counts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Distinguishing 503 from 429
&lt;/h3&gt;

&lt;p&gt;503 Service Unavailable is more ambiguous than 429. It may indicate temporary overload, maintenance, or a gateway issue. Some implementations lump 503 with 429 as deferrals, but the ambiguity means additional context (e.g., presence of &lt;code&gt;Retry-After&lt;/code&gt;, service health checks) may be needed to decide whether to defer or count it as a failure.&lt;/p&gt;

</description>
      <category>distributedsystems</category>
      <category>retrylogic</category>
      <category>httpstatuscodes</category>
      <category>queuemanagement</category>
    </item>
    <item>
      <title>I Built Genesis: The First Brain for AI Agents (Agent-skills)</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Mon, 10 Aug 2026 13:35:36 +0000</pubDate>
      <link>https://dev.to/raiyanu/i-built-genesis-the-first-brain-for-ai-agents-agent-skills-41f4</link>
      <guid>https://dev.to/raiyanu/i-built-genesis-the-first-brain-for-ai-agents-agent-skills-41f4</guid>
      <description>&lt;p&gt;AI coding agents are getting better at writing code.&lt;/p&gt;

&lt;p&gt;But there is still a problem I keep seeing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every new agent session starts by rediscovering the project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It has to figure out the architecture.&lt;/p&gt;

&lt;p&gt;It has to discover conventions.&lt;/p&gt;

&lt;p&gt;It has to understand previous decisions.&lt;/p&gt;

&lt;p&gt;It has to learn how the team works.&lt;/p&gt;

&lt;p&gt;And after the session ends, a lot of that understanding disappears.&lt;/p&gt;

&lt;p&gt;So I built something to address that problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Genesis.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/raiyanu/agent-genesis" rel="noopener noreferrer"&gt;GitHub — raiyanu/agent-genesis&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.skills.sh/raiyanu/agent-genesis/agent-genesis" rel="noopener noreferrer"&gt;Skill.sh — raiyanu/agent-genesis&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Genesis?
&lt;/h2&gt;

&lt;p&gt;Genesis is a &lt;strong&gt;project-local cognitive layer for AI agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I think of it as the &lt;strong&gt;first brain of an agent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before an agent starts working on a project, Genesis gives it a structured way to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the project&lt;/li&gt;
&lt;li&gt;Learn the existing architecture&lt;/li&gt;
&lt;li&gt;Follow established conventions&lt;/li&gt;
&lt;li&gt;Reuse previous knowledge&lt;/li&gt;
&lt;li&gt;Learn from new discoveries&lt;/li&gt;
&lt;li&gt;Preserve useful knowledge for future sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The core idea is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Understand before acting. Learn while working. Remember for the next agent.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The Genesis Flow
&lt;/h2&gt;

&lt;p&gt;The workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        Genesis
           ↓
      Understand
           ↓
         Plan
           ↓
        Execute
           ↓
          Learn
           ↓
        Remember
           ↺
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is the last step.&lt;/p&gt;

&lt;p&gt;The agent doesn't just finish a task.&lt;/p&gt;

&lt;p&gt;It can leave behind &lt;strong&gt;knowledge that makes the next session better&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why project-local knowledge?
&lt;/h2&gt;

&lt;p&gt;I didn't want Genesis to depend on a particular AI provider, IDE, or agent runtime.&lt;/p&gt;

&lt;p&gt;The knowledge belongs to the &lt;strong&gt;project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That means it can live alongside the codebase and be version controlled with Git.&lt;/p&gt;

&lt;p&gt;A simplified structure looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.agents/
├── SKILL.md
└── agent_md/
    ├── project-learn.md
    ├── user-learn.md
    ├── domains/
    ├── patterns/
    ├── decisions/
    └── debugging/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes project knowledge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human-readable&lt;/li&gt;
&lt;li&gt;Version-controlled&lt;/li&gt;
&lt;li&gt;Shareable&lt;/li&gt;
&lt;li&gt;Agent-agnostic&lt;/li&gt;
&lt;li&gt;Persistent across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem I'm Trying to Solve
&lt;/h2&gt;

&lt;p&gt;Imagine three developers working on the same project.&lt;/p&gt;

&lt;p&gt;Developer A teaches an AI agent about an important architectural decision.&lt;/p&gt;

&lt;p&gt;Developer B starts a new session tomorrow.&lt;/p&gt;

&lt;p&gt;Without persistent knowledge, the agent may have to rediscover that decision.&lt;/p&gt;

&lt;p&gt;With Genesis, the project can retain it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Developer A
     ↓
   Agent
     ↓
  Discovers
  Knowledge
     ↓
   Genesis
     ↓
Project Memory
     ↓
Developer B
     ↓
   Agent
     ↓
Starts with
that knowledge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project gradually becomes better at communicating with its agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Genesis Is Not Just Memory
&lt;/h2&gt;

&lt;p&gt;This is an important distinction.&lt;/p&gt;

&lt;p&gt;I don't see Genesis as simply a memory folder.&lt;/p&gt;

&lt;p&gt;Memory is only one part of it.&lt;/p&gt;

&lt;p&gt;Genesis is about the &lt;strong&gt;agent's relationship with the project&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before the task&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understand what already exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;During the task&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow the project's architecture and conventions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After the task&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Identify what was learned and preserve knowledge that can help future work.&lt;/p&gt;

&lt;p&gt;That creates a continuous learning loop.&lt;/p&gt;

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

&lt;p&gt;I intentionally kept the foundation simple.&lt;/p&gt;

&lt;p&gt;No database.&lt;/p&gt;

&lt;p&gt;No vector store.&lt;/p&gt;

&lt;p&gt;No proprietary format.&lt;/p&gt;

&lt;p&gt;Just files that humans and AI agents can both understand.&lt;/p&gt;

&lt;p&gt;That gives the knowledge the same benefits as source code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Git
 ↓
Versioning
 ↓
Review
 ↓
History
 ↓
Collaboration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Project knowledge becomes part of the project itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Idea
&lt;/h2&gt;

&lt;p&gt;I think we're moving toward a world where projects won't just contain source code.&lt;/p&gt;

&lt;p&gt;They will also contain &lt;strong&gt;context for the agents working on that source code&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Today we have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source Code
Documentation
Tests
Configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I think we'll increasingly have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source Code
Documentation
Tests
Configuration
Agent Knowledge
Agent Instructions
Agent Decisions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal isn't to make agents magically smarter.&lt;/p&gt;

&lt;p&gt;It's to make sure they &lt;strong&gt;don't have to forget everything every time they start&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed for Me
&lt;/h2&gt;

&lt;p&gt;After using Genesis in my own agent workflow, I noticed a significant reduction in the time spent on project discovery and repeated context-building.&lt;/p&gt;

&lt;p&gt;For my workflow, it was &lt;strong&gt;roughly 80% faster&lt;/strong&gt; to get an agent into a productive state.&lt;/p&gt;

&lt;p&gt;The important part isn't that Genesis makes the AI model itself faster.&lt;/p&gt;

&lt;p&gt;It reduces the repeated work around the model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Without Genesis
Agent → Explore → Rediscover(grepping 10+ function and reading 1200+ lines of code) → Understand → Start Working

With Genesis
Agent → Load Context → Understand → Start Working
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That difference becomes especially noticeable when working across multiple sessions or switching between CLI and IDE agents.&lt;/p&gt;

&lt;p&gt;The agent doesn't have to start from zero every time.&lt;/p&gt;

&lt;p&gt;It starts with what the project has already learned.&lt;/p&gt;

&lt;p&gt;For every Module, First prompt was slower but second prompt doesnt matter if it's different session or account or agent or system it become faster than before. for my ecommerce project it improved agent time in searching for code from 2-3 minute to 20 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Genesis
&lt;/h2&gt;

&lt;p&gt;The name comes from the idea of a beginning.&lt;/p&gt;

&lt;p&gt;Genesis is the point where the agent starts.&lt;/p&gt;

&lt;p&gt;Not with assumptions.&lt;/p&gt;

&lt;p&gt;Not with a blank context.&lt;/p&gt;

&lt;p&gt;But with the knowledge the project has already accumulated.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Every agent session should start smarter than the previous one.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Genesis is my first step toward that idea.&lt;/p&gt;

&lt;p&gt;The project is open source, and I'm interested in seeing how this concept evolves with the rapidly changing AI-agent ecosystem.&lt;/p&gt;

&lt;p&gt;If you're building CLI agents, IDE agents, coding agents, or autonomous development workflows, I'd love to hear how you're solving the &lt;strong&gt;persistent context problem&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/raiyanu/agent-genesis" rel="noopener noreferrer"&gt;Check out Genesis on GitHub → raiyanu/agent-genesis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.skills.sh/raiyanu/agent-genesis/agent-genesis" rel="noopener noreferrer"&gt;Check out on Skill.sh → raiyanu/agent-genesis&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>architecture</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>Native HTTP Engine for Node: Performance Benchmarks Against uWS, Bun, Fastify, and Hono</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:05:20 +0000</pubDate>
      <link>https://dev.to/raiyanu/native-http-engine-for-node-performance-benchmarks-against-uws-bun-fastify-and-hono-ne8</link>
      <guid>https://dev.to/raiyanu/native-http-engine-for-node-performance-benchmarks-against-uws-bun-fastify-and-hono-ne8</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;A native HTTP engine for Node.js has been developed with the goal of providing a faster, built-in alternative to the standard &lt;code&gt;node:http&lt;/code&gt; module. This engine is designed to address performance bottlenecks and reduce the overhead of third-party native addons.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Benchmarks
&lt;/h2&gt;

&lt;p&gt;Benchmarks were conducted on a Node 24.11 environment running on an M2 Ultra machine. The testing tool was &lt;code&gt;wrk&lt;/code&gt; with 100 connections over a 40-second duration, recording the best result of three runs. All packages were pulled from npm rather than built locally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requests per Second
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Server&lt;/th&gt;
&lt;th&gt;Non-pipelined&lt;/th&gt;
&lt;th&gt;Pipelined ×10&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@morojs/engine&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;105,974&lt;/td&gt;
&lt;td&gt;663,735&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uWebSockets.js&lt;/td&gt;
&lt;td&gt;103,744&lt;/td&gt;
&lt;td&gt;647,530&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;raw &lt;code&gt;Bun.serve&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;107,119&lt;/td&gt;
&lt;td&gt;21,686&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;raw &lt;code&gt;node:http&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;69,045&lt;/td&gt;
&lt;td&gt;109,538&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hono&lt;/td&gt;
&lt;td&gt;56,926&lt;/td&gt;
&lt;td&gt;100,278&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Observations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Non-pipelined Performance:&lt;/strong&gt; The non-pipelined column appears to be limited by the test machine's maximum capacity, with native transports converging around 105k requests per second. &lt;code&gt;Bun.serve&lt;/code&gt; marginally leads in this metric. Adding a framework like Elysia on top of &lt;code&gt;Bun.serve&lt;/code&gt; reduces its performance to 96.7k requests per second.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pipelined Performance:&lt;/strong&gt; The new engine shows a significant advantage in pipelined requests, achieving about a 10% improvement over uWebSockets.js once a framework is integrated. This is attributed to response corking and batching pipeline requests into a single write operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A full performance matrix and testing harness are available in the &lt;a href="https://github.com/Moro-JS/benchmark/blob/main/VERIFIED_RESULTS.md" rel="noopener noreferrer"&gt;benchmark repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;

&lt;p&gt;The engine is built with a C++ core using raw V8 bindings instead of N-API. The primary design principle is to minimize boundary crossings between C++ and JavaScript.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;General-purpose bindings&lt;/strong&gt; typically perform 10-20 JavaScript crossings per request.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;This engine&lt;/strong&gt; reduces crossings to 2-4 per request by batching request snapshots and response writes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Corking and Optimization
&lt;/h3&gt;

&lt;p&gt;Corking is central to the performance gains, particularly for pipelined requests. Version 1.1.0 introduced batching of an entire pipeline into a single write, along with a zero-allocation hot path, resulting in a 3.7x improvement in pipelined performance over version 1.0.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trade-offs and Build Strategy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;N-API vs. Raw V8:&lt;/strong&gt; While N-API offers a stable ABI and easier maintenance, it did not achieve the desired performance levels. Raw V8 bindings were chosen for performance, at the cost of ABI-locking.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;ABI Compatibility:&lt;/strong&gt; To manage the ABI matrix, the project builds and ships precompiled binaries from tagged CI builds with npm provenance. This ensures day-one compatibility with new Node.js releases, avoiding delays often associated with third-party native addons.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fallback Mechanism:&lt;/strong&gt; In environments where a prebuilt binary is not available, the engine gracefully falls back to &lt;code&gt;node:http&lt;/code&gt; and logs the reason via &lt;code&gt;app.engine.fallbackReason&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;The engine has zero external dependencies. It handles query, cookie, multipart, and route-pattern parsing directly within the framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Fuzzing:&lt;/strong&gt; These parsers are property-fuzzed with a fixed seed on every push and nightly with a rotating seed at 500,000 iterations per property.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;C++ Parser:&lt;/strong&gt; The underlying C++ HTTP parser has its own dedicated fuzzing harness within the engine repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Availability
&lt;/h2&gt;

&lt;p&gt;This engine is the default server for a framework maintained by the author. The source code and project repositories are publicly available.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Engine Repository:&lt;/strong&gt; &lt;a href="https://github.com/Moro-JS/engine" rel="noopener noreferrer"&gt;https://github.com/Moro-JS/engine&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Framework Repository:&lt;/strong&gt; &lt;a href="https://github.com/Moro-JS/moro" rel="noopener noreferrer"&gt;https://github.com/Moro-JS/moro&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Project Site:&lt;/strong&gt; &lt;a href="https://morojs.com" rel="noopener noreferrer"&gt;https://morojs.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>node</category>
      <category>performance</category>
      <category>http</category>
      <category>benchmarking</category>
    </item>
    <item>
      <title>Building a TypeScript SDK for Secure Direct Uploads to AWS S3 and ImageKit</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Mon, 03 Aug 2026 08:30:30 +0000</pubDate>
      <link>https://dev.to/raiyanu/building-a-typescript-sdk-for-secure-direct-uploads-to-aws-s3-and-imagekit-2hbk</link>
      <guid>https://dev.to/raiyanu/building-a-typescript-sdk-for-secure-direct-uploads-to-aws-s3-and-imagekit-2hbk</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Handling file uploads in web applications often involves a trade-off between security, performance, and developer experience. A new open-source TypeScript SDK, &lt;strong&gt;Upload SDK&lt;/strong&gt;, addresses these concerns by enabling secure direct uploads from the browser to cloud storage providers such as AWS S3 and ImageKit.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The SDK shifts the responsibility of file transfer away from the application server. The workflow is as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; The Node.js server validates the upload request.&lt;/li&gt;
&lt;li&gt; The server generates a short-lived, signed upload target.&lt;/li&gt;
&lt;li&gt; The browser uploads the file directly to the storage provider using the signed details.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This approach ensures that the application server never needs to stream or proxy the actual file data, reducing bandwidth usage and server load.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration and Usage
&lt;/h2&gt;

&lt;p&gt;Developers define named upload types (e.g., &lt;code&gt;avatar&lt;/code&gt;, &lt;code&gt;invoice&lt;/code&gt;) to manage different file categories. Each type includes configuration rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Allowed MIME types and file extensions&lt;/li&gt;
&lt;li&gt;  Maximum file size&lt;/li&gt;
&lt;li&gt;  Expiry time for the upload request&lt;/li&gt;
&lt;li&gt;  Storage destination and key prefix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To initiate an upload, the browser sends the asset name and file metadata to the server. The server then calls &lt;code&gt;prepareUpload()&lt;/code&gt;, which validates the request, generates a collision-resistant storage key, and returns signed multipart POST details to the client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiple Storage Profiles
&lt;/h2&gt;

&lt;p&gt;The SDK supports multiple storage profiles within the same application. For instance, developers can configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  One S3 bucket for public files&lt;/li&gt;
&lt;li&gt;  Another S3 bucket for private documents&lt;/li&gt;
&lt;li&gt;  ImageKit for image-specific storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This configuration maintains a consistent upload flow across different providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security with Signed Policies
&lt;/h2&gt;

&lt;p&gt;For Amazon S3, the SDK includes security constraints directly in the signed POST policy. This policy can enforce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  File size limits&lt;/li&gt;
&lt;li&gt;  Content type validation&lt;/li&gt;
&lt;li&gt;  Specific storage keys&lt;/li&gt;
&lt;li&gt;  Expiration times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These restrictions are enforced by S3 during the upload process, adding an additional layer of security.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;The project is open for feedback on its current API and for suggestions regarding which storage providers to support next.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>awss3</category>
      <category>fileupload</category>
      <category>imagekit</category>
    </item>
    <item>
      <title>Xberg v1: A High-Performance Content Intelligence Framework</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Mon, 03 Aug 2026 07:53:35 +0000</pubDate>
      <link>https://dev.to/raiyanu/xberg-v1-a-high-performance-content-intelligence-framework-4pkf</link>
      <guid>https://dev.to/raiyanu/xberg-v1-a-high-performance-content-intelligence-framework-4pkf</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Xberg v1 has been released as the successor to Kreuzberg, representing a significant evolution in content intelligence processing. The framework handles a wide range of input types including documents (101 formats), code and data (367 types), audio/video transcription, and URLs with static or JavaScript-rendered content.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance and Architecture
&lt;/h2&gt;

&lt;p&gt;Xberg is engineered as a high-performance engine with substantial improvements over its predecessor. For PDF and image processing, it handles native PDFs with high performance and accuracy, and includes multiple OCR engines that match the quality of leading Python libraries such as docling, PaddleOCR, and RapidOCR, while offering better performance and stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Technical Changes
&lt;/h2&gt;

&lt;p&gt;The transition from Kreuzberg v4 to Xberg v1 introduces several major architectural changes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pure-Rust PDF backend&lt;/strong&gt; (&lt;code&gt;pdf_oxide&lt;/code&gt;) replaces pdfium, eliminating native pdfium dependencies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layout-aware pipeline&lt;/strong&gt; with ONNX layout detection using PP-DocLayoutV3/RT-DETR and Docling-style predecessor-graph reordering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-page scanned-page detection&lt;/strong&gt; with selective OCR, plus AcroForm/XFA form field support and outline-based headings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized OCR and PDF extraction&lt;/strong&gt; with improved memory discipline, pooled model sessions, and streamed conversions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native PaddleOCR backend&lt;/strong&gt; supporting PP-OCRv6 with medium/small/tiny tiers alongside Tesseract&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Inference and Model Support
&lt;/h2&gt;

&lt;p&gt;The framework includes multiple inference paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure-Rust Candle OCR/VLM stack supporting TrOCR, GLM-OCR, GOT-OCR, DeepSeek-OCR, and PaddleOCR-VL without ONNX Runtime or native Tesseract dependencies&lt;/li&gt;
&lt;li&gt;Secondary inference path via tract enabling ONNX-free execution for in-browser (WASM) and mobile inference&lt;/li&gt;
&lt;li&gt;Named-entity recognition natively in Rust (GLiNER2) extensible to all bindings, including in-browser WASM models with no server round-trip&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Structured Extraction and Retrieval
&lt;/h2&gt;

&lt;p&gt;Xberg provides comprehensive content processing capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structured LLM extraction&lt;/strong&gt; (&lt;code&gt;extract_structured&lt;/code&gt;/&lt;code&gt;split_and_extract&lt;/code&gt;) with rasterization, chunking, citations, caching, and configurable policies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio and video transcription&lt;/strong&gt; via Whisper ONNX engine supporting .mp3, .wav, .m4a, .mp4, and .webm formats&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval building blocks&lt;/strong&gt; including sparse embeddings (SPLADE), ColBERT late-interaction retrieval, cross-encoder reranking, and dense embeddings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text intelligence&lt;/strong&gt; features including reversible redaction, summarization, translation, VLM image captioning, QR-code detection, document diffing, and page/chunk classification&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Web and Format Support
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;URL and web ingestion&lt;/strong&gt; with sitemap discovery (&lt;code&gt;map_url&lt;/code&gt;) and batched multi-URL crawling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New document formats&lt;/strong&gt; including WordPerfect (.wpd/.wp/.wp5), HEIC/HEIF/AVIF, OpenDocument Presentation (.odp), Quarto/R Markdown, and configurable Jupyter cell rendering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expanded code intelligence&lt;/strong&gt; with tree-sitter coverage growing from 248 to 367+ languages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cross-Platform and Bindings
&lt;/h2&gt;

&lt;p&gt;Four new language bindings (Dart/Flutter, Swift, Kotlin/Android, and Zig) bring the total to 15 language bindings over one engine. The framework now includes full mobile support for Flutter, Android, and iOS, with cross-compilation capabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark Results
&lt;/h2&gt;

&lt;p&gt;Performance benchmarks for PDF and image processing demonstrate Xberg's capabilities:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Composite Quality (Markdown Pipeline, higher is better):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xberg (layout): 0.958 (Native PDF), 0.836 (Scanned PDF)&lt;/li&gt;
&lt;li&gt;docling: 0.779 (Native PDF), 0.762 (Scanned PDF)&lt;/li&gt;
&lt;li&gt;mineru: 0.408 (Native PDF), 0.792 (Scanned PDF)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Structure and Layout Fidelity (SF1: tables and reading order, higher is better):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xberg: 0.949 (Native PDF), 0.531 (Scanned PDF)&lt;/li&gt;
&lt;li&gt;docling: 0.612 (Native PDF), 0.366 (Scanned PDF)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For native PDFs, Xberg leads on quality (0.958 vs 0.837 for the next-best framework) and table/reading-order fidelity (SF1 0.949 vs 0.612 for docling). On scanned PDFs, it ranks first on both quality and raw text fidelity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Migration and Support
&lt;/h2&gt;

&lt;p&gt;A migration guide is available for transitioning from Kreuzberg to Xberg. Kreuzberg remains in LTS mode until the end of the year with continued bug fixes and security updates. The full changelog documents all changes, with over 150 bugs fixed during the 1.0 cycle plus security hardening including bounded RTF/PDF allocations, redaction leak fixes, and Excel DDE warnings.&lt;/p&gt;

</description>
      <category>contentintelligence</category>
      <category>rustprogramming</category>
      <category>ocr</category>
      <category>pdfprocessing</category>
    </item>
    <item>
      <title>Testing title</title>
      <dc:creator>Raiyan C</dc:creator>
      <pubDate>Fri, 31 Jul 2026 13:40:57 +0000</pubDate>
      <link>https://dev.to/raiyanu/testing-title-3jed</link>
      <guid>https://dev.to/raiyanu/testing-title-3jed</guid>
      <description>&lt;p&gt;Testing body&lt;/p&gt;

</description>
      <category>testingtags</category>
    </item>
  </channel>
</rss>
