Schedule

Our talks and speakers

Wednesday 21st August 2019
Workshop Day

GopherCon UK 2019 is pleased to bring to you two options for a full day of training on Wednesday, 21st August 2019, a day before the conference.

All course options are a full day (9am-5pm) of hands on immersive training with top professional trainers. Tickets include breakfast, lunch and coffee breaks. Please bring your laptop; power and wifi will be available.

**Please Note - an additional ticket is required to attend the workshop day.

08.00 The Foyer & King George
The Foyer & King George Registration and Refreshments

Please bring a copy of your ticket either printed or on a mobile device.

09.00 Lower Sugar Room Queen Charlotte
Lower Sugar Room Workshop I GopherCon UK: Daily Go Speaker: Mark Bates Level: Beginner 🖐Hands-on Session

Go is a modern programming language with a heavy focus on developer productivity, scalability, and speed. Whether you're a recent grad or an industry veteran, there's no better time to learn the core concepts of the Go programming language. This course introduces language fundamentals, such as primitives, language structure, design, and concurrency. If you have little or no experience with Go and want to jumpstart your knowledge, this course is for you.

More Info & Register

Queen Charlotte Workshop II GopherCon UK: Advanced Continued Speaker: Cory LaNou Level: Intermediate/Advanced 🖐Hands-on Session

Go is a modern programming language with a heavy focus on developer productivity, scalability, and speed. Concepts such as concurrent programming, testing, and performance testing were designed into the language from the beginning. If you want to learn about concurrent programming, or how to performance test and profile your code, this course is for you.

More Info & Register

10.30 King George
King George Refreshment Break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates.

11.00 Lower Sugar Room Queen Charlotte
Lower Sugar Room Workshop I GopherCon UK: Daily Go Continued Speaker: Mark Bates

Queen Charlotte Workshop II GopherCon UK: Advanced Continued Speaker: Cory LaNou

12.30 King George
King George Lunch

A 3 course lunch will be served in the exhibition hall where you will also be able to network with fellow delegates and sponsors.

13.30 Queen Charlotte Lower Sugar Room
Queen Charlotte Workshop I GopherCon UK: Daily Go Continued Speaker: Mark Bates

Lower Sugar Room Workshop II GopherCon UK: Advanced Continued Speaker: Cory LaNou

15.00 King George
King George Refreshment break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates.

15.30 Queen Charlotte Lower Sugar Room
Queen Charlotte Workshop I GopherCon UK: Daily Go Continued Speaker: Mark Bates

Lower Sugar Room Workshop II GopherCon UK: Advanced Continued Speaker: Cory LaNou

18.00 Finch's Pub
Finch's Pub Pre-Conference Social

The pre-conference social is a traditional style pubcon, open to anyone, where conference attendees and locals can meet up before the conference to network and socialise.
More details »

Thursday 22nd August 2019
Conference Day One

Thursday kicks off the main conference, where you will be able to attend a morning keynote followed by six talk slots throughout the day. During each talk slot you'll have the choice between three different tracks. There will be 3 cake & coffee breaks, a 3 course lunch, and rolling tea, coffee and soft drinks included. The day will then close with our mid-conference social.

08.00 The Foyer & King George
The Foyer & King George Registration and Refreshments

Please bring a copy of your ticket either printed or on a mobile device.

09.00 Porter Tun
Porter Tun Building Modules Discovery Speaker: Julie Qiu Level: All 💡Keynote Session

Today Go users are forced to visit a number of different sites to find packages. To solve this problem, the Go team is building a modules discovery site. In this talk, I will discuss how to go about discovering and evaluating modules for your application needs.

09.45 King George
King George Refreshment break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

10.30 Porter Tun Queen Charlotte King Vault
Porter Tun Going Serverless For Fun & Profit Speaker: Florin Pățan Level: All 👥Breakout Session

This talk looks at what are the options available for a Go developer to work in such environments and showcase going from scratch to a full project... See More

This talk looks at what are the options available for a Go developer to work in such environments and showcase going from scratch to a full project in less than 30 minutes. I will quickly explain the serverless concepts, the pros and cons for using it, and show examples of when serverless can be used to make a difference. After that, I will show various platforms for running serverless workloads, such as AWS Lambda or GCP Cloud Functions. With that knowledge, I will then show users how to build such serverless apps so that they can be ready to migrate from a platform to another with little code overhead. One last use-case I’ll present is a possible way to architect their apps for the future, where one could move pieces of logic from standard web servers to serverless infrastructure and vice-versa. If Internet is available (and working), and the Demo Gods are not acting up, this talk will feature live demos, otherwise material will be prepared for off-line scenarios." See Less
Queen Charlotte Implementing a Search Index Using Machine Learning in Go Speaker: David Hernandez Level: Intermediate 👥Breakout Session

