-
Tres strings y dos fallbacks: conectar el share sheet nativo en Forgemage.net
El botón de compartir de la página de detalle de una petición en Forgemage.net abre el share sheet del sistema allá donde el sistema tiene uno — Android, iOS, Windows, macOS — copia el link donde no lo hay, y se calla cuando simplemente cambias de opinión. Aquí está toda la implementación: navigator.share con tres strings, un guard de AbortError que deja pasar en vez de catchear, un fallback de clipboard con un fallback de execCommand debajo, y el detalle de Symfony de una sola letra que decide si el link compartido funciona.
Leer artículo ↗ -
Cada nuevo forjamago hacía la búsqueda más lenta: matar el N+1 detrás de Forgemage.net
El directorio de forjamagos de Forgemage.net lanzaba unas siete queries por tarjeta — reseñas, tiempo de respuesta, estado online, tres relaciones lazy — más contadores de facetas recalculados en cada cambio de filtro. Así pasé de una página de 24 tarjetas con ~168 queries a un puñado, con un cache batch scopeado a la request y una pasada paginate-then-hydrate, sin tocar las páginas de perfil individuales.
Leer artículo ↗ -
Markdown para agentes, self-hosted: un subscriber de Symfony en lugar de un plan de Cloudflare
Cloudflare convierte páginas a markdown para agentes IA vía Accept: text/markdown — en planes de pago. El mismo contrato HTTP cabe en un event subscriber de Symfony de 144 líneas. Mi homepage pasó de 59 KB de HTML a 7,7 KB de markdown, misma URL.
Leer artículo ↗