Cada vez que le cuento a alguien del gremio cómo funciona este blog, la conversación llega al mismo punto. Explico que es un servidor en Go, que el contenido son ficheros Markdown, que hay hot reload, un API, un scheduler que publica solo... y entonces cae la pregunta: "¿y qué base de datos usas?". Ninguna. Silencio. "¿SQLite por lo menos?". Tampoco. La única fuente de verdad de este blog es un directorio con ficheros .md dentro, y llevo el suficiente tiempo con él en producción como para defender la decisión por escrito. No es una postura ideológica ni un ejercicio...
Go tiene go build, go test, go run. No necesita un sistema de build. Pero en cuanto tu proyecto crece un poco, acabas con comandos que no son triviales de recordar: flags de compilación, variables de entorno para tests, linters, generación de código, deploys. Un Makefile es la forma más simple de documentar y ejecutar esos comandos. El Makefile mínimo Cinco targets. Cinco comandos. Nada más. Con esto puedes hacer make build, make test, make run y make lint sin recordar nada. El .PHONY le dice a Make que estos targets no son ficheros sino acciones. Variables Si repites valores,...
Los generics llegaron a Go en la versión 1.18, marzo de 2022. Llevamos más de tres años con ellos en producción y, visto con perspectiva, creo que la comunidad ha reaccionado de una forma bastante sana: hubo una oleada inicial de uso excesivo, un rebote de "mejor no usarlos nunca", y ahora estamos en un punto intermedio más razonable. Este post es mi intento de destilar ese punto intermedio: cuándo los generics aportan y cuándo sobran. Por qué Go tardó tanto en incorporarlos Go nació en 2007 con una filosofía clara: simplicidad sobre abstracción. El equipo original consideraba que los...
Cualquiera que haya integrado Stripe, GitHub, GitLab, Mailgun, Twilio o cualquier sistema moderno que hable webhooks se ha encontrado con el mismo problema: necesitas una URL pública para recibir los eventos de prueba, pero estás desarrollando en local. Y el sistema de webhooks del proveedor no va a llegar a tu localhost:3000. Durante años, la solución ha sido ngrok, localtunnel, cloudflared tunnel, o montar un VPS con un Docker expuesto. Todos funcionan. Todos exigen instalar algo, registrarse, abrir puertos, gestionar túneles. Para algo que debería ser: dame una URL, mándale peticiones, muéstrame qué llega. webhooks.javiervalencia.net hace exactamente eso, sin registro...
Hace unos meses que tengo rodando un pequeño servicio propio en ipinfo.javiervalencia.net. Es una API de geolocalización de IPs: le das una dirección y te devuelve ciudad, región, país, coordenadas, código postal y zona horaria. Sin registro, sin API key, sin formulario, sin cookies. La usas desde la terminal, desde un script, desde un dashboard o desde un navegador. Este post cuenta qué hace, cómo está construida, y unos cuantos ejemplos prácticos para que te hagas una idea de cuándo puede serte útil. Por qué existe Llevo años usando servicios de geolocalización de IPs para cosas muy mundanas: Saber desde...