Current production search solutions are not taking advantage of the latest research on NLP (Natural language processing) and Machine Learning. We a... See More

Current production search solutions are not taking advantage of the latest research on NLP (Natural language processing) and Machine Learning. We are going to explore how you can apply ML and NLP to build a search index using Go, and see how they can be applied to problems like finding the best answer to a question, or discovering similar documents. See Less
King Vault Contributor Workshop Level: All 🖐Hands-on Session

Love Go? Ever wanted to give something back? Come to the Go Contributor Workshop, where attendees will learn how to contribute to the Go project via Gerrit. To take part in the workshop, all you need is a laptop with Go, Git and Gerrit installed, and a basic understanding of Go. And, of course, an appetite for contributing to open source software! You are welcome to attend as much of the Contributor Workshop as you please, no sign-ups are required. More Info »

11.00
Room change

11.15 Porter Tun Queen Charlotte
Porter Tun Quicksilver How Cloudflare controls its network across the planet using Go Speaker: Ricardo Catalinas Jiménez Level: Intermediate 👥Breakout Session

CF runs its own distributed datastore that powers the control plane of a global infrastructure of 165 datacenters handling a large fraction of the ... See More

CF runs its own distributed datastore that powers the control plane of a global infrastructure of 165 datacenters handling a large fraction of the internet traffic. We’ll cover how we built this distributed system for low-latency, resilience and low operational overhead while serving 10^12 reqs/day. See Less
Queen Charlotte Robotics with Go is a Breeze Speaker: Gergely Brautigam Level: All 👥Breakout Session

Ever wanted to control a drone with Go? Of course, who wouldn’t want to do that?! With gobot that’s as easy as goblin pie. Here, let me show you ho... See More

Ever wanted to control a drone with Go? Of course, who wouldn’t want to do that?! With gobot that’s as easy as goblin pie. Here, let me show you how you can build your own face tracking drone. See Less
11.45
Room change

12.00 Porter Tun Queen Charlotte
Porter Tun Writing REST Services for the gRPC-curious Speaker: Johan Brandhorst Level: Intermediate 👥Breakout Session

Ever wished you could use gRPC for your new service instead of tired old JSON/REST? I will introduce and demo the gRPC-Gateway, which makes it poss... See More

Ever wished you could use gRPC for your new service instead of tired old JSON/REST? I will introduce and demo the gRPC-Gateway, which makes it possible to expose a JSON/REST interface while maintaining many of the benefits of using gRPC. It can even be used with browser clients! See Less
Queen Charlotte Go as a Scripting Language in Linux Speaker: Ignat Korchagin Level: All 👥Breakout Session

Do you like Go so much and use it in every software project? Do you think Go is a truly universal language? How about taking it to the next level a... See More

Do you like Go so much and use it in every software project? Do you think Go is a truly universal language? How about taking it to the next level and trying Go as a scripting language for your favourite Linux distribution? See Less
12.30 King George
King George Lunch

A 3 course lunch will be served in the exhibition hall where you will also be able to network with fellow delegates and sponsors.

13.30 Porter Tun Queen Charlotte King Vault
Porter Tun Advanced Testing Techniques Speaker: Alan Braithwaite Level: All 👥Breakout Session

When using the right patterns, testing in Go is more powerful than any other language. In this talk I present those patterns and show how they can ... See More

When using the right patterns, testing in Go is more powerful than any other language. In this talk I present those patterns and show how they can save massive amounts of time, energy and cognitive effort for everyday Go programmers. See Less
Queen Charlotte Lost in Transaction? Strategies to Manage Consistency in Distributed Systems Speaker: Bernd Rücker Level: Intermediate 👥Breakout Session

Consistency gets incredibly hard in today’s architectures as ACID transactions are not available in distributed systems. Most techies are not reall... See More

Consistency gets incredibly hard in today’s architectures as ACID transactions are not available in distributed systems. Most techies are not really aware of the complexity they face. I want to make this transparent but also discuss solution strategies/patterns to survive. See Less
King Vault Contributor Workshop Continued Level: All 🖐Hands-on Session

14.00
Room change

14.15 Porter Tun Queen Charlotte
Porter Tun Going Infinite Handling 1 Million Websocket Connections in Go Speaker: Eran Yanay Level: Advanced 👥Breakout Session

Go HTTP server provides great scalability, allocating a goroutine per connection, and reusing the efficient multiplexing and scheduling of the Go r... See More

