Un listener en lugar de un componente cliente por botón
En cuanto añades analítica de clics a un componente, este se convierte en un componente cliente que envía JavaScript. Haz eso a lo largo de todo un sitio y solo el tracking infla tu bundle. Aquí está la alternativa que ha estado en la plataforma desde siempre: un único listener delegado, atributos de datos declarativos y componentes que siguen siendo HTML puro renderizado en el servidor.
Un acordeón fluido con cero JavaScript
Todo el mundo recurre al estado de React y a un hook que mide la altura para construir un acordeón. El navegador incluye uno nativo desde hace años — y desde 2024 anima la apertura y el cierre con CSS puro. Aquí tienes la técnica completa: details[name], ::details-content, interpolate-size y la única propiedad que también anima el cierre.
Captura un valor de terceros en el instante en que llega a window
Un script que no controlas escribe su resultado en un global de window en un momento que no puedes predecir. La mayoría del código compite contra él con un timeout o desperdicia el main thread haciendo polling. Aquí está el truco de accessor property que convierte la escritura en un evento — además del getter que no debes olvidar, y cómo sustituir el valor por completo.
Ajusta el texto a su contenedor con CSS puro — sin JavaScript
Todo el mundo escribe un hook de JavaScript para reducir el font-size hasta que el texto quepa en un contenedor. Aquí tienes una alternativa totalmente funcional y sin JS usando unidades de container query, clamp() y separación silábica según el idioma — incluida la trampa de la cascada que hace que la gente se rinda.
next/dynamic no te salvará: por qué las páginas de Next.js gestionadas por CMS envían todos los chunks
Nuestras páginas de Next.js gestionadas por CMS enviaban los ~100 componentes de sección en cada ruta, pese a un uso de next/dynamic de manual. Agotamos todos los arreglos a nivel de bundler (import() directo, división de archivos, configuración de Turbopack, splitChunks de webpack) antes de encontrar la causa real: la alcanzabilidad, no el chunking. La generación de código en tiempo de build más rewrites recortó el JS de primera carga en un 53%.
Saco mis tableros de Miro y los llevo a Obsidian
El botón Export de Miro te da un PNG o un PDF — una foto de los datos, no los datos. Si tus tableros son load-bearing maps of thinking acumulados durante años, su sitio es Obsidian: editables, searchable, en un vault local. Cómo saqué los boards de Miro vía REST API y los convertí a Excalidraw / Obsidian Canvas — conservando posiciones, colores, fuentes, curved connectors, mindmap nodes — y la lección va más allá de Miro: a todo SaaS hay que mirarlo con un exit plan ANTES del primer uso.
CRAFT: un método para usar AI sin perder tu ventaja profesional
Un diagnóstico sin remedio no es más que ansiedad. Tras el artículo sobre la descualificación por AI, aquí está la prescripción: CRAFT — cinco principios (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) bajo un solo axioma: AI hace lo que ya dominas; tú haces lo que todavía estás aprendiendo. Un método práctico y fácil de recordar para usar AI cada día sin perder habilidades sin darte cuenta.
El silencio que apagó la AI
¿Vale la pena seguir aprendiendo a programar si existe la AI? La respuesta ruidosa es errónea por ambos lados. Con la base de evidencia de 2025–2026 (Nature, Anthropic, AI & Society) la pregunta no es "AI o no", sino qué habilidades cederle a la AI y cuáles guardar para ti — y hay una cosa que sí cambió: antes la realidad te obligaba a aprender por fricción, la AI apagó ese empujón en silencio.
Claude Code Multi-Profile, v2: una arquitectura XDG limpia
Después de un mes con el enfoque viejo basado en alias, rehíce mi setup multi-profile de Claude Code a una estructura compatible con XDG bajo ~/.config/claude-profiles/. La razón real no fue el orden — fue descubrir que ~/.claude.json es un archivo separado en el home root donde vivían silenciosamente los servidores MCP añadidos con --scope user.
Cómo escribir agentes de Claude Code que no te mientan
Dos reglas para construir pipelines de agentes de Claude Code fiables: un agente por especialización, y comandos de shell en lugar de prompts en todo lo que requiera respuestas cuantitativas.
Múltiples cuentas de Claude Code en un dispositivo
Cómo usar dos (o más) cuentas de Claude Code en paralelo — personal y corporativa — con aislamiento total usando una sola variable de entorno.
Cómo conectar Claude Desktop a Obsidian — Un viaje a través de 4 servidores MCP
Una historia real sobre la búsqueda de una forma estable de automatizar el refactoring del vault de Obsidian vía Claude. Qué se rompió, qué funcionó, y por qué VaultForge resultó ser la única opción funcional.
Agujeros negros como universos recursivos: de la física al propósito de la existencia
¿Y si cada agujero negro es un Big Bang de un nuevo universo? Una exploración de la cosmología recursiva y el cierre cognitivo.
La IA mató al CMS — al menos para sitios simples
Por qué los sistemas de gestión de contenido tradicionales se están volviendo innecesarios para portfolios, blogs y landing pages.
Cómo conectar Perplexity AI a Obsidian vía MCP — Notas directas desde el chat
Configura Perplexity Desktop para leer y escribir tu Obsidian vault usando el servidor MCP filesystem. Investiga en la web y guarda en tus notas en una conversación.
Digest Diario de Noticias AI con Claude Code CLI y Obsidian — Cero Dependencias
Cómo construí un agente diario de investigación de noticias con un script bash de 6 líneas, modo headless de Claude Code y macOS launchd.
Next.js Dark Mode sin parpadeo ni advertencias de React 19
Cómo reemplazar next-themes con Zustand + useServerInsertedHTML para modo oscuro sin parpadeo en Next.js 15+.
Cómo eliminé 94 archivos CSS que bloquean el renderizado en Next.js 16 con una característica poco documentada de Turbopack
Después de días probando cada enfoque — desde experimental.inlineCss hasta hacks con MutationObserver — descubrí Turbopack Import Attributes que resuelven el problema de CSS que bloquea el renderizado en Next.js App Router.
Next.js Memory Leak: Fetch + Modo Standalone — 2 años sin solución
Next.js parchea el fetch global y añade una capa de caché que pierde memoria en cada petición. En Docker/K8s esto causa crashes OOM cada pocas horas. El bug existe desde Next.js 14 y sigue sin resolverse en 16.2.x.