Los titulares que auguran que el “Brexit duro” es ya inevitable son muchos, de hecho, parece que la fecha límite es el 31 de octubre, para lo que quedan poco más de dos meses. Sin embargo, nada de eso nos impidió disfrutar de una edición más de la GopherCon UK, de nuevo con una nota sobresaliente.
The Brewery, la ubicación dónde se ha realizado el evento los últimos años estaba a rebosar ya el primer día, el pasado 21 de agosto. Pese a que no había charlas, el cartel no se quedaba atrás: dos tracks de workshops (uno más básico y otro más avanzado) impartidos por los maestros Cory LaNou, co-fundador de GopherGuides y por Mark Bates, también co-fundador de GopherGuides así como de PaperCall y del framework GoBuffalo. Además de ser reconocido como Google Developer Expert (GDE).
La guinda del pastel de bienvenida al evento se sirvió también en el mismo lugar, a modo de episodio de GoTime, ese podcast del que tantos capítulos hemos compartido con vosotros a través de Twitter. Además, éste representó la sesión de agosto del meetup de LondonGophers, el user group de Go basado en Londres.
No obstante, lo mejor aún estaba por empezar, los nervios seguían presentes en todos nosotros y el disparo de salida de los dos días de conferencia aún se mantenía en la recamara.
Día 1
El programa de charlas para los dos días de conferencia eran un seguro de calidad con garantías, pero lo que parecía una apuesta aún más segura era la keynote de Julie Qiu, actual ingeniera del equipo de Go en Google, sobre las diferentes estrategias para descubrir, evaluar y mantener los paquetes y módulos de Go.
Sin embargo, antes de que Julie pudiera empezar, échabamos en falta ese disparo de salida que diera inicio a dos días de charlas de todos los niveles y temáticas (relacionadas con Go, por supuesto). Dicha tarea la llevaron a cabo los correctamente designados maestros de ceremonias (MCs) Mark Bates y Mat Ryer, quiénes después de dejar al público entre carcajas con su más que cachonda presentación, y después de hacer pública su más reciente invención (#chavedeney -ver @ChaveDeney-), dieron paso, por fin, a Julie y su keynote
En ella, Julie nos mostró, a modo de ejemplo, el proceso que había tenido que seguir para escoger de forma apropiada una librería de parseo de Markdown para elaborar su propio libro de recetas virtual. Y es que definir los requisitos (funcionales y no funcionales) para este tipo de necesidades no siempre es tarea sencilla, y mucho menos lo es dar luego con la librería adecuada. En dicho proceso no faltó la referencia a métricas (maintainers’ activity, dependants, code quality, etc) que ella considera clave a la hora de tomar una decisión de este tipo. Además, también nos mostró algunas de las herramientas que podemos usar a la hora de realizar este tipo de análisis (godoc, goreportcard, staticcheck). Finalmente, nos mostró el proyecto discovery que está llevando a cabo en Google con el fin de mejorar dicho proceso. Proyecto al cuál nos podemos suscribir como testers aquí.
Después de dicha charla, ya empezó el sinvivir que resulta tener que escoger entre varios tracks repletos de ponentes y charlas de un gran altísimo nivel. En nuestro caso tuvimos la oportunidad de asistir a la charla de David Hernandez de Machinebox, quién nos mostró los pros y los contras de implementar un índice de búsqueda (como ElasticSearch) con machine learning. En ella pudimos ver las diferencias entre la estrategia de matching keywords y las estrategias más contextualizadas que se usan con machine learning en sistemas como el Universal Sentence Encoder, con algoritmos como el Word2Vec; y cuándo es más apropiado aplicar cada una de las diferentes estrategias. Porqué tal y como afirmó el propio David, para un sistema convencional, un lunes es lo mismo que un viernes (un día de la semana dentro de un grupo ordenado), sin embargo, para nosotros, ambos días son muy diferentes, y se trata de dotar a los nuevos sistemas de ese conocimiento.
Las otras charlas del día a las que pudimos asistir también fueron muy interesantes. Por ejemplo, Ricardo Catalinas Jiménez, de Cloudflare nos explicó como su compañía se lo monta para gestionar más de 8.7M de peticiones HTTP por segundo y más de 2M de peticiones DNS por segundo, con una infraestructura basada en servidores que son capaces de procesar cualquier petición (mitigación de ataques, CDN, etc). Más específicamente nos habló de una herramienta llamada Quicksilver, que ellos han desarrollado en Go para poder satisfacer dichos requisitos, y de como hacen uso de la base de datos LMDB para ello.
También tuvimos la oportunidad de ver el potencial de la librería gRPC gateway a cargo de Johan Brandhorst, de cómo usar Go como un lenguaje de scripting por Ignat Korchagin, y de cómo Go es capaz de mantener un millón de conexiones con websockets de Eran Yanay, entre otras. El día acabó con bonito show de Gautam Rege en formato keynote dónde nos mostró algunos de los tradicionales "#golang pop quiz” más interesantes.
Día 2
El segundo día no fue a menos, y empezó fuerte con la charla del compañero Jorge Marin
sobre esa loca pero interesante mezcla que supone juntar Go con WebAssembly. Le siguió otro de los clásicos, Dani Martí,
explicándonos algo que ya sabemos que le encanta: cómo realizar benchmarks y cómo mejorar nuestro código Go, de forma
razonada y con cabeza. Y, antes de ir a comer, pudimos ver a Björn Rabenstein de Grafana Labs
que nos deleitó con la explicación sobre cómo habían conseguido hacer una implementación de los Prometheus Histograms
libre de locks (con especial cariño para los haters del paquete sync
.)
La tarde del segundo día la enfocamos con un poco de pena, por ver tan cerca el final de algo tan maravilloso. Sin embargo,
esa tristeza se vio compensada con otro conjunto de charlas y ponentes de un gran nivel, así como de un workshop muy
pero que muy interesante sobre programación funcional en Go. Las últimas charlas a las que asistimos antes de dar el
cierre fueron las de William Clarke, quién nos explicó con un gran nivel de detalle
cómo en Deliveroo descompusieron el monolito Ruby que tenían en diferentes microservicios desarrollados
en Go, y la de Robert Clapis, ingeniero especializado en seguridad de Google, que nos explicó
como afrontar la resource contention y como en determinadas situaciones
es mejor hacer uso del paquete sync
y de sus locks que hacer uso de los canales.
Finalmente, y de nuevo para acabar en formato keynote, Elias Naur nos presentó a Gio, una librería para desarrollar interfaces gráficas compatibles con todas las plataformas más habituales: Android, iOS / tvOS, macOS, Linux, Windows y WebAssembly.
Experiencia personal
De nuevo (después de la dotGo y la GopherCon Rusia), un servidor tuvo la oportunidad de participar en una gran conferencia como ponente, además, esta vez, con una temática que ha generado bastante controversia desde los inicios del lenguaje: cómo arquitecturar una aplicación compleja en Go y cómo aplicar conceptos (como Arquitectura Hexagonal o Domain-Driven Design) que estamos acostumbrados a aplicar en otros lenguajes.
Por todo ello, y como ya dije, quiero dar las gracias a toda la organización y a todos los asistentes que depositaron su confianza en mí, escogiendo mi charla en detrimento del resto de tracks que también prometían ser muy interesantes.
Y no queda mucho más por decir más allá de lo habitual: “save the date” para el año que viene, y recomendación encarecida para que os animéis a participar en las siguientes ediciones, ya sea como asistentes entre el público o como ponentes.
Si queréis ver más detalles de la conferencia, podéis ver nuestro perfil de Twitter o revisar las publicaciones con el hashtag #gopherconuk.
¡Nos vemos en la próxima!