Meetup #3 took place on Friday, April 12, 2019, 19:00 CEST at Basislager. We are now officially part of the Go Developer Network (GDN, currently 103 groups with 47418 members in 37 countries), which was announced in March 2019.
The GDN is a collection of Go user groups working together with a shared mission to empower developer communities with the knowledge, experience, and wisdom to build the next generation of software in Go.
π Meetup topics
We took a closer look at Go modules for dependency management by highlighting a few passages from the Go and versioning design documents. The repository and Slides (PDF) are online.
Furthermore, we had a demonstration of some strange behaviour in the gorilla/handlers package: gorilla/handlers.CompressHandler might gzip twice! If you want to see the bug in action, klingtnet got you covered:
Interestingly, the nytimes/gziphandler does not exhibit the double compression behavior. The solution becomes a bit clearer, when you take into account, that each HTTP middleware will act on its own and has limited means to pass information to another handler (e.g. via HTTP headers). If the middleware acts on a header (e.g. Accept-Encoding), then it can choose to modify the request (it’s a pointer, in contrast to the response writer).
π From Go to Cloud to Linux
Clouds and Cloud-Native technologies would be nothing without Linux. The Linux Meetup Leipzig hosts interesting talks, e.g. a series on container technologies (by Sascha Grunert) or on tunnels and honeypots. Since there is overlap in topics, we might organize a joint event in the future.
π Postponed topics
- worker pool implementation benchmarks (from #2)
- Ramen Linux lightning talk (Update:
https://ramenlinux.com
is no more)
π References
- github.com/golang-leipzig/gomodintro
- github.com/spreadshirt/gorilla-handlers-double-gzip-bug
- The gorilla toolkit
- github.com/nytimes/gziphandler
The tool for inspecting Go binaries and list their deps is called goversion:
$ go get -u rsc.io/goversion
Misc
- Lightning Talk: Brad Fitzpatrick - The nuclear option, go test -run=InQemu (2018)
- A blog post by Russ Cox on the software dependency problem, which reflect on the many different ways, languages manage dependencies today.
Dependency managers now exist for essentially every programming language. Maven Central (Java), Nuget (.NET), Packagist (PHP), PyPI (Python), and RubyGems (Ruby) each host over 100,000 packages. The arrival of this kind of fine-grained, widespread software reuse is one of the most consequential shifts in software development over the past two decades. And if weβre not more careful, it will lead to serious problems.