# Writing: Engineering

Canonical: https://gaboesquivel.com/blog/category/engineering

Writing about software architecture, technical decisions, tooling, reliability, and building products.

- [Generative Interfaces](https://gaboesquivel.com/blog/2026-10-generative-interfaces): User intent can drive how software is composed and distributed, from declarative UI specs and MCP Apps in assistants to design systems machines can reason about at runtime.
- [Agentic Domain-Driven Design](https://gaboesquivel.com/blog/2026-10-domain-driven-design): Shared domain language helps teams and coding agents preserve business meaning, define clear boundaries, and avoid implementing the wrong assumptions.
- [Iteration Velocity](https://gaboesquivel.com/blog/2026-10-iteration-velocity): Previews, gradual rollouts, and small migrations shorten the path from an idea to evidence that it improves the product.
- [Context Engineering](https://gaboesquivel.com/blog/2026-09-context-engineering): An agent harness orchestrates memory, tools, skills, and retrieved information so models receive the right context at the right moment.
- [Product Engineering](https://gaboesquivel.com/blog/2026-09-product-engineering): Product engineering connects user needs, design, implementation, and production. Coding agents make end-to-end ownership more valuable.
- [AI Coding Factories](https://gaboesquivel.com/blog/2026-09-ai-code-factories): A reliable AI coding factory coordinates tasks, isolated execution, verification, and production feedback into a repeatable delivery process.
- [AI Agents are Infrastructure](https://gaboesquivel.com/blog/2026-05-ai-agents): Running agents in production means managing tools, state, permissions, and recovery—not just choosing a capable language model.
- [The Forward Deployed Engineer](https://gaboesquivel.com/blog/2026-04-forward-deployed-engineer): Forward deployed engineers work with customers to turn AI into production systems, bridging product engineering, integrations, and adoption.
- [Engineering in the AI Era](https://gaboesquivel.com/blog/2026-02-engineering-ai-era): 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](https://gaboesquivel.com/blog/2025-09-why-expo): OTA updates, EAS cloud builds, and shared TypeScript from production React Native work.
- [Web3 Composability](https://gaboesquivel.com/blog/2025-09-web3-composability): How shared token, liquidity, governance, and DeFi standards accelerate new products while introducing systemic risk.
- [Prompt Injection](https://gaboesquivel.com/blog/2025-06-prompt-injection): 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)](https://gaboesquivel.com/blog/2025-05-model-context-protocol): 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](https://gaboesquivel.com/blog/2025-05-typescript-rag): How retrieval-augmented generation works, and how to implement it with TypeScript SDKs, embeddings, and vector stores.
- [Scaling and Securing WebSockets](https://gaboesquivel.com/blog/2025-05-scaling-securing-websockets): How session affinity, TLS, authentication, and Redis pub/sub keep WebSocket backends reliable across multiple nodes.
- [The Skillset of a Product Engineer](https://gaboesquivel.com/blog/2025-03-the-product-engineer): Why product engineers take ownership of user needs, interfaces, and systems instead of working within one technical layer.
- [Engineering Principles](https://gaboesquivel.com/blog/2025-02-engineering-principles): The principles I use to balance software quality, reliability, and delivery speed across products and technical stacks.
- [When React Compiler Replaces Manual Memoization](https://gaboesquivel.com/blog/2025-01-use-memo-use-callback-obsolete): Why React Compiler reduces the need for useMemo, useCallback, and memo—and when those APIs still matter.
- [Fractal Components in React](https://gaboesquivel.com/blog/2024-11-react-fractal-compoundnents): How I organize React applications into self-similar modules and compound components to keep features manageable as they grow.
- [Modern Next.js Web3 Architecture](https://gaboesquivel.com/blog/2024-10-modern-nextjs-web3-architecture): How I structure Next.js Web3 applications using URL state, colocated features, TanStack Query, wagmi, and viem.
- [Touch Grass, Activate Clarity](https://gaboesquivel.com/blog/2024-09-touch-grass): Why time away from the screen is part of sustainable engineering, and how I make room for clearer thinking and focus.
- [Introducing BasilicEVM](https://gaboesquivel.com/blog/2024-08-basilica-evm): A look at my EVM starter for wallet connections, contract types, and chain interactions using Foundry, viem, and wagmi.
- [Architecture Decision Records](https://gaboesquivel.com/blog/2024-07-adrs-in-software-teams): How I use ADRs to capture technical decisions, tradeoffs, and context so teams can revisit them with confidence.
- [Async Patterns in React](https://gaboesquivel.com/blog/2023-09-async-patterns-in-reactjs): How I keep asynchronous logic in TypeScript services and connect it to React with TanStack Query and reusable hooks.
- [Conventions for React Apps](https://gaboesquivel.com/blog/2023-01-react-app-standards): My conventions for naming, collocation, state, and folder structure in React applications as features become more complex.
- [TypeScript Generation from GraphQL](https://gaboesquivel.com/blog/2020-01-typescript-code-generation-from-graphql): 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](https://gaboesquivel.com/blog/2018-08-enhance-your-github-flow): Tips for improving your GitHub workflow in software development.
- [Best Practices for Designing RESTful APIs](https://gaboesquivel.com/blog/2015-10-best-practices-for-designing-web-apis): 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](https://gaboesquivel.com/blog/2015-07-automatic-node-dot-js-version-switching): 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](https://gaboesquivel.com/blog/2015-07-continuous-delivery): 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](https://gaboesquivel.com/blog/2014-09-unit-testing-mocks-stubs-and-spies): Understanding mocks, stubs, and spies in unit testing
- [Introduction to Unit Testing](https://gaboesquivel.com/blog/2014-09-introduction-to-unit-testing): Getting started with unit testing in JavaScript
- [NodeJS HTTPS and SSL Certificate for Development](https://gaboesquivel.com/blog/2014-08-nodejs-https-and-ssl-certificate-for-development): Setting up HTTPS and SSL certificates for Node.js development
- [Introduction to Gulp.js](https://gaboesquivel.com/blog/2014-04-introduction-to-gulpjs): Getting started with Gulp.js build system
- [Choosing the Database for your Web App](https://gaboesquivel.com/blog/2013-09-choosing-the-database-for-your-web-app): A guide to choosing the right database for your web application
- [Data Visualization in Costa Rica](https://gaboesquivel.com/blog/2013-08-data-visualization-in-costa-rica): Data Visualization meetup in Costa Rica
- [My Favorite JavaScript and Engineering Podcasts](https://gaboesquivel.com/blog/2012-12-javascript-and-engineering-podcasts): Simply the best Javascript podcast out there.