The Go community is growing by leaps and bounds: a fact borne out by the 2017 TIOBE programming language popularity index, which shows Go moving up to tenth place from last year’s 55th place.
Further proof of Go’s rapid ascent was evident to those who attended the recent GopherCon in Denver, CO. Imagine hanging out with 1,500 of your fellow Gophers, many of whom traveled great distances to learn from the Go experts and each other.
The Pendo backend engineering team attended this year’s event in force. We love Go and use it to process hundreds of millions of data points a day, along with querying and summarizing that data in innumerable ways. Pendo is a 100% Go shop on the backend, no legacy code (we’ve been using Go since version 1.2). In addition to learning the latest Go tips and tricks, the team pitched in to help our recruiting manager answer questions about Pendo and our backend development opportunities.
GopherCon bills itself as the “largest Go conference in the world”, and that certainly seemed to be the case. Keynotes and tutorial sessions were packed to capacity. Some of the sessions were standing room only.
Conference presentations varied from down-in-the-weeds talks about Go under the hood, to testing strategies, package management, the future of Go, and many other topics. With this depth of quality content, there was truly something for any Gopher.
One of my favorite talks was Kavya Joshi’s keynote on Understanding Channels. As the Pendo backend uses channels heavily, I have had the opportunity to develop a solid base of knowledge. Even so, her talk was illuminating. Channels are inherently interesting. They are goroutine-safe, store and pass values between goroutines, provide FIFO semantics, and can cause goroutines to block and unblock.
Did you know, for example, that goroutines and channels work together via a carefully choreographed dance between the Go runtime scheduler (goroutines are user-space threads created and managed by the Go runtime, not the OS) and the hchan struct? This struct stores waiting senders and receivers, thereby informing the scheduler of what work still needs to be done.
Another meaty talk was Keith Randall’s presentation Generating Better Machine Code. Keith works on the Go compiler so you are getting valuable insights from a true Go expert. His efforts to improve the quality of generated code in Go 1.8 benefit everyone.
The arcane details of how Keith utilizes advanced compiler optimizations such as Static Single Assignment may go over the head of most Gophers (they are elaborated on in his presentation), but the results are amazing. Go 1.8 is, on average, 20% faster on Go 1.7 benchmarks with an 18% reduction in code size. Some workloads have shown improvements of up to 50%. If you haven’t yet put Go 1.8 on your radar, you certainly should.
Those who missed GopherCon may not have realized the importance of upgrading to Go 1.8, or how best to use channels, or how to do functional programming in Go, or a bunch of other really cool topics. If you missed out on this year’s incredible GopherCon, there are many ways you can catch up. All of the talks were recorded and are freely available on YouTube. As well, if you’re local to the Raleigh/ Durham area, be sure to check out the Triangle Golang Meetup Group. We hosted the last meeting right here at the Pendo offices with an engaging lightning round.
Hopefully the Pendo team will see you at the main event next year for an even bigger and better GopherCon.
If you know your Go inside and out, and you want an interesting challenge, find where you fit on our engineering team.