Archives
A chronological index of notes, explainers, and practical guides.
2026
1 posts2025
3 postsSecuring the AI Agent Revolution: A Guide to Auth in a Multi-Party MCP World
The Model Context Protocol (MCP) promises a future of interconnected AI agents. But how do we secure it? This guide covers the security patterns, from API keys to JWTs, for authenticating and authorizing communication in a multi-party MCP ecosystem.
Deconstructing the Model Context Protocol - The Lingua Franca for AI Agents
A close look at the Model Context Protocol (MCP). Is it a true network protocol? How did it become a standard? This article walks through the anatomy of MCP, its core properties, and what it changes for developers building AI applications.
The Protocol for AI Agents - Building Scalable, Secure Full-Stack Applications with MCP
An introduction to the Model Context Protocol (MCP) and how to build secure, interoperable AI-powered applications with it. Covers the architecture, security practices, and a practical example using Next.js to create an AI project management assistant.
2024
1 posts2023
18 postsQwik - The Next Evolution in Frontend Frameworks
An introduction to Qwik and its resumability model. What it is, how it cuts time to interactive, and why it matters for large web applications.
Exploring the Power of Generator Functions in JavaScript
An introduction to generator functions in JavaScript. How the function* syntax and yield keyword work, and how generators can be used for asynchronous operations.
Doing Internalization in Angular
A step-by-step guide to internationalization (i18n) in Angular - installing @angular/localize, marking content for translation, extracting messages, and building per-locale bundles.
Essential JavaScript Design Patterns - Building Blocks of Web Applications
Five JavaScript design patterns worth knowing - Module, Revealing Module, Singleton, Observer, and Factory - with working code examples for each.
Understanding the Difference - Libraries vs SDKs in Software Development
Libraries and SDKs are often used interchangeably, but they solve different problems. This post explains what each one is and when you'd reach for one over the other.
Understanding the Language Processors - Transpiler, Parser, Compiler, and Bundler in Software Development
Parsers, transpilers, compilers, and bundlers each play a different role in turning the code you write into something a machine can run. This post explains what each one does.
The Bangladesh Bank Heist - A Lesson in Cybersecurity
In February 2016, criminals attempted to steal nearly $1 billion from the central bank of Bangladesh and made off with $81 million. Here's how the heist worked and what it teaches about cybersecurity.
The Enigmatic World of REvil - Unmasking the Hacker Group
A short profile of REvil, the ransomware group behind the Kaseya attack. How their ransomware-as-a-service operation works and why they keep resurfacing.
Unveiling Global State Management in Angular using Signals with LocalStorage
How to build global state management in Angular using Signals with LocalStorage persistence, organized in a store directory with state, actions, and getters.
The SolarWinds Hack - Unraveling the Truth and Preventing Future Attacks
How the SolarWinds supply chain attack of December 2020 worked, why it went undetected for months, and five lessons organizations can apply to prevent similar breaches.
Writing Unit Tests with Jest
A practical introduction to writing unit tests with Jest, covering setup, matchers, async tests, test organization, setup and teardown hooks, and mocking.