Marcos Ramírez BETA

Desarrollo Web

Un único almacén central de paquetes enlazado por flechas a varios proyectos de Node.js

⚡ Por qué deberías usar pnpm en vez de npm y migrar hoy mismo

Llevo años viendo discos llenos de carpetas node_modules clonadas mil veces y esperas eternas en cada npm install. pnpm resuelve las dos cosas: guarda cada dependencia una sola vez en disco y enlaza por hard links, instala en una fracción del tiempo y te protege de las phantom dependencies. Te cuento por qué deberías cambiarte, qué tiene de truco y cómo dejar que tu memoria muscular siga escribiendo npm con un alias que funciona en todos los sistemas operativos.

08:30 7 min Marcos Ramírez Lucía
Datos oficiales del BOE, BORME y subvenciones convergiendo en una única API JSON

Apispain: los datos públicos de España en una API para devs

Necesitaba sacar datos del BORME por código y mi primer plan era montar un scraper. Hasta que me topé con Apispain, que unifica BOE, BORME, BDNS y PLACE en una sola API REST con JSON normalizado, SDK de npm, búsqueda semántica con Inteligencia Artificial y webhooks. Te cuento qué hace, cuánto cuesta, en qué se diferencia de eInforma o Axesor y cuándo merece la pena pagarla en vez de parsear tú las fuentes oficiales.

08:30 7 min Marcos Ramírez Lucía
Código Python de scraping recolocándose sobre una estructura web que cambia

Scrapling: el scraper de Python que se repara cuando la web cambia

Scrapling es una librería de scraping para Python con una idea que llevábamos años pidiendo: cuando la web cambia su HTML, el scraper se recoloca solo en vez de romperse. Tres fetchers, bypass de Cloudflare, un parser 784 veces más rápido que BeautifulSoup y un framework de spiders incluido. Te cuento qué hace bien, dónde tiene truco y cuándo NO deberías usarlo.

08:30 7 min Marcos Ramírez Lucía
Candado digital sobre código fuente de un repositorio

He cerrado el repositorio del blog. Te explico por qué.

El repositorio de este blog acaba de pasar a privado. No es por capricho: hay tres razones concretas detrás, y una de ellas tiene que ver con que ya no publico desde GitHub Pages sino desde Cloudflare. Te lo cuento todo.

08:30 8 min Marcos Ramírez
Tres plataformas de agentes de voz representadas como nodos conectados en un entorno tecnológico con ondas de sonido digitales

Dograh, Retell o VAPI: cuál elegir para tu agente de voz en 2026

Me llega un proyecto con un requisito que cambia todo: los datos son sensibles y las conversaciones no pueden salir de la infraestructura del cliente. Así fue como acabé comparando en serio Dograh, Retell y VAPI. Precios reales, lo que te cuesta cada opción cuando el volumen crece, y por qué la privacidad es la pregunta que casi nadie hace cuando elige plataforma.

08:30 7 min Marcos Ramírez Lucía
Terminal con comandos de build de Astro mostrando páginas generadas correctamente

Migré 112 posts de Jekyll a Astro 6 y esto es lo que rompió

Crónica técnica de la tercera migración de este blog: WordPress, Jekyll y ahora Astro 6. BOM en 51 archivos, CRLF, MDX estricto, Liquid residual, getStaticPaths en scope aislado, el bug del setext heading. 18 problemas documentados en orden cronológico hasta el build limpio.

08:30 8 min Marcos Ramírez Lucía
Infraestructura de Cloudflare Workers sobre fondo oscuro con red de nodos distribuidos y código de configuración

De Cloudflare Pages a Workers con Astro: la guerra real

Cuento cómo migré marcosramirez.dev de Cloudflare Pages a Cloudflare Workers en dos días: por qué fue necesario, qué salió mal en cada intento, qué configuraciones rotaron sin funcionar y cómo quedó al final. Si estás usando Astro con el adaptador de Cloudflare y tienes rutas de API con SSR, esto te va a ahorrar tiempo.

08:30 8 min Marcos Ramírez Lucía
Representación visual de dos plataformas de voz conectadas por un flujo de migración, fondo oscuro tech con ondas de sonido digitales

De VAPI a Retell: la migración que se llevó media arquitectura

