Another year and another Gophercon, this time in sunny San Diego! As usual, there were a lot of high quality talks across a breadth of subjects. I highly recommend browsing through the Gophercon videos on YouTube, but I'll highlight what I thought were the interesting bits below.
The last year or so has seen a LOT of discussion around dependency management for Go, particularly around dep and Go Modules (formerly vgo). Previously, dep was the "official experiment" for dependency management for Go, but was superceded by a proof of concept called vgo that became what we now know as Go Modules. Go Modules is being actively developed in the Go toolchain and is the future of dependency management for Go. While dep is a fine choice, it's clear that the Go team will be pushing Go Modules hard. This was made clear in Russ Cox's introductory talk regarding the future of Go 2.0. I've always been more in the dep camp, but a lot of my concerns were alleviated by what I heard from Russ. Also, there was a fantastic talk later on by Aaron Schlesinger about Athens, a free, open source mirror for Go Modules. It seems to me that Go Modules will be in a good place to take over dependency management for Go in the near future.
Another exciting proposal for the future of Go is the addition of generics. I find that I don't have much need for generics in my day to day life as a Go programmer, but there have been a few instances where generics would have been much appreciated. Ian Lance Taylor spoke about the most recent proposal for generics in Go. I found it to be much more palatable than the original proposal from last year, which was confusing and convoluted. The current proposal felt much more Go-ish and I look forward to the addition of generics at some future date.
My favorite part of any Gophercon is usually when Ron Evans from the Hybrid Group takes the stage. I like tech and toys and he does both. He usually ends up flying drones around the stage and this year was no exception. His main plug was for TinyGo, which is a new miniature version of Go designed to run on microcontrollers. It doesn't support all language features (no garbage collection at this point in time), but it is actively worked on by the community and the original author. TinyGo compiles down to a binary that is a fraction of the size of a regular Go binary, which makes it ideal for microcontrollers that might only have 256K of memory. They offered a free Arduino Nano 33 IOT to the first 300 people to come to the community day, so almost everyone could mess around with TinyGo. I highly recommend watching his presentation. He and his kid are hilarious.
I made sure to get up early enough for the community day on Saturday to receive one of the Arduino's. Unfortunately, there was a minor bug with some default flag in the TinyGo build for Darwin, so those of us with a Mac were unable to actually use TinyGo on our Arduino. I ended up sitting next to the original TinyGo creator and was trying to help him test a new build with a fix, but unfortunately the hotel WiFi was slammed and I was unable to download the updated build. I plan on messing around with the Arduino at an upcoming hackathon at work. Since I couldn't play with the Arduino at the community day, I picked up one of the DJI Tello drones and flew it around a bit, while adjusting some of the code in my Tello engine.
This was my third year in a row attending Gophercon and I always walk away feeling pumped about Go. The language is great, the community is great, and there's always something new to learn. I hope I am able to attend next year as well!