This week I have attended to the dotGo2016 conference in Paris. It is a one-day, one-track, 20-minutes-per-talk conference. Very few laptops, people were really focused attending to the dense talks. Here I will highlight some concepts that I have found interesting in some of the talks:
Dave Cheney(@davecheney) talked about first class functions (Don’t fear the first class functions), how to implement them in Golang and why they are sometimes a good choice because of the advantages of passing behaviour (encoded in functions) over raw data structures. You can find the example code here. Some examples are inspired by Bryan Boreham’s An Actor Model in Go talk from Golang UK 2016 conference.
Damian Gryski(@dgryski) discussed about bottlenecks in memory access time, showed some performance metering examples with
perf and stated the importance of trying to code in a way that processor cache usage is maximized. I have recently heard about a similar concept (Mechanical sympathy) and I find it quite appealing.
Lucas Clemente (@luke_r2d2) presented the QUIC protocol and his package quic-go to use it. It is great that the library presents an interface really similar to
net/http. And nice to learn that Caddy can run with a
Kelsey Hightower (@kelseyhightower) presented kargo, a proof-of-concept library he has developed to allow golang binaries to self-deploy to kubernetes without any additional files or commands. Entertaining as always, with a vibrant demo, although I do not see a practical application, I follow his reasoning on the possible use case of self-deploying applications.
Katrina Owen (@kytrinyx) explained both how do they injected testing in a project when debugging an issue and also the flocking pattern for refactoring (although she managed not to use the word refactoring), based on finding similarly-shaped patterns and iterating the abstraction until an acceptable result is found, rather than doing an upfront redesign
- Embedded plugins (such as in Caddy web server)
- Net Plugins (such as in Hashicorp, Docker… products), via RPC
- RPC plugins using streams (powered by
- Net Plugins + docker run: a way to achieve maximum isolation, at the cost of worst performance. This is the model for the Drone CI plugin system.
Finally, Robert Griesemer gave a master talk on how to prototype using Golang, following the example of a new syntax allowing multi-dimensional index operators, powered by a transformation of the AST using a toolchain with
Bonus: Florine Pigny live-sketched the conference here, through these pictures you can get a sense of the place and the atmosphere.