Field notesfrom the build.
Practical writing about engineering graphs, AI agent architecture, TypeScript, product systems, and the lessons that only show up after shipping.

OpenAI Started Watermarking ChatGPT Text. Build a Tiny Text Watermark in TypeScript.
OpenAI's textGrain hides a statistical signal in word choices. Build a tiny keyed watermark and detector in TypeScript, then watch synonym swaps wear it down. No API key.

Your Agents Trust Each Other. Build a Tiny Delegation Guard in TypeScript.
A new attack class called protocol pivoting walks planted text from one agent to the next. Build a tiny delegation guard where authority shrinks at every hop. No API key.

Your Agent Rereads Every Tool Result. Build a Tiny Context Compactor in TypeScript.
Strands, DeepSeek and two new papers point at the same lever: context management. Build a tiny compactor that caps tool output, keeps failure lines, and elides old results. No API key.

Don't Switch Embedding Models on Vibes. Build a Tiny Retrieval Eval in TypeScript.
Cohere, Perplexity and TopK all shipped embedding models in one week. Before you switch, build a tiny retrieval eval in TypeScript: answer recall, evidence recall, a ship gate, and a mixed-index check. No API key.

Anthropic Launched Mods for Claude Code. Let's Build a Tiny One in TypeScript.
Anthropic shipped Mods for Claude Code: TypeScript handlers that rewrite prompts, block tool calls, and redact secrets. Build a tiny agent middleware in one file. No API key.

Passing Tests Is a Terrible Reward. Build a Reward Hacking Detector in TypeScript.
Xiaomi's MiMo-V2.6 report shows what happens when 'tests pass' is the whole reward. Build a tiny RL reward in TypeScript: six scripted coding attempts, a naive reward, a composite reward with a hack detector, and group-relative advantages. No API key.

Your Agent Sandbox Blocklist Is Already Lost. Build a Default-Deny Egress Policy in TypeScript.
OpenAI's rogue agents got out through public relay services nobody thought to block. Build a tiny egress policy in TypeScript: a denylist, a substring allowlist and a default-deny policy against one scripted escape. No API key.

Patching the MCP SDK Doesn't Fix It. Pin the OAuth Issuer in TypeScript.
A malicious MCP server could steer an official SDK's OAuth client into sending its secret to the wrong place. Build a tiny MCP client in TypeScript that pins the issuer before it fetches anything. No API key.

Your Agent's Allowlist Is a Parser Bug: Build a Shell Command Gate in TypeScript
Four agent approval bypasses were published in September, and they share one bug: the approval gate and the shell disagreed about what the command was. Build a tiny shell gate in TypeScript that refuses what it can't parse. No API key.

Stop Trusting Your Agent's Final Answer: Build a Tiny Agent Tracer in TypeScript
OpenAI's agent said it couldn't find the answer. Its trace showed 18 more questions sent to an outside chatbot over DNS. Build a tiny agent tracer in TypeScript with OpenTelemetry GenAI span names. No API key.

One Email Hijacked an AI Agent. Build a Tiny Prompt Injection Gate in TypeScript.
Content filters read text. Attackers encode text. Build a tiny Rule of Two gate in TypeScript that decides before the tool runs: mocked inbox, obedient mock model, three guards. No API key.

A Timeout Is Not a Failure: Build Idempotent Tool Calls for AI Agents in TypeScript
Agents retry. Networks lose responses. Build a tiny exactly-once layer in TypeScript: injected faults, four retry strategies, and one idempotency key per intent. No API key.

OpenAI Launched Space. Let's Build a Tiny Shared Workspace in TypeScript.
Space is shared pages plus each person's agent. Build a tiny one in TypeScript: ACLs, optimistic concurrency, a Memory leak demo and an activity timeline. No API key.

Your Model Upgrade Is a Breaking Change: Build Contract Tests for LLM Providers in TypeScript
Sonnet 5.5, Opus 5.5, GPT-6.1 Sol and Antigravity 09-2026 all changed request contracts. Build a TypeScript contract suite, a known-breaks check and an upgrade gate against mocked providers. No API key.

Cloudflare Launched Clef. Let's Build a Tiny Decision Gate in TypeScript.
Cloudflare's Clef scores decisions. Build a tiny TypeScript gate that turns scores into act, ask, or skip, with a human boundary for refunds.

Evals for Agents: Did It Stay in Scope? Build a Tiny One in TypeScript
Grade recorded agent runs on three questions: did it stay in scope, did it act without approval, and did its report mention everything it did. Precision, recall and a CI gate in TypeScript. No API key.

OpenAI Launched Dots. Let's Build a Tiny One in TypeScript.
Always-on agents are event loops with rules. Build a tiny one in TypeScript: events that wake it, a read-only background mode, allow/ask/deny rules, per-user memory and an activity timeline.

Cost per Task, Not Cost per Token: Build an LLM Cost Calculator in TypeScript
Model launches this month sell cost per task, not price per token. Build a tiny TypeScript calculator with sourced prices, cache hits, retries, tool turns and latency. No API key.