Go HTTP server provides great scalability, allocating a goroutine per connection, and reusing the efficient multiplexing and scheduling of the Go runtime. While this technique is almost ideal for most scenarios, it comes with limited scale for websockets apps due to high memory consumption.

In this talk, we will show how we’ve implemented our own event loop mechanism to overcome those limitations and efficiently manage millions of concurrent connections while minimizing resource utilization. See Less
Queen Charlotte Energy Implications of Your Go code Speaker: Mahdi Jelodari Level: All 👥Breakout Session

Data movement accounts for almost 65% of energy usage in edge devices. It is important for every programmer to be aware of the energy aspect of the... See More

Data movement accounts for almost 65% of energy usage in edge devices. It is important for every programmer to be aware of the energy aspect of their code, particularly when it comes to devices with limited energy budget. See Less
14.45
Room change

15.00 Porter Tun Queen Charlotte
Porter Tun A Go Security Journey Speaker: Adrian Hesketh Level: Intermediate 👥Breakout Session

From mutexes to atomics - the real price of making this step, and how to make an informed choice about it. See More

From mutexes to atomics - the real price of making this step, and how to make an informed choice about it. See Less
Queen Charlotte Productionise any Application in Kubernetes Using Sidecar Containers Speaker: Davy Jones Level: All 👥Breakout Session

The sidecar pattern in Kubernetes allows you to add other functionality alongside an application for things like monitoring, TLS termination, circu... See More

The sidecar pattern in Kubernetes allows you to add other functionality alongside an application for things like monitoring, TLS termination, circuit breaking etc. This talk will demonstrate how to easily improve the security and reliability of a service that you don’t have access to the code base. See Less
15.30 King George
King George Refreshment break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

16:15 Porter Tun
Porter Tun Impossible Go! Speaker: Gautam Rege Level: All 💡Keynote Session

You know how to code in Go, don’t you? Let’s see! This talk shows Go snippets that seem easy, difficult, wrong or impossible. Through these different obfuscated Go constructs and code, we not only have fun but also learn about various nuances of Go to improve our Go coding skills and practices!

17.00 All Star Lanes - Brick Lane
All Star Lanes - Brick Lane Mid Conference Social

The conference social is open to all conference attendees and gives you a chance to relax and meet other delegates after a big day of learning. More details »

Friday 23rd August 2019
Conference Day Two

Friday continues with the second day of the main conference. Again, you will be able to attend a morning keynote followed by six talk slots throughout the day. During each talk slot you'll have the choice between three different tracks. There will be 3 cake & coffee breaks, a 3 course lunch, and rolling tea, coffee and soft drinks included. The conference will close on Friday with a final featured keynote, a prize raffle from our sponsors, and then on to the evening post-conference social.

08.00 The Foyer & King George
The Foyer & King George Registration and Refreshments

Please bring a copy of your ticket either printed or on a mobile device.

09.00 Porter Tun
Porter Tun Improving Dependencies for Everyone with Modules, Proxies and the Athens Project Speaker: Aaron Schlesinger Level: All 💡Keynote Session

Go 1.11 introduced modules, the new standard package management system for Go. It’s a massive step forward for the community, especially because we can build proxy servers instead of just using Github to fetch code. Athens is leading the way to solve some painful problems we’ve had for years.

09.45 The Foyer & King George
The Foyer & King George Refreshment break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

10.30 Porter Tun Queen Charlotte King Vault
Porter Tun Building a net.Conn Type From the Ground Up Speaker: Matt Layher Level: Intermediate 👥Breakout Session

Package net is a one-stop shop for Go networking with TCP or UDP, but there are many other interesting and unusual socket types in the wild. This t... See More

Package net is a one-stop shop for Go networking with TCP or UDP, but there are many other interesting and unusual socket types in the wild. This talk will demonstrate how to build a net.Conn type using the Linux system call interface, and show how that type can be used to serve SSH, HTTP, and more! See Less
Queen Charlotte Experimenting with Golang and Webassembly Speaker: Jorge Marin Level: All 👥Breakout Session

Ever wanted to know what WASM means? Do you wonder why we need WASM when we have Javascript? Do you dream of your Golang code running in the browse... See More

Ever wanted to know what WASM means? Do you wonder why we need WASM when we have Javascript? Do you dream of your Golang code running in the browser? This talk is an introduction to WebAssembly and Golang WebAssembly support. We will embark on a quest to run our favorite Golang programs in the browser to make the web a better place. See Less
King Vault How to do TDD, BDD, Mocking and Code Coverage In Go Speaker: Marc Coury Level: All 🖐Hands-on Session

