Todos los artículos
Las layers de una app React
Dividimos una pantalla de pago React en view, model y data siguiendo a Juntao Qiu. El repositorio de ejemplo revela un useMemo inútil y un fetch en bucle.
Modelos de decisión, Jev y Kev
Jev devuelve probabilidades en vez de texto. Su confidence no se aprende: se calcula. Lo compruebo con 5,743 casos públicos y con Kev sobre mi compuerta.
overlay-kit
Cambiar un flag global isOpen por un await: lo que gané, lo que perdí y cómo funcionan por dentro los eventos, el reducer y openAsync.
Calibración y exceso de confianza en los LLM
Calibrar es saber cuánto vas a acertar. Cómo lo mide el ECE, el salto del ECE de GPT-4 de 0.007 a 0.074 tras el post-training y qué se sabe de la causa.
Lenguaje compartido
Qué hacer cuando product manager y developer usan la misma palabra con distinto sentido: ubiquitous language de Evans y grounding de Clark.
Ingeniería de Harness (Sistemas)
Del prompt al context engineering, ¿qué viene después? El blog de ingeniería de Anthropic apunta a harness, eval y containment (aislamiento).
Kalyx
Por qué creé Kalyx, DatePicker headless para React, y en qué difiere de Ark UI, React Aria y react-day-picker: valores ISO UTC, DST con Intl y tests IANA.
Cómo ahorrar tokens de IA
Mide costos de tokens con un React POC y redúcelos con prompt caching, subagent, MCP ligero, context engineering y Cursor Composer.
Cómo funcionan los tokens
Cómo BPE crea tokens, los embeddings alimentan los LLM, prefill y decode determinan el coste, y KV cache y prompt caching reducen entradas repetidas.
Archivos de contexto
Cómo cargan los agentes CLAUDE.md, AGENTS.md, SKILL.md y Cursor rules, por qué se pierden instrucciones y qué escribir según un estudio de ETH Zurich.
Cuatro niveles de inteligencia de código
Cuatro niveles de herramientas que abaratan la búsqueda de código de un agente de IA: Repomix, mapas tree-sitter, el grafo de CodeGraph y Serena con LSP.
MCP y function calling
Cómo difiere MCP de function calling: seis primitivas, stdio y Streamable HTTP, el bucle de tools/list a tool_use y riesgos como Tool Poisoning.
Gestión del estado
Gestión del estado en frontend en siete categorías (local, global, servidor, formulario, URL, externo y guards) y cuatro preguntas antes de crear estado.
Modelo de dominio
Dónde debe vivir la lógica de dominio en el frontend, con un ejemplo de impuestos: funciones puras, modelo anémico, mappers, ViewModel y cuándo parar.
Términos de dominio
Diferencias entre dominio, modelo de dominio, objeto de dominio y modelo de objetos de dominio según Eric Evans y Martin Fowler.
Reflexiones sobre la refactorización del segundo simulacro de Toss Frontend Fundamentals
Refactorización de la app de reserva de salas del segundo simulacro de Toss Frontend Fundamentals: separación de componentes y lógica de dominio.
Ingeniero frontend de IA
Cómo crecer como ingeniero frontend cuando la IA escribe el código: verificación, especificación y criterio, a partir de Karpathy, Vercel v0 y METR.
Abstracción
Qué es la abstracción en frontend y en qué se diferencian una buena y una mala: niveles de abstracción, nombres que revelan intención y composición.
queryKey
Cómo evolucionó la gestión de queryKey en TanStack Query: de arreglos en línea a fábricas de claves y queryOptions de v5, con DataTag e invalidación.
Cómo se comparan las queryKey
Cómo TanStack Query decide que dos queryKey son iguales: la serialización con hashKey (orden de claves, undefined, Map) y la comparación de los filtros.
Dónde colocar ErrorBoundary
Cuántos ErrorBoundary usar y dónde, comprobado en el código: qué recibe cada ruta, pantalla y región, un fallback compartido y las condiciones de retry.
Por qué el botón de reintentar no hace nada
Tres casos en que reintentar en un fallback de react-error-boundary devuelve el mismo fallback, comprobados en el código, y cómo resolver cada uno.
Propagación de errores
Lanza el mismo error desde siete sitios y solo cuatro llegan al ErrorBoundary. Este artículo sigue hacia dónde propaga cada tipo.
React Fiber al completo
Análisis de React Fiber desde el código fuente: Stack Reconciler, nodos Fiber, doble búfer, Lanes, Work Loop, render y commit, y Concurrent Features.
Por qué React usa MessageChannel
Por qué el Scheduler de React usa MessageChannel y no requestIdleCallback, rAF ni setTimeout: los PR de React y el retraso de 4 ms medido en Chrome.
¿Puede Biome reemplazar a ESLint y Prettier?
Biome frente a ESLint y Prettier: rendimiento de linting y formateo, experiencia de adopción y guía de migración a una toolchain basada en Rust.
Zustand, ¿qué eres y por qué eres ProviderLess?
Analizamos el código fuente de Zustand para ver cómo gestiona el estado sin Provider y en qué se diferencia de la Context API de React.
Cómo funcionan los algoritmos de compresión
Comparamos estructura, velocidad y tasa de ZIP, GZIP, ZSTD, BZIP2, XZ y Brotli, por qué tar.gz comprime más que zip y cuándo elegir tar.zst para un build.
La diferencia entre LZ77 y LZ78
Cómo difieren LZ77 y LZ78 al manejar su diccionario y al olvidar lo antiguo, y cómo DEFLATE, ZIP, GZIP y Zstd descienden de la familia LZ77.