I had the privilege again this year to fly out to Denver and attend Gophercon, the premier gathering of "gophers" (people who program in Go). It's a lot of fun and I learn something every time. After spending the weekend hanging out around town with my wife, enjoying Hammond's candy and exploring the Denver Museum of Nature and Science, I started the conference with a machine learning workshop. It turned out to not be quite what I expected. I was hoping to spend more time with deep neural networks and current tools of the trade, like Tensorflow. Instead we spent most of our time going over machine learning basics, which I was already marginally familiar with. They did go over the math behind a few concepts, like linear regression and k-nearest neighbors. I found that to be interesting enough. Afterwards, they started setting up some arcade classics that could be played for free, so I knew the conference was going to good.
Personally, I found the speakers during the main conference to be much more informative. There was Kavya Joshi, who started the conference with a bang talking about the Go scheduler. I feel like I now have a good grasp on how the scheduler manages goroutines and the reasoning behind why it works the way it does. If you missed it from last year's Gophercon, she gave a fantastic talk about channels in Go. I highly recommend checking out both of her talks.
There was also a fantastic talk by Ron Evans about computer vision in Go using OpenCV. There is a new package called gocv that provides access to the OpenCV 3 computer vision library. He performed a few live demonstrations, including using a new DJI Tello drone to follow his comrade around by recognizing his face. Pretty cool and I'm excited to play around with the gocv package. I cloned it during the conference and was able to get the samples running without any hassle. They've done a great job!
Sean Allen from Wallaroo Labs made a surprise appearance to talk about CGO. It was a surprise to me, at least. Wallaroo Labs has been on my radar for a bit because of their choice of programming language: pony. Pony is a relatively new programming language focused around the actor model for safe concurrency and high performance. I've been meaning to give it a shot and so was excited to hear from Sean. His experiences with Go were around using CGO to call Go code from C. Certainly sounds like a pain and not something I would want to tackle anytime soon. It's also surprisingly NOT performant, due to each call to the Go environment requiring a full instantiation and teardown. Better to use Go primarily and call C code if needed.
Kevin Burke gave a great talk about becoming a Go contributor. I found it both inspiring and informative. He offered suggestions on how anyone can contribute and what you can do to make sure your contributions are useful. It makes me want to get more involved in the open source community and contribute some pull requests!
There were many more fantastic talks and I highly recommend you take a chance to peruse them. The official liveblog can be found here, which for now has all the most recent Gophercon 2018 talks available to read. One of the best parts of the whole conference though, was when they announced that next year Gophercon will be in sunny San Diego. Yay!