Improve your programming skills in Golang and become more employable by learning TDD (Test Driven Development) and BDD (Behaviour Driven Development) best practices taught in this tutorial.

Go was developed with testing in mind, but for people new to Go, there is a lot to learn when it comes to writing tests and writing clean code. Programmers new to TDD and BDD will learn what these processes are and how to apply them; while attendees who already know about TDD and BDD will learn the subtleties often lost in translation so that they can become better programmers. Everyone attending will learn the specific skills they need in order to be able to write clean code in Go using TDD and BDD.

11.00
Room change

11.15 Porter Tun Queen Charlotte
Porter Tun Optimizing Go Code Without a Blindfold Speaker: Daniel Martí Level: Intermediate 👥Breakout Session

Making code faster is exciting, and benchmarks in Go make that easy to do! Not really. Optimizing a program can be complex and require careful cons... See More

Making code faster is exciting, and benchmarks in Go make that easy to do! Not really. Optimizing a program can be complex and require careful consideration to do properly. This talk will demonstrate techniques and tools which are a must for any performance aficionado. See Less
Queen Charlotte Using and Writing Go Analyses Speaker: Michael Matloob Level: Intermediate 👥Breakout Session

The Analysis API is used to write analyses (like those in go vet and go lint) that can help surface bugs and show code improvements to users. I’ll ... See More

The Analysis API is used to write analyses (like those in go vet and go lint) that can help surface bugs and show code improvements to users. I’ll show how to use and write analyses, and see their results, so you can help improve your code quality. See Less
11.45
Room change

12.00 Porter Tun Queen Charlotte
Porter Tun Lock-free Observations for Prometheus Histograms Speaker: Björn Rabenstein Level: Intermediate 👥Breakout Session

Implementing metrics in a client library for Prometheus comes with an interesting challenge... See More

Implementing metrics in a client library for Prometheus comes with an interesting challenge: Those metrics are typically updated a lot (like a counter that gets incremented each time a service processes a request) while reading their current value is relatively rare (each time the Prometheus server scrapes the instance, which happens a few times per minute). All those mutations and reads have to be concurrency-safe, but the otherwise quite handy RWMutex is only good for the opposite case: Many reads, few writes. Perhaps lock-free programming can help? A simple counter only needs updates of a single variable, and that’s perfectly handled by the atomic package . But alas! There are beasts like histograms, where you have to update the buckets, a total count of observations, and the sum of observations – all at the same time! It makes the Prometheus server very unhappy if the scrape delivers some of those values prior to and some after an observation. Let’s dive a bit deeper into atomic operations, the Go memory model, layout of structs in memory, and more, to finally come up with a sane (or rather insane) way to atomically change multiple values in an efficient way. Warning: This talks includes looking at code that probably runs in binaries near you! See Less
Queen Charlotte Write less (code), Generate More Speaker: Paul Jolly Level: Intermediate 👥Breakout Session

Want to write less code and let the machine do the work? In this talk, Paul will give an introduction to code generation in Go, show you how to wri... See More

Want to write less code and let the machine do the work? In this talk, Paul will give an introduction to code generation in Go, show you how to write a simple code generator, and share some tips on how to integrate code generation into your development workflow. See Less
12.00 King George
King George Lunch

A 3 course lunch will be served in the exhibition hall where you will also be able to network with fellow delegates and sponsors.

13.30 Porter Tun Queen Charlotte King Vault
Porter Tun Building APIs in Go - The Stack Without a Framework Speaker: Naga Sowjanya Sutherland Level: Beginner 👥Breakout Session

While there are many frameworks to build APIs in Go, each of them has extra overload in terms of the features available and the packages that are g... See More

While there are many frameworks to build APIs in Go, each of them has extra overload in terms of the features available and the packages that are going to be installed. In this talk the speaker talks about her experience in using different frameworks and walks you through a stack that could implement a DIY API solution for Go apps. See Less
Queen Charlotte From Chaos to Domain-Driven Design Speaker: Joan López de la Franca Beltran Level: Intermediate 👥Breakout Session

One of the most common questions that you have, when you are a junior Go developer, is “How can I structure my code to avoid chaos or terryfing cyc... See More

One of the most common questions that you have, when you are a junior Go developer, is “How can I structure my code to avoid chaos or terryfing cyclical dependencies?”. One of the most common answers in software engineering is around the layered architecture from Domain-Driven Design (DDD) which can help us on how to architecture our code. The talk will give to people on the room the keys to go from a chaotic Go code to a structured and clean code through DDD’s ins and outs. It won’t be only about DDD but about how to apply DDD-specific concepts in Go. Both strategical (Layered Architecture, Entities, Value Objects, Aggregates, etc) and tactical (Ubiquitous Language, Bounded Contexts, Shared Kernel) DDD’s points of view will be addressed but making the talk focus on the programming-related concepts. See Less
King Vault An Introduction to Functional Programming In Go Speaker: Eleanor McHugh Level: Beginner 🖐Hands-on Session

