GopherCon UK Retro

Adam Lewis
Kudos Engineering
Published in
6 min readSep 11, 2019
A stuffed toy gopher sits on a laptop during a conference talk.
Adam’s hard-won Gopher!

Adam and Alex recently attended this year’s GopherCon UK in London. GopherCon is a conference for users of the Go programming language, which we use extensively in our microservices at Kudos. Here they recount their experiences and thoughts on their first software engineering conference.

What was the most memorable thing you learnt? 💁‍♀️

Adam: I was most excited about Elias Naur’s talk Gio: Cross Platform GUI Programming (slides) about a brand new UI library for Go, Gio. I am a big fan of immediate mode design driven development of user interfaces, and I was filled with optimism and hope based on what I’d heard of the talk beforehand. I was not disappointed!

The talk was a live coding crash introduction into how easy it is to use the library to create a window, and to define responsive layouts via the flex-esque layout system. It is also entirely possible to easily build native binaries for multiple platforms, for any architecture which the Go compiler already supports. One thing I would say is that it is so brand new that there seems to be a lot of boilerplate to contend with, and layout code seems to get complex quickly!

Alex: In Daniela Petruzalek’s talk Fun with Pointers (slides), she shared the revelation that, while it might seem like the most efficient thing to do is to pass structs by reference to avoid copying, passing them by value is often faster. This is due to function argument values being stored in the stack, and benefiting from improved CPU caching due to data locality. And, as a nice bonus, your code becomes easier to reason about, as you’re reducing the amount of shared mutable state – win-win!

Was the conference well organised? 📋

Adam: The venue and their staff were very impressive with their skilful forward planning and rotation of the food and drinks. I experienced no issues at the beginning of the conference when signing in, which was the only time I had to directly interact with any of the conference staff. I was never unsure where to go, and I didn’t miss any talks due to getting lost!

Alex: It was my first ever conference, so I don’t have much to compare it to, but it seemed pretty smooth! Everything seemed to happen at the right time and in the right places.

What was the food like? 🍣

Adam: The breakfast, lunch and dinner bar served a wide selection of interesting food options. They did provide your standard vegetarian and meat options, and I tried them all. My favourite food was probably the fish option they had on the second day. It had some tasty steamed vegetables amid a slightly sticky sauce which went nicely with the lightly fried fish.

At some random point during the conference, pizza appeared on one side of the chill-out lounge. Word about this spread quickly, and the hungry pizza-loving patrons moved even faster. The one slice I managed to get my hands on was delicious, and was worth the struggle in the ever-growing scrum. It was all gone almost as fast as it had appeared.

Alex: The Eton Mess bar served up loads of weird and wonderful flavours throughout the conference. My favourite: the lemon meringue one, which was a truly impressive shade of luminous yellow.

I only heard vague rumours of pizza. I don’t believe it actually existed.

What session did you find most interesting? 😴

Adam: The most interesting talk was Daniel Martí’s Optimising Go Code Without A Blindfold (presentation summary). I was expecting it to be mostly various easy-to-Google instructions for utilising the brilliant Go profiling tools, which are shipped as standard. However, it did actually include various tricks and general advice when profiling your code which aren’t immediately obvious, like force limiting your CPU to prevent CPU burn from affecting your results as it inevitably climbs to borderline 100%.

Alex: Michael Matloob’s talk on analysis tools (slides and example code), which showed me how easy it is to write your own code analysis tools in Go. Definitely a good one to have in the tool-belt if it ever becomes necessary.

Did you talk to anyone? 💬

Adam: No, I was too busy wandering around wide starry-eyed at all of the interesting tools and products (some were free!) which the sponsors were peddling, as well as having a go at the various arcade games in the chill-out lounge to actually stop and remember to try and network with people. There’s always… next time?

Alex: The talks were quite rapid-fire, so it was a challenge, but I did manage to chat to a few other developers – just getting a chance to chat, and hear their thoughts on the conference and software development more widely was great!

What was the best bit of swag? 🏴‍☠️

Adam: I did collect some stickers and a t-shirt or two which I confidently stashed in my conference-issued paper bag; however, during my rush for some pizza, I lost my swag bag in the crowd! Luckily I had the foresight to move my most loved new t-shirt to my backpack beforehand.

Alex: Bright yellow socks from Elastic! They’re nice and comfy, and I get genuinely excited whenever anybody gives me socks.

Did you win any prizes? 🎁

Adam: I participated in a coding challenge, which I sadly did not win, but I was given a long sought-after gopher plush (they always seem to be sold out on the Go store, or a bit too dear), and a nice cap adorned with the Curve company logo for taking part. So a free toy and apparel for me and some free advertising for them, win-win!

I might have won, if I’d realised that of course you’re allowed to Google how to do things during the exercise. I must have spent/wasted at least 10 minutes of my provisioned 15 minutes per exercise desperately trying to correctly recall how to remove items from a slice!

Alex: No. Bah humbug.

What was the most disappointing experience you had? 😔

Adam: I probably shouldn’t have excitedly turned up to Experimenting with Golang and WebAssembly expecting to learn about some amazing tricks or wacky applications for Go and WebAssembly, only to find that I had already apparently knew everything that was covered. It was more like just “How to use WebAssembly from Go 101” rather than “Experimenting…”. The difficulty level of the talk was set to “All”, so I had no way of realising beforehand.

Alex: It was hard to know before a talk what sort of level it would be pitched at. I arrived at Advanced Testing Techniques keen to learn one weird trick to make our Go tests better, but discovered that we’re already using advanced testing techniques. (Or perhaps there’s just no magic wand that makes tests easy.)

What did you enjoy the most? 🤘

Adam: I enjoyed seeing such a large number of budding Gophers. It helped assure me that there is indeed a pretty big and growing professional uptake of Go for personal and commercial projects, and at Kudos we’re not completely niche and crazy for using it. Everyone seemed happy to be there and the atmosphere was definitely fun and friendly. It had good vibes, man!

Alex: I’m a bit of a generalist by nature, so I liked the ability to learn about a huge variety of things in a very short space of time. I enjoyed being able to jump between sessions and tracks just because something sounded interesting. Now I’ve got a big list of things to research further!

Do you want to go to another conference? And any ideas which? 🌈

Adam: Yeah, I enjoyed GopherCon. I think next time, I’d probably like to go to an even bigger conference that maybe has various alternative things going on, with talks, but maybe a wider selection of practical sessions to really get stuck in and explore something new in a group. Maybe not even a programming language–specific conference!

Alex: Yes! I’d like to attend a conference with less of a focus on a single language, so I can (with a little luck) discover interesting technologies and approaches that would be useful to us here at Kudos.

If all this sounds interesting to you, why not consider joining Kudos?

--

--