Cockroach Labs supports the professional and personal development of employees through initiatives such as Learning is Good. I recently took advantage of the Learning is Good program to attend GopherCon 2019 in San Diego, CA, and I wanted to highlight a couple of talks that stood out.
GopherCon is an annual conference about the Go programming language. Given that we use Go extensively here at Cockroach Labs, going to GopherCon seemed like a good way to meet other Go users and possibly learn about how to better use it in my day-to-day.
The most important message of this talk for me was that the Go team considers it time to take responsibility for Go developer tools. This means taking ownership of the current widely-used tools, but also offering an interface to more easily write these kinds of tools. This is something that one of our engineers, Matt Jibson, has recently taken advantage of to rewrite some of our code linters. I found that this talk, coupled with mentions of go modules and module proxy servers in other talks, served as an example of how Go is maturing.
This was a talk where the author of the avo x86 generation tool walked through an example of speeding up a vector dot product computation by generating x86 vector instructions. Avo is a tool that makes it easier to write x86 assembly by offering a layer of abstraction on top of writing x86 yourself. Since I work on the SQL Execution team and we’re implementing a vectorized execution engine (learn more here and here), this talk was an introduction to a tool that could prove to be invaluable down the line.
Some of the most engaging presentations are live coding tutorials. In this one, Dave Cheney, an open source contributor for the Go programming language, used CPU and memory profiling to improve the performance of a word counting program. He also used the execution trace tool to analyze and improve the parallelism of a Mandelbrot generator. I had used the profiling tools before but found the execution trace tool too complicated and under-documented to use effectively. This served as a useful introduction to the execution trace tool and a glimpse at how powerful it can be in certain cases.
In addition to these, there were talks about the future of Go, a proposal for the addition of generics and a very interesting deep dive into diagnosing high CPU usage in a video-streaming server.
Overall, I found the GopherCon experience fun and extremely valuable. I discovered new tools, learned how to use the ones I knew better, and increased my awareness of the Go landscape by getting a better understanding of the future of the language and learning about other interesting production use-cases. As a result, I believe that attending GopherCon has made me a better engineer. I’m grateful that Cockroach Labs supports learning and development this way and will be on the lookout for more opportunities to use Learning is Good!