Cuento cómo integré VAPI en marcosramirez.dev para tener un agente de voz en la web, por qué migré a Retell cinco días después, y cómo esa decisión arrastró consigo un cambio de arquitectura completo: de Cloudflare Pages a Cloudflare Workers, pasando por SSR, rutas de API y gestión segura de tokens. La historia de cómo una sola dependencia puede cambiar toda tu infraestructura.

08:30 7 min Marcos Ramírez Lucía
Interfaz limpia de un blog moderno con modo oscuro en un monitor de escritorio

El blog tiene cara nueva: he migrado de Jekyll a Astro

Llevaba meses con la sensación de que el blog necesitaba renovarse. No porque estuviera roto, sino porque había cosas que quería hacer y no podía. Así que lo rehíce desde cero con Astro. Este post es la presentación. Los detalles técnicos de la migración vienen después.

19:15 3 min Marcos Ramírez
Terminal en Windows con comandos Git mostrando un renombrado de archivo con cambio de case

Git en Windows: renombrar un archivo cambiando solo el case

En Windows, cambiar solo el case de un nombre de archivo con Git no funciona con un simple mv ni con git mv directo. El sistema de archivos es case-insensitive y Git tiene core.ignorecase=true por defecto, así que simplemente ignora el cambio. La solución es un renombrado en dos pasos: primero a un nombre temporal y luego al nombre final. Te explico por qué ocurre, cómo solucionarlo y cuándo te vas a encontrar con este problema más de lo que crees.

08:30 9 min Marcos Ramírez Lucía
Diseño limpio de la nueva web profesional marcosramirez.dev en un monitor de escritorio moderno

Estreno web: marcosramirez.dev, por fin como yo siempre quise

He renovado completamente marcosramirez.dev, mi web profesional como consultor de digitalización e Inteligencia Artificial para autónomos y PYMEs. Cuento quién soy, qué hago exactamente, a quién ayudo y por qué decidí darle una vuelta completa a mi presencia online. Si tienes un negocio que todavía gestiona tareas a mano o no aparece bien en Google, esto te interesa. Y si conoces a alguien así, todavía más.

20:00 8 min Marcos Ramírez Lucía
Pipeline de git push comprometido con indicadores de alerta roja sobre código inyectado

⚠️ CVE-2026-3854: RCE crítico en el pipeline git de GitHub

CVE-2026-3854 es una vulnerabilidad crítica de ejecución remota de código en el pipeline de git push de GitHub, con una puntuación CVSS de 8.7. Descubierta por investigadores de Wiz mediante ingeniería inversa asistida por Inteligencia Artificial, permite a cualquier usuario con acceso de push inyectar campos internos a través de un carácter punto y coma mal sanitizado. GitHub.com fue parcheado en menos de 75 minutos tras la validación del reporte. Si usas GitHub Enterprise Server, actualiza ahora.

Panel de Cloudflare con la sección Workers & Pages mostrando Pages escondida bajo el flujo de Workers

Cloudflare Pages está desapareciendo (y Workers sale ganando)

Cloudflare ha anunciado oficialmente que Pages y Workers se fusionan en una sola plataforma, y el panel ya refleja esa estrategia: Pages aparece enterrada como un enlace pequeño al final de una pantalla orientada a Workers. No es un fallo de UX. Es una decisión de negocio. Te explico qué significa para los sitios estáticos, cuánto te puede costar a futuro y por qué Pages sigue siendo la mejor opción para hosting estático mientras exista.

08:30 8 min Marcos Ramírez Lucía
Código Jekyll con schedule de GitHub Actions

Programar posts con Jekyll en GitHub Pages: el proceso completo

Soluciona la limitación de Jekyll en GitHub Pages para programar publicaciones futuras. Te explico cómo configurar el archivo _config.yml con la opción future para controlar si Jekyll debe publicar posts con fecha en el futuro. Aprende a configurar el workflow en .github/workflows/pages-deploy.yml con schedule para ejecutar builds automáticos cada 30 minutos, permitiendo que los posts programados se publiquen automáticamente. También te muestro una alternativa menos elegante que consiste en forzar el rebuild ejecutando un push vacío desde tu local. Una guía técnica paso a paso para automatizar tu blog Jekyll.

21:00 1 min Marcos Ramírez