Notes and thoughts from GopherCon 2015

GopherCon, the largest event in the world dedicated solely to the Go programming language, has been taking place in Denver this week. Software Engineer Pat Moroney checked in with a recap of the news and highlights from the conference, as well as some of his own thoughts. Take it away, P-Mo!

  • The Go community is very important to the success of Go as a language, and so they need everyone to be able to be a welcome part of this community. To this end, they are creating a Go Code of Conduct to help enable fruitful discussion and collaboration within the community.
  • Go Kit is a library that is meant to enable the creation of Microservices in Go. It provides some interfaces to tools that a microservice would need, including logging, metrics, rate limiting, service discovery, load balancing, request tracing, and circuit breaking.
  • Delve is a debugger for Go. Go is hard to debug with traditional tools because of the non-traditional way that Go handles scheduling of goroutines and stack allocation. Delve handles all these issues and tries to make it as simple as possible.
  • One presenter, Audrey Lim, is a former lawyer who decided she wanted to become a computer programmer. She looked at a few options for programming languages to learn, and settled on Go for its low barrier of entry and simplicity of the options. Her inspiring story highlights the benefits of Go, the quality of the documentation, and how the community enables growth.
  • tumblr_inline_nr6qrn313V1sdck2n_540In a technical but interesting talk, Rick Hudson (great manly name), described the new Garbage Collector, GC, in Go 1.5. This feature of Go allows programmers to ignore the concerns of freeing memory, but it creates latency in the application that can slow response times. The new GC is a concurrent collector. This means it runs while the application is running. This minimizes the time that the application is stopped in order to free up memory. This is very exciting as many programmers wouldn’t consider Go because it was a garbage collected language and they want/need real time response times. But now that is not a concern. Here’s an exciting graph that illustrates the improvements. The yellow dots are the new version, and lower is better, so this is quite amazing.
  • Parse, a company that was purchased by Facebook, has a large infrastructure using Go, and they have open-sourced many libraries that they have created in the process of rewriting their old Ruby API to Go.
  • Richard Fliam gave an interesting talk on best practices to avoid deadlocks and memory leaks in concurrent programs. One of the best tips is to diagram the communication of your processes and make sure you don’t have any cycles, rats’ nests, or god processes. Basically, try to ensure that your program acts as a pipeline and continues sending data forward.
  • Björn Rabenstein gave a great talk on Prometheus, which is a metrics monitoring solution by SoundCloud. He went very in depth about the client code for safely incrementing a counter. This allowed him to illustrate many different solutions to concurrent access to data and how to benchmark.
  • Kevin Cantrell went over various gotchas that can happen when using Go. This was a very informative talk, and since many of the architects of the language were in the audience, we were also able to learn that some of them have even been fixed in the newest 1.5 version.
  • The final talk was about the history of Go and the languages that contributed to its heritage.