← Back to home

Blog

Thoughts on engineering, leadership, and building products.

Understanding RAG: A Practical Guide for Engineers - Part 2: Vectors, Embeddings, and How RAG Actually Works

Understanding RAG Part 2: How vectors capture meaning, why semantic search beats keywords, and the three stages that make retrieval-augmented generation work.

Understanding RAG: A Practical Guide for Engineers - Part 1: What is RAG and Why Should You Care?

RAG quietly powers most production AI apps. Learn why retrieval-augmented generation beats fine-tuning for customer support, search, and document Q&A.

Enterprise AI Security: Why You Need a Layer Between Your Data and Claude

How Stache's middleware architecture addresses the security gaps exposed by Claude Cowork's prompt injection vulnerabilities.

OAuth 2.1 Dynamic Client Registration for AWS BedrockAgentCore

A CloudFormation template implementing OAuth DCR for BedrockAgentCore Gateway with Cognito.

Running Stache on AWS with Stache Serverless

A production-ready serverless RAG system built on AWS - Lambda, S3 Vectors, DynamoDB, and Bedrock.

Stache AI: Curated Storage for AI with Claude

Introducing Stache - a RAG-based knowledge base that connects directly with Claude via MCP.

Combine Real World Experience With Time In The Classroom

Classes are great for learning theory, but nothing beats real world experience for aspiring tech leaders.

Building Relationships With Remote Developers

Remote work can become lonely and isolating. Regular phone calls that go beyond work make all the difference.

Define Your Deliverables

The most important part of speeding up development is defining the deliverables and sticking to them.

Using JIRA for Bug Tracking and Team Visibility

How JIRA provides visibility into trending problems and helps justify the resources you need.

Communicate the Mission to Keep Customers in Mind

When developers know the mission, they can easily check if their work helps achieve it.