FOSDEM 2021, Golang room

Jak bylo na virtuální konferenci FOSDEM.

Text vyšel původně na autorově webu.

V dobách před pandemií nebylo úplně jednoduché se dostat na zahraniční konferenci — stálo to dost peněz (od registrace, přes cestu a ubytování) a ne každá firma to chtěla zaplatit. Dnes, kdy se všechny konference přesunuly do virtuálního prostoru, je situace v mnohém jednodušší. Když jsem zachytil, že součástí FOSDEM 2021 je i Go Room a navíc zadarmo, tak jsem se zúčastnil. Mimochodem, FOSDEM znamená Free and Open source Software Developers‘ European Meeting.

Deploy a Go HTTP server in your browser

Nicolas Lepage měl takový nápad — nechat běžet Golang webovou aplikaci v browseru. Asi to nemá nějaké valné využití, kromě znovupoužití už hotového kódu (aplikace).

Fór je v tom, zkompilovat Golang kód jako WebAssembly a výslednou binárku provolávat pomocí Servicer Worker. Jediným problémem/omezením je, že ve WebAssembly se nedá nastartovat Golang http.Server. Ale zato se tam dá spustit http.Handler. Aby to fungovalo, tak je potřeba v Golangu přeložit JavaScript request na Golang http.Request a pak už to sviští.

Zajímavá blbůstka. Takže handlery se dají bez problému znovu využít. Jenom je otázka, jak moc je komplexní business logika v handleru — ty by měly být spíše bezstavové.

Go Without Wires: Programming Bluetooth Using Go and TinyGo

Ron Evans měl přednášku o tom, jak používat Go Bluetooth pro připojování k různým zařízením a jak vlastně fungují Bluetooth Low Energy zařízení.

Bylo to docela zajímavé, ale bohužel stream měl tak špatné rozlišení a zpoždění videa, že z přednášky skoro nic nebylo. Nakonec se Ron připojil ke dronu a zobrazoval live kameru. Pěkné a efektní, ale škoda toho pokaženého streamu.

Drones, Virtual Reality and Multiplayer NES Games: The fun you can have with Pion WebRTC!

Sean DuBois sice taky trochu mluvil o dronech, ale jen okrajově — jeho tématem bylo WebRTC a speciálně jeho Go implementace Pion. WebRTC je technologie pro real-time communication (RTC), která může přenášet audio, video a binární data, a to vše pěkně v browseru.

Je to peer-to-peer komunikace mezi dvěma klienty, z nichž ani jeden nemá veřejnou IP adresu. To se děje pomocí NAT Traversal.

Po vysvětlení, jak funguje WebRTC, následovalo demo, jak v Golangu (v Pionu) naimplementovat vytvoření spojení, poslání dat (binární a video) a jak data přijmout. Kód vypadal velmi čistě a idiomaticky.

Calling Python from Go In Memory: Using 0 Serialization and ε Memory

Miki Tebeka měl celkem klasickou přednášku — jak z “nějakého” jazyka volat data science knihovny v Pythonu. V tomto případě byl tím “nějakým” jazykem Golang. Už jsem pár takových přednášek viděl, takže to nebylo nic moc objevnýho.

Co bylo ale zajímavý, tak informace, že Golang float64 a NumPy float64 mají v paměti stejnou reprezentaci. A taky že NumPy array je v paměti spojitý, stejně jako Golang slices.

Miki tedy ukazoval celý postup, jak z Golangu volat NumPy funkce. Podmínkou byl CPython a v podstatě šlo o kopírování (spíš přesouvání) polí z paměti spravované Pythonem do paměti spravované Golangem. To vše bez jakékoliv serializace. Hodně zajímavé řešení! 👍

Writing a Go Client for Photoprism

Tady bohužel vypadla přednáška o použití Go v krypto-analýze, na kterou jsem se nejvíc těšil. Uznání patří organizátorům, kteří sedli na Twitter a během hodiny našli náhradu. Kloubouk dolů!

