Přejít k navigační liště

Zdroják » Různé » FOSDEM 2021, Golang room

FOSDEM 2021, Golang room

Články Různé

Jak bylo na virtuální konferenci FOSDEM.

Nálepky:

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/

Komentáře

Odebírat
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
Franta

Neresil se nahodou na teto konferenci %subj% ? Mam ten projekt fakt rad, jen mam pocit, ze ten vyvoj neni zrovna nejrychlejsi (…mozna je to jen muj pocit..). Mohla by to jednou byt moc hezka alternativa k micropythonu.

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.