Gophercon, Golang, and Colorado
I am grateful to have had PlanGrid sponsor my flight, stay, and ticket to attend this year’s Gophercon. I knew little about Go and had not even seen a line of code. I was curious, looking forward to learning something new and building something useful.
I’d recommend three speakers that stood out for their content, polish, and execution.
Kavya Joshi kicked of Gophercon by talking about the Go scheduler. What most stood out to me was her ability to break down a large, complex topic into a simple presentation. She also introduced us to the Go lingo. Neither of these were familiar to me beforehand.
Tess Rinearson got on the main stage to talk about macarons Macaroons. Macaroons is a library implemented in Go as described in the paper “Macaroons: Cookies with Contextual Caveats for Decentralized Authorization in the Cloud”. Tess talks about her experience at Chain and their journey to adopting the Macaroons library. She did a great job building up from simple concepts like authorization and authentication to the Stanford paper. Meanwhile, she was showing you code to give you a glimpse into the implementation. She also shared with us the company’s comprehensive retrospective. I appreciated her willingness to admit they’d made a mistake in adopting the new technology.
Kelsey Hightower got on the main stage to talk about Serverless. He was funny, charismatic and knowledgeable. It was definitely one of the most entertaining talks, filled with humor and live demos. He did a decent job explaining and introducing a hot topic in the community while being informative and hilarious.
As a beginner, I didn’t find the tutorials relevant and engaging enough to learn from. Instead, I decided to start building something in Go. I built a University of Waterloo interns resume parser. It extracts the students’ grade average and their internships ratings from a Waterloo generated PDF file. I used to do this by hand, and it would take me about an hour for 100 applications, which isn’t uncommon. This doesn’t completely automate resume screening for interns. It does help filter a large subset of students based on their previous work performance.
As this was my first time using a typed, compiled language so here are a few of my takeaways:
- I am blown away by how easy it is to get started.
brew install go, and I was halfway there. Aren Patel showed me how to install packages and suggested a couple of atom extensions, and that was all the setup I needed. I’m not sure I’ll ever forget spending many hours getting my Ruby on Rails environment set up five years ago. Go’s syntax resembles JavaScript, so I was able to start writing my program within the first 30 mins. - Types were a pain in the ass because I didn’t have a habit of using them. It also didn’t help that I was constantly regexing strings from a PDF file. Then convert the data to their proper types to only have to convert them back to strings when exporting to CSV.
- Seeing compilation type errors in Atom when saving was awesome. I’ve caught so many of my mistakes this way, and I didn’t even have to alt-tab to run the program.
- Handling programmatic errors in Go was tedious. It seems to be a known problem, and the Go team is currently accepting feedback on their error handling proposal. This looks to reduce some of the error handling pain points that I’ve experienced.
Another highlight of the trip was having the opportunity to explore Colorado. There we experienced beautiful views and I had my second chance to try downhill mountain biking. If you aren’t familiar with the sport, imagine bolting down the hill. Narrowly missing trees on loose gravel and with every eye blink — you see a different part of the forest. I didn’t come out unbruised this time when I attempted a ramp on my last run of the day.


All in all, it was a fantastic week of aspiring views, learning, utilizing and adrenaline.
P.S. I’ll update the article with links to the talks once Gophercon team publishes the videos.