Náhradou byla Kris Nova, která live odpřednášela, jak psala Go klienta pro PhotoPrism, včetně integračních testů. Téma nebylo nějak extrémně zajímavé, ale je jasné, že Kris je hackerka každým coulem.

Asi nejzajímavější bylo, že u integračních testů nesnáší mockupy — chce co nejvíc živých aplikací, aby bylo v testu vidět, jak se systém chová. To si musím zapamatovat!

Building cross-platform Go GUIs fast using Fyne: Platform agnostic is the future of app development, and Go is the language of choice

Andrew Williams měl sice nudnou, ale zajímavou přednášku o Fyne — cross-platform GUI toolkit pro psaní nativních aplikací v Golangu. Kdybych někdy potřeboval napsat (desktop) GUI v Golangu, tak po Fyne určitě sáhnu.

Proč byla přednáška nudná? Protože přehlídka widgetů moc sexy není. Takže spíš potenciální využití do budoucna (i když v cloudu to asi moc nevyužiju).

Go at Tailscale: From writing Go to using Go

Na Brada Fitzpatricka jsem se těšil — to je přece ten chlápek, co deset let psal Go! Zejména std a http packages. Teď dělá ve start-upu Tailscale, kde vyvíjejí VPN nové generace.

Tahle VPNka běží na všech platformách a zajímavější než ona sama je to, jak tuhle multiplatformnost řešili. Na všech platformách je to (téměř) čisté Go, všechno Open Source, občas (Windows, Mac) něco trochu proprietárního (třeba Windows system tray) a třeba na Macu volání Golangu ze Swiftu. Na Adroidu třeba zas něco málo JNI. Na serveru pak (výhradně) čisté Go a databáze etcd (to je taky Go).

Zajímavá pak byla ještě diskuze o IP adresách v Go — jednak existuje typ net.IP a pak ještě net.IPAddr. Ani jeden typ chlapcům z Tailscale nevyhovoval (jsou mutable, nejsou comparable a IP []byte se nedá použít jako klíč v mapě, plus ještě pár další věcí), a tak si napsali vlastní typ netaddr.IP, který zmíněnými neduhy netrpí.

Jo a pak taky Tailscale používá již výše zmiňovaný NAT Traversal.

The State of Go: What’s new since Go 1.15

Poslední přednáška byla od pořadatelky Maartje Eyskens o novinkách v Go 1.15. Bylo to fajn, holčina věděla, o čem mluví, ale musím se přiznat, že si z toho moc nepamatuju. Jediné, co si vybavím, tak že nejsou žádné změny v jazyce a že go build a go test už teď nemodifikují go.mod — místo toho je potřeba zavolat go mod tidy.

Když se teď zpětně dívám, tak přednáška více méně kopírovala obsah Go 1.15 Release Notes, ale bylo tam i něco o nadcházejícím Go 1.16.

Suma sumárum

Bylo fajn si poslechnout po čase něco nového o Golangu. Až mě překvapilo, že ačkoliv měly všechny přednášky pouhých 30 minut, tak se do nich vměstnalo překvapivé množství informací. Pěkně to odsejpalo a nebyl čas se nudit.

Poklona patří pořadatelům, protože paralelních streamů bylo požehnaně, ale všechno klapalo jako dobře promazaný stroj. Well done!

Videa z Golang roomu najdete na https://fosdem.org/2021/schedule/track/go/

Poslední roky píšu micro-services v Golangu pro cloudovou infrastrukturu. Předtím jsem (sekvenčně) programoval 2 roky v JavaScriptu, 3 roky v PHP a 12 let v Javě. Paralelně k tomu jsem 8 let fungoval jako Team/Technical Leader. Píšu technologický blog SoftWare Samuraj, kde se věnuji různým aspektům z oblasti SW engineeringu.

Komentáře: 2

Přehled komentářů

Franta Budoucnost TinyGo
Vít Kotačka Re: Budoucnost TinyGo
Zdroj: https://zdrojak.cz/?p=24272