Fed up with Haskell heads looking down on your love of Go? Then come enjoy a practical, code-oriented introduction to writing Go programs in a functional style.

For several years I've been giving a talk on iteration in Go which touches upon higher-order functions and functional programming. Late last year I found myself wanting to go deeper into that aspect. I've been slowly writing a book on Go for several years and a slightly off-beat chapter on functional programming seemed like a good chance to play without having to be too serious, so I made that my Christmas project.

The purpose of this tutorial is to share what I've learned working on this material. The focus of the session will be on code and the examples will address some interesting low-level problems. There'll be plenty of code, a main narrative joining the dots, plenty of asides to look at interesting features, and at the end you'll hopefully feel equal parts shell-shocked and inspired to explore further.

All of the examples we'll cover will have tested solutions so bring along your laptop with an install of Go and your favourite editor so you can play along, and if you've experimented in the past with FP techniques in Go there'll be time for discussion and to swap ideas along the way.

14.00
Room change

14.15 Porter Tun Queen Charlotte
Porter Tun Fun With Pointers Speaker: Daniela Petruzalek 👥Breakout Session

Queen Charlotte Monolith Decomposition at Deliveroo Speaker: William Clarke Level: Beginner 👥Breakout Session

At Deliveroo, we had a scaling problem, which had some serious business implications. Luckily, Go came to the rescue! We picked Go up quickly and c... See More

At Deliveroo, we had a scaling problem, which had some serious business implications. Luckily, Go came to the rescue! We picked Go up quickly and created a super-scalable service. I want to explain why & how we created this service, what we learnt & why everything we build next will be using Go. See Less
14.45
Room change

15.00 Porter Tun Queen Charlotte
Porter Tun Tackling Contention The Monsters Inside the 'sync.Locker' Speaker: Roberto Clapis Level: Advanced 👥Breakout Session

Go is all about parallelism and concurrency, but they don’t come for free. This talk is about measuring their contention price, and being able to r... See More

Go is all about parallelism and concurrency, but they don’t come for free. This talk is about measuring their contention price, and being able to reduce it.

Some light will be shed on ways to measure the computational power wasted waiting. The trace/block and pprof tools and libraries will be explained with actionable examples.

After showing how to find contention issues, some handy ways to address them will be shown:
  • Splitting work: different ways to change common algorithms to not have a centralized state.
  • From channels to mutexes: where it makes sense to make the switch, and why.
  • From mutexes to atomics: the real price of making this step, and how to make an informed choice about it.
See Less
Queen Charlotte Dr. Jekyll and Mr. Hyde: Embracing the Dual Nature of State Speaker: Corver Roos Level: Intermediate 👥Breakout Session

You are halfway through processing some business logic in one of your micro services then boom! something fails. This may be due to network issues,... See More

You are halfway through processing some business logic in one of your micro services then boom! something fails. This may be due to network issues, or a 3rd party API being down or a deploy of your service. How do you consistently recover from that failure?

This talk explains Luno’s approach to building application logic that is easy to reason about and robust to failures. The following things will be covered:
  • Why good old mutable sql tables (where rows are inserted and later updated) are still a great way of storing and representing state.
  • How using state machines to control state updates (explicitly defining the life cycle of a row) can help you to understand your business logic.
  • When you couple a mutable table with an immutable event table (by inserting an event row for every update in the other table), you maintain a record of every change to your state.
  • If you then expose these immutable events as gRPC streams, you provide a way for any microservice to react to a change in any other.
  • How ensuring that if your event consumers are idempotent (able to process the same event twice) your business logic becomes robust to most failures.
  • And finally, if you then explicitly introduce regular failures in your application logic, you start becoming confident about recovering when an actual failure occurs.
  • See Less
15.30 The Foyer & King George
The Foyer & King George Refreshment break

Coffee, tea and snacks will be served in the exhibition hall where you will also be able to network with fellow delegates and sponsors.

16.00 Porter Tun
Porter Tun TBA 💡Keynote Session

17.00 King George and The Courtyard
King George and The Courtyard Post Conference Social

The conference social is open to all conference attendees and gives you a chance to relax and meet other delegates after a big day of learning. More details »

Stay up-to-date with GopherCon UK

Enter your email address to join the GopherCon UK mailing list and be the first to hear our latest news and announcements.