At the end of April, Brian and I took a trip to scenic Denver, CO to represent clypd at the first-ever GopherCon. The list of talks was absolutely incredible, including many of the members of the Go team and representatives from companies using Go in a variety of interesting ways. We were excited for an opportunity to meet members of the burgeoning Go community (that it provided an excuse to check out the numerous craft breweries that call Denver their home was a nice bonus).
The conference exceeded expectations on all fronts. With over 700 gophers in attendance, the conference was an awesome opportunity to learn about all the cool ways individuals and organizations are using Go. The conference was a single track, which meant we didn’t have to miss any of the fascinating talks. Everything went off on schedule without a single technical flaw or miscommunication. Props to the primary organizers, Eric St. Martin and Brian Ketelsen, as well as an army of volunteers for pulling off this amazing feat of coordination.
As I mentioned, the conference was a single track and filled with really thought provoking talks. The slides from all of the talks can be found here, but I’d like to summarize some that really resonated with us:
Rob Pike opened the conference with an incredible look at the history of Go. He began with a look at the very first Hello World from a 1972 B tutorial, and worked his way up through the design of Go; at each iteration showing hello world and how their design decisions affected this simplest of programs. This talk was a fascinating look at the process of designing Go and the level of thought that went into the language specification.
Derrick Collison’s talk on optimizing high-performance systems in Go was inspiring. He took a deep look into his NATS project and how he managed to improve from 150 thousand messages per second in his ruby implementation to ~500 thousand using Go, then optimizing to ~6 million requests per second(!). This talk was very insightful about some lower-level tools available in Go and was particularly interesting to us given our own path from Ruby to Go.
Kelsey Hightower, along with being potentially the most entertaining MC in the history of tech conferences, gave an awesome talk on Go for Sysadmins. He walked through an example in which he built a CoreOS iPXE Server (running a version from his slides was a nice touch). The talk was a great example of the versatility of Go, showing that it is just as viable for creating robust deployment scripts as it is for large scale server infrastructure.
Brad Fitzpatrick’s talk on his Camlistore project was an awesome look into a larger-scale project using Go. The talk touched on a ton of interesting issues he ran into building such a large project on a young language (Camlistore started in 2010). As he encountered issues he showed how he was able to overcome these issues by contributing back to the standard library.
Peter Bourgon’s insights into SoundCloud’s best practices for Go in production was an incredibly relevant talk for us here at clypd. He covered a ton of topics, from formatting and style to deployment. SoundCloud has decided to use the standard library and has reached many of the same conclusions on tooling that we have at clypd. We also walked away with new patterns for our integration tests and plans for handling our dependencies in a much more controlled manner, so this talk was a real winner for us.
Inside the Gopher Studio – This Go team panel discussion was an unexpected treat – we got an insightful and often hilarious Q&A with Rob Pike, Andrew Gerrand, Brad Fitzpatrick, and Robert Griesemer. A ton of interesting snippets came out of this – definitely keep an eye out for the video when it gets posted. My personal favorite was the discussion of the ignored keywords in golang’s lexer. Makes for some highly legible code.
The closing keynote from Andrew Gerrand really struck a chord with me as a newbie Gopher coming from Ruby. Andrew covered a lot of the hurdles that people face when switching to Go. His initial difficulties with structuring programs using interfaces, the accessibility of concurrency using channels, the transparency of Go’s syntax were all very familiar to me. And the realization that these differences from other languages were very much purposeful design decisions is an important one. I highly recommend his slides to anyone new to Go or interested in learning more about the language.
Andrew’s closing keynote really drove home what emerged as a theme of the conference: Embrace Simplicity. This also conforms with the clypd experience with Go. While we need to expend a bit more energy up front in creating some of our back-end systems, the result is a much clearer, more robust, and most importantly scalable infrastructure.
The conference also offered a great opportunity to connect with some awesome people from the Go community. It was really nice to see a strong contingent from the Boston Go meetup. At the opening night party at the Wynkoop Brewing Company, as well as the closing pub crawl (River North & Breckenridge were the highlights), we talked to so many intelligent people. Shout out to Dave Cheney, the Digital Ocean team, the litl team, the SourceGraph guys, and of course the Go team for some inspiring conversation!
The tooling and community around Go has been incredible to work with so far, and GopherCon was a great opportunity to meet with the people working to improve the ecosystem even further. We’re excited to be a part of the Go community here at clypd—and we’re hiring if you’d like to be too.