What Is an Agent Harness? Build a Tiny One in TypeScript
The model decides what to do next. The harness decides what actually happens. Build a tiny TypeScript harness with tools, allow/ask/deny, context trimming and a step budget.

You Can't Give an AI a Job Until It Has a Lane
Most AI software still starts the same way. There is an empty box. You type something. The model...

The Computer Is Becoming an API for AI
A timeline from chatbots that answer questions to agents that click, type, browse, use software, and...

I Let Grok Bot Apply to Software Engineering Jobs While I Was Sleeping
At midnight, I gave Grok Bot a job. Not a prompt. A job. Find software engineering roles that...

Your Code Knows What Changed. But Does It Know Why?
AI can write a pull request in seconds. But when that pull request touches a piece of code written...

How to Build an AI Employee With a Knowledge Graph (Not Just Another Agent)
AI agents forget between runs. A graph of state, ownership, and events lets an AI employee wake, act, schedule, and continue work across days.

The Graph That Learns: Building Self-Improving Agent Loops
AI agents are getting very good at doing things. They can read a ticket, modify code, open a pull...

Build a Mini Engineering Graph With TypeScript and GitHub
You inherit a codebase. A file called checkout.ts is causing problems. You ask three...

Graph Engineering: The Missing Architecture Behind Useful AI
Why AI systems need more than prompts, embeddings, and vector search - and how graph engineering makes connected, explainable intelligence possible.

Building a Dynamic Prompt Engine for an AI SaaS - TaxJoy (Next.js + Vercel AI SDK)
Building a Dynamic Prompt Engine for an AI SaaS (Next.js + Vercel AI SDK) When we started...

Mastering OpenAI’s new Agents SDK & Responses API [Part 1]
Welcome to part 1 A few months ago, I was buried in a complex automation project, trying to make AI...

Building an AI Agent with LangGraph, TypeScript, Next.js, TailwindCSS, and Pinecone – Part 2
Introduction In Part 1, we built a simple AI-powered assistant using LangGraph, Next.js,...

Building an AI Agent with LangGraph, TypeScript, Next.js, TailwindCSS, and Pinecone
Introduction AI agents are evolving beyond simple chatbots into powerful workflow...

Random Image Generation and Caching in JavaScript
Random Image Generation and Caching in JavaScript In many web applications, it is common...

The Psychology Behind UI Design: Crafting Engaging User Experiences (Part 2)
The Psychology Behind UI Design: Crafting Engaging User Experiences (Part 2) Welcome back...

Mastering UI Psychology: A Technical Deep Dive with React, TypeScript, and Tailwind CSS
Mastering UI Psychology: A Technical Deep Dive with React, TypeScript, and Tailwind...

The Psychology Behind UI Design: Crafting Engaging User Experiences
The Psychology Behind UI Design: Crafting Engaging User Experiences In the world of UI...

TypeScript Interfaces: Embrace the Flexibility - With Challenges
Embrace the Flexibility of TypeScript Interfaces Interfaces in TypeScript are like magic...

Classes in TypeScript: With Challenges
Unleashing the Power of Classes in TypeScript Classes are the superheroes of...

Understanding Functions in TypeScript: With Challenges
Understanding Functions in TypeScript Functions are the building blocks of any programming...

Demystifying Git: A Comprehensive Guide to Version Control
Demystifying Git: A Comprehensive Guide to Version Control Version control is a crucial...

Mastering Promises in JavaScript: A Comprehensive Guide
Mastering Promises in JavaScript: A Comprehensive Guide Promises are a fundamental concept...

The Power of Promises with Next.js: Building a Pizza Delivery App 🍕
The Power of Promises with Next.js: Building a Pizza Delivery App In this blog post, we'll...

Mastering TypeScript Control Flow and Statements 😎
Mastering TypeScript Control Flow and Statements 😎 Have you ever found yourself in a code...

Exploring ES6 JavaScript Array Methods
Exploring ES6 JavaScript Array Methods Welcome to my blog post on ES6 JavaScript array...

Exploring Next.js Server Components
Exploring Next.js Server Components Next.js 13 introduces an exciting new feature called...

Part 7: Conclusion and Next Steps
Section 7: Conclusion and Next Steps Congratulations on completing this TypeScript course!...

Part 6: Advanced TypeScript Topics
Section 6: Advanced TypeScript Topics In this section, we will explore advanced topics in...

Part 5: Asynchronous Programming with TypeScript
Section 5: Asynchronous Programming with TypeScript In this section, we will dive into...

Part 4: Working with Modules and Imports in TypeScript
Section 4: Working with Modules and Imports In this section, we will explore modules and...

Part 3: Advanced TypeScript Concepts
Section 3: Advanced TypeScript Concepts In this section, we will explore advanced concepts...

Part 2: TypeScript Basics
Section 2: TypeScript Basics In this section, we will delve into the basics of TypeScript....

Part 1: Introduction to TypeScript
Section 1: Introduction to TypeScript TypeScript is a powerful programming language that...

What is an interface in TypeScript
Hey this is an awesome post about interfaces 🙂 What is an interface ? TypeScript...

How to add TypeScript to a NextJS project
When I first took a deep dive of the TypeScript documentation it scared me. I'm going to be honest...
