Writing: Engineering
Context Engineering
September 30, 2026
Skills and memory files decide what an agent keeps between sessions, and an eval decides what the next run is allowed to see.
Product Engineering
September 16, 2026
Why product engineering matters more now that implementation is cheap, and how I run the work with agents from the experience back to the system.
AI Coding Factories
September 12, 2026
What an AI coding factory is: agents carrying work through specification, implementation, verification, and release, with architecture, orchestration, and evidence.
AI Agents are Infrastructure
May 20, 2026
Managed, self-hosted, and hybrid AI agents, and why the runtime, tools, and permissions around the model decide product behavior more than benchmarks do.
The Forward Deployed Engineer
April 1, 2026
What forward deployed engineers do, why AI vendors are hiring them, and how the role differs from product engineering and solutions work.
Engineering in the AI Era
February 10, 2026
As coding agents take over more implementation, an engineer's time moves to constraints, review, and deciding what should exist.
Why I Still Use Expo
October 1, 2025
OTA updates, EAS cloud builds, and shared TypeScript from production React Native work.
Web3 Composability
September 8, 2025
The token, launch, liquidity, governance, and DeFi standards a new Web3 project can build on, and the systemic risk that comes with sharing them.
Prompt Injection
June 15, 2025
How direct, indirect, and tool-response prompt injection hijack LLM behavior, and the layered defenses I use in AI applications that call tools.
AI Model Context Protocol (MCP)
June 8, 2025
What the Model Context Protocol standardizes about connecting models to tools and data, and how I structure MCP-style tools, composition, and memory in TypeScript.
RAG with TypeScript
June 2, 2025
How retrieval-augmented generation works, and the TypeScript SDKs and vector stores I would use to build it in a Node.js stack.
Scaling and Securing WebSocket Connections
May 16, 2025
Session affinity, TLS, handshake authentication, and Redis pub/sub for WebSocket backends that have to stay up across multiple nodes.
The Skillset of a Product Engineer
March 25, 2025
What I look for in a product engineer—ownership across product, interface, and systems, not a title swap for frontend or backend.
Engineering Principles
February 25, 2025
Principles I use across web and blockchain work—quality, reliability, and shipping speed in the same conversation, independent of stack.
useMemo and useCallback Are (Mostly) Obsolete
January 17, 2025
Recent React and the React Compiler make useMemo and useCallback unnecessary in most components, and profiling tells you where they still help.
React Fractal Compoundnents
November 25, 2024
How I structure React apps with self-similar folders and compound components so small modules stack into larger features without layout debt.
Modern Next.js Web3 Architecture
October 1, 2024
URL state, collocation, React Query, wagmi, and viem in Next.js Web3 apps.
Touch Grass, Activate Clarity
September 22, 2024
Why stepping away from the screen still matters when you ship software for a living, and how I protect focus without burning out.
Introducing BasilicEVM
August 15, 2024
BasilicEVM is the EVM starter I use for wallets, types, and chain integration, built on Foundry, viem, wagmi, and shared TypeScript.
Architecture Decision Records
July 20, 2024
How Architecture Decision Records keep context, tradeoffs, and consequences on record when teams revisit decisions months later.
Async Patterns in React (PolkadotJS)
September 5, 2023
Keep async core logic in vanilla TypeScript services and consume it from React with TanStack Query or react-use hooks, using PolkadotJS as the example.
Conventions for React Apps
January 29, 2023
File naming, collocation, state, and structure I use in React apps.
TypeScript Generation from GraphQL
January 19, 2020
Two talks on TypeScript and GraphQL, one on generating types from a schema with Codegen at GraphQL Texas and one in Spanish for PanamaJS.
Enhancing Your GitHub Workflow
August 8, 2018
Tips for improving your GitHub workflow in software development.
Best Practices for Designing RESTful APIs
October 3, 2015
When designing an API, there are important decisions that have a great impact on the way other applications will interact with the service...
Automatic Node.js Version Switching
July 18, 2015
When working on multiple Node.js projects it is important to configure your development environment to automatically switch to right node version for a particular project.
On Continuous Delivery
July 10, 2015
Continuous delivery is practice in software development in which development teams work in a way that allows companies to update their systems at any point in time or continuously through automated processes, the system's code base is always deployable and tested.
Unit Testing - Mocks, Stubs and Spies
September 15, 2014
Understanding mocks, stubs, and spies in unit testing
Introduction to Unit Testing
September 1, 2014
Getting started with unit testing in JavaScript
NodeJS HTTPS and SSL Certificate for Development
August 15, 2014
Setting up HTTPS and SSL certificates for Node.js development
Introduction to Gulp.js
April 15, 2014
Getting started with Gulp.js build system
Choosing the Database for your Web App
September 1, 2013
A guide to choosing the right database for your web application
Data Visualization in Costa Rica
August 1, 2013
Data Visualization meetup in Costa Rica
My Favorite JavaScript and Engineering Podcasts
December 22, 2012
Simply the best Javascript podcast out there.