Schedule

Our talks and speakers

Monday 25th and Tuesday 26th October 2021

Monday and Tuesday are our main conference days.

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

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

09.00 Form3 Track
Form3 Track Go Large! Speaker: Bryan Boreham

As we approach the tenth anniversary of Go 1.0, Bryan Boreham looks at how Go is being used to build larger and larger systems. What works well at scale, how do we learn those approaches, and how do we lay the foundations for the next ten years?

09.30 King George
King George Refreshment break

Light refreshments will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

10.00 Form3 Track Cuvva Track
Form3 Track Coordinating data changes in distributed systems Speaker: Tiago Mendes Level: Intermediate

Changing data that affects multiple areas of a system is a relatively simple task in traditional monolithic systems with a centralised database, wh... See More

Changing data that affects multiple areas of a system is a relatively simple task in traditional monolithic systems with a centralised database, where we rely on database transactions to ensure the integrity of data. However, in microservice-based architecture things can get more complicated when a single request requires changes across multiple services - especially if data integrity and consistency is critical at all times (for example in insurance or banking applications).

How do we ensure that all changes were applied successfully to all services, particularly if we have an 'all-or-nothing' policy for these changes? How can we rollback if a failure does happen, in order to guarantee that the data stays consistent?

In this talk I'll walk through an approach to solve this problem, using Go examples to guide us. I'll first explain the nature of the problem, and why it can be quite complex. I'll then explain the Saga pattern which can be used to safely implement such changes." See Less
Cuvva Track Building a small language with Go for fun Speaker: Sina Siadat Level: Intermediate

This talk is about language design decisions, parsing, static analysis, and code generation. I will go through my initial motivation (sum types in ... See More

This talk is about language design decisions, parsing, static analysis, and code generation. I will go through my initial motivation (sum types in Go), demonstrate my journey of learning about parsing algorithms, writing a top-down parser using EBNF grammar (and eventually throwing it all away!), writing a static checker, and generating Go code. See Less
11.00
Room change

11.15 Form3 Track Cuvva Track
Form3 Track Who Goes There? - building a serverless Github auditor Speaker: John Gregory Level: Intermediate

Who Goes There is a serverless application, developed using Go, AWS Lambda, GraphQL and the Serverless Framework, designed to help you keep track o... See More

Who Goes There is a serverless application, developed using Go, AWS Lambda, GraphQL and the Serverless Framework, designed to help you keep track of your organisation members. Inspired by gu-who from The Guardian, but designed to be more flexible, cloud native (fitting as far as possible into free tiers!) and Gophery!

As with many companies, the use of Github at the Office for National Statistics has exploded in the last few years from a few users and repos to hundreds. Keeping track of who should be there, especially as they move between teams, and ensuring things like MFA compliance have proven a challenge, even with Github enterprise tools.

This talk will take you through the design and build of the application; the whys, the hows, what I learnt along the way and how you can use the app to keep track of your own organisation on Github. See Less
Cuvva Track Deadlocks: The Dark Side of Concurrency Speaker: Nick Craig-Wood Level: Intermediate

Go makes it so easy to write concurrent programs that sooner or later you will run into a deadlock. A deadlock is where your program (or part of it... See More

Go makes it so easy to write concurrent programs that sooner or later you will run into a deadlock. A deadlock is where your program (or part of it) just stops working for mysterious reasons.

This talk will explain what deadlocks are and why the Go deadlock detector isn't very useful in real world programs.

Deadlocks can be very difficult to find and fix and this talk will give lots of tips on how to figure out why your program deadlocked and how to fix it and avoid deadlocks in the future.

You will need an understanding of go routines, locking (sync.Mutex) and channels to get the most out of this talk. No previous deadlock experience required! See Less
12.15 King George
King George Lunch

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

13.30 Form3 Track Cuvva Track
Form3 Track Using NATS for multi cloud event streaming Speaker: Adelina Simion Level: Advanced

NATS is a lightweight, easy to deploy, high performance messaging system that builds upon cloud native infrastructure concepts. It is also open sou... See More

NATS is a lightweight, easy to deploy, high performance messaging system that builds upon cloud native infrastructure concepts. It is also open source and written in Go. Form3 has been successfully using NATS for event streaming on our multi cloud architecture, which powers payments for Financial Institutions at high volumes. This talk will share our knowledge and usage of this cool technology with the tech community.

Broadly, our presentation will consist of:
• A high-level overview of Form3’s architecture: a broad understanding of our systems will set the scene for the usage of NATS in our production systems
• An introduction to fundamental concepts of NATS and JetStream: it is important to understand how streams, consumers and server configuration work in NATS. We will highlight some great features of NATS and compare NATS with other technologies
• Implementation details and lessons learned: once we have a good understanding of the main features of NATS, we can investigate some implementation details of NATS in Go, as well as discussing where we see the NATS project going in the future at Form3


This talk will be useful to anyone in the audience already using or interested in learning about event streaming in Go. Join us to learn more about the power of NATS!” See Less
Cuvva Track Building an Indie Game in Go Speaker: Daniela Petruzalek Level: All

Go is an awesome systems language and we all know it. But how good is it for developing your own indie games? In a market dominated by Unity and Un... See More

Go is an awesome systems language and we all know it. But how good is it for developing your own indie games? In a market dominated by Unity and Unreal, in this talk we will explore the feasibility of writing your own game in Go using Ebiten. The talk will be structured in a devlog format, where we will walk through the process of rebuilding an old 80’s card game called Travel Around the World (original: ‘Volta ao Mundo’ in Portuguese) from game design to a working prototype. By the end of this talk you will be exposed to: Ebiten basics, loading assets, handling graphics, game loop, testing, basic AI, player input and other related concepts. See Less
14.30
Room change

14.45 Form3 Track Cuvva Track
Form3 Track Acceptance tests, BDD and Go Speaker: Riya Dattani & Chris James

The tests we write (or lack of) have an impact on the way we work with the systems we develop on every day. It goes beyond even the structure of yo... See More

The tests we write (or lack of) have an impact on the way we work with the systems we develop on every day. It goes beyond even the structure of your code, it can have an impact with how you work with the wider business too.

In this talk, Riya Dattani and Chris James will explain how BDD, when applied properly can help you write better, more useful software, in a more efficient and methodical way. They will show a practical example in a Go project, and show that you apply this practice with plain Go code, no frameworks required. See Less
Cuvva Track Browser environments from a system programmer’s perspective Speaker: Eleanor McHugh

This talk contains a mix of Go and JavaScript, covering WebSocket and WebCrypto from experiments over the past year - possibly with some added Inde... See More

This talk contains a mix of Go and JavaScript, covering WebSocket and WebCrypto from experiments over the past year - possibly with some added IndexedDB. See Less
15.45 King George
King George Refreshment break

Light refreshments will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

16:15 Form3 Track
Form3 Track Zero to OpenFaaS in 60 months Speaker: Alex Ellis Level: All

Every once in a while someone comes into your life who makes a lasting impression. For OpenFaaS, there’ve now been 350 of those people, from all around the world each with individual stories and achievements to share. They all had a common interest: they wrote Go and believed that functions should be easy to use and portable. This is their story 5 years after it started.

Alex shares why he started the project, the highs and lows along the way from quitting his job, to going toe-to-toe with corporate giants. He’ll tell the story through the contributors, and community that helped build and shape the project which now has 28k GitHub Stars and dozens of end-user companies in production.

17.00 The King George
The King George 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 »

Tuesday 26th October 2021

Tuesday continues with the second day of the main conference. Again, you will be able to attend a morning keynote followed by four talk slots throughout the day. During each talk slot you'll have the choice between two 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 Tuesday with a final featured keynote and a prize raffle from our sponsors.

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

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

09.00 Form3 Track
Form3 Track Software development reimagined Speaker: André Eriksson Level: All

Why is it that after 50+ years our primary tool is still a simple text editor?

We can do so much better. In this talk I present my vision for a much more holistic developer experience, that deeply understands the application we’re building, and supports us in this endeavour.

09.30 The Brewery Foyer & King George
The Brewery Foyer & King George Refreshment break

Light refreshments will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

10.00 Form3 Track Cuvva Track
Form3 Track Test coverage in Go, the whole package Speaker: Eleni Fragkiadaki Level: Intermediate

A test suite for any package is explicitly testing different code paths and identifies how your code works using different inputs. But does it mana... See More

A test suite for any package is explicitly testing different code paths and identifies how your code works using different inputs. But does it manage to cover all the code branches that exist in your code? How about all the different functions?

One way to answer these questions is to thoroughly look at all the tests written (by you and your colleagues) and understand if there are any gaps. The easiest way to do that though is to use a tool, and in the case of Go this tool is called cover.

In this talk we are going to dive into how the Go cover tool works, the structure of the Go coverage profile and what information it provides for the statements of your code and we are going to examine how our test code behaves when working with multiple sub-packages. We are going to walk through the existing behavior of the tool and generate aggregates for our packages taking into account sub-packages with and without tests. See Less
Cuvva Track Semaphore: A modular and non intrusive framework for cross cluster communication Speaker: Foivos Filippopoulos Level: All

Semaphore is a light framework that provides simple, secure communication between Deployments that run in different Kubernetes clusters, without re... See More

Semaphore is a light framework that provides simple, secure communication between Deployments that run in different Kubernetes clusters, without requiring any changes to the applications code or deployment manifests. In order to be as small, lightweight, and safe as possible, the components are open source and written in Go using the respective Kubernetes and Calico client implementations.

This presentation will cover the functionality of the 3 individual operators involved, touching the topics of:
- Implementing a WireGuard peer manager based on Kubernetes Nodes' annotations in order to route and encrypt traffic to remote Pod subnets
- Running an operator to mirror remote endpoints into local Kubernetes Services
- Watching remote clusters workload to implement local firewall rules based on Kubernetes NetworkPolicies mechanism

Along with the presentation of the above functionality, there will be a quick demonstration of the tools in action. This talk could be useful to Kubernetes users among the audience, particularly interested in pairing remote clusters. See Less
11.00
Room change

11.15 Form3 Track Cuvva Track
Form3 Track Optimizing Go for Clouds: Practical Introduction! Speaker: Bartlomiej Plotka Level: All

Go language has become a default choice for writing maintainable and portable backend applications. It's easy to work with, simple but also can be ... See More

Go language has become a default choice for writing maintainable and portable backend applications. It's easy to work with, simple but also can be very efficient. Unfortunately, making Go code performant requires deeper knowledge. In some cases, it also compromises readability.

Fear not! In this talk, you will learn how to approach performance topics for cloud applications written in Go, how to gather meaningful data, decide and improve your code to meet your backend SLA. All without sacrificing important properties for which we all love Go: simplicity and readability!

Agenda:
  • How to approach optimizing from the practical point of view. How to keep optimizations readable
  • Measuring performance e.g. Micro versus e2e benchmarks
  • Optimizing; Typical pitfalls
  • Useful tools.
See Less
Cuvva Track How Go powered our use of ElasticSearch to increase the performance of our APIs Speaker: Stuart Murray

As our customer workloads continue to increase, we find ourselves engaging with a number of interesting scaling challenges. One such challenge was ... See More

As our customer workloads continue to increase, we find ourselves engaging with a number of interesting scaling challenges. One such challenge was one of our Postgres database instances, which had become a bottleneck for running high operational workloads whilst also being subjected to certain other workloads.

We considered a number of solutions and determined that Elasticsearch would help us to remove this bottleneck. However, we needed a solution to listen to the events from our messaging queues and to create and update the relevant documents in Elasticsearch in order to make this work. Enter Go!

We built a Go microservice quickly and were able to efficiently take it to production, meaning that the project was a great success. We'll talk about:

* How we structured the solution to maximise maintainability and ease of rapid development;
* The strengths of Go that were really compelling to our use case; and
* Some of the challenges we overcame along the way.

This talk will be particularly interesting for people who are looking to efficiently implement architectural interventions in Go (including introducing Go into a wider technical environment), and for those who are starting new projects, but there should be something for most people. See Less
12.15 King George
King George Lunch

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

13.30 Form3 Track Cuvva Track
Form3 Track Instrumenting Go applications with Open Telemetry Speaker: Chris Reeves Level: Intermediate

Every software company talks about needing to know how their system is performing. This is especially true for Banked, where we deal with thousands... See More

Every software company talks about needing to know how their system is performing. This is especially true for Banked, where we deal with thousands of payment transactions across different platforms every day.

It became clear that we needed a vendor-agnostic way to instrument our system - to have reliable tracing, metrics and deployment processes, specifically around unhappy paths. Open Telemetry is an open-sourced CNCF observability framework that provides an open standard and language agnostic libraries to do just that.

In this talk, we’ll show that introducing observability is not as daunting as it seems! We'll walk through how simple it is to get started with Open Telemetry, how tracing and metrics work and the patterns you can use to help make automatic instrumentation easy (such as errors) and how this approach would work for event driven systems.

Expect a lot of demos and code snippets as we discuss deployment options such as using the Open Telemetry Collector to send traces and metrics to multiple third parties such as AWS X-Ray, Datadog or Grafana. See Less
Cuvva Track Building radically better insurance with Go Speaker: Tiago Mendes Level: All

At Cuvva we’re not only trying to make insurance radically better - we want that motto to be reflected in our engineering practices too!

I... See More

At Cuvva we’re not only trying to make insurance radically better - we want that motto to be reflected in our engineering practices too!

In this talk I will show you what makes engineering at Cuvva interesting - and challenging! We will talk about some of the internal tools we developed, our most challenging projects, and some of our engineering initiatives. See Less
14.30
Room change

14.45 Form3 Track Cuvva Track
Form3 Track Distributed Face-recognition running on Kubernetes made easy with Go Speaker: Gergely Brautigam

Suddenly, you hear a bell chime and Alexa calls you saying: “Ellen arrived for the 10 o’clock. Should I let her in?”. “Yes please” - you answer. Yo... See More

Suddenly, you hear a bell chime and Alexa calls you saying: “Ellen arrived for the 10 o’clock. Should I let her in?”. “Yes please” - you answer. You need nothing more just a cluster, a camera, and some api push, and of course, your favourite language.
With Kubernetes taking over the internet and hosting of applications and Go making it trivial to write a service, package it and deploy it, we haven an opportunity to combine these two like peanut butter & jelly. Put some glue in between, like NSQ and you can have a fully distributed independently working application stack. What should it do you wonder? Well, I always like OCR and image processing, so let’s throw some face recognition in there. Now, hook this up to your apartment or office, and you’ll get a nice system which can tell you who’s at the door based on people who you already know. And all you need is a little cluster, some Go, some Python, a tiny amount of docker and a camera. See Less
Cuvva Track Creating a basic chat application using Pub/Sub in Go Speaker: Thomas Camp

Golang has been designed from the ground up around scalability and concurrency. Pub/Sub, a common messaging paradigm, is not only also designed aro... See More

Golang has been designed from the ground up around scalability and concurrency. Pub/Sub, a common messaging paradigm, is not only also designed around these concepts, but actually mimicks one of Golang's core concepts; channels.
In this talk, I will be giving an introduction to the concepts of Pub/Sub, its relevance to common Golang use-cases, and then demonstrating how one could create a basic chat application using it in Golang. See Less
15.45 The Brewery Foyer & King George
The Brewery Foyer & King George Refreshment break

Light refreshments will be served in the exhibition hall where you will also be able to network with fellow delegates and our sponsors.

16.15 Form3 Track
Form3 Track Scaling Using Go Speaker: Adam Hicks Level: All

In this talk I'll be looking back at Luno's growth over the past 8 years and how leveraging Go has made that possible. I will be looking at the design of Go and how it has empowered our team of engineers to take on bigger challenges together. Diving into a couple of specific use cases that have been particularly useful for us. And looking forward to get excited about the future of Go.

17.00
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 »

Wednesday 27th October 2021

GopherCon UK 2021 is proud to work with Ardan Labs and Rawkode Academy to bring to you two options for a full day of training on Wednesday 27th October 2021, directly after the GopherCon UK conference.

08.30 Brewery Foyer & King George
Brewery Foyer & King George Registration and Refreshments

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

09.00 Queen Charlotte King Vault
Queen Charlotte Workshop - Advanced/intermediate Advanced Ultimate Go Speaker: William Kennedy

This class teaches how to use the profile and trace tooling in Go. We will use practical programs to find performance problems and based on what we find, refactor code to gain better performance.

Language Mechanics / Semantics Stacks / Heap Program Tracing Micro-optimizations Profiling Applications

More details or Buy tickets

King Vault Workshop - Intermediate Introduction to Kubernetes Speaker: David Flanagan

Kubernetes, the flagship project from the Cloud Native Foundation, has become the de-facto standard for running our container workloads.

Unfortunately, Kubernetes is a fast-moving, ever-evolving, sea of complexity. From Pods to Deployments, ConfigMaps to Secrets, and PersistantVolumeClaims to StatefulSets; this training will get you on-course.

In this full-day training class, David will walk you through a series of labs that will teach you everything you need to know to take your container based application and deploy it as a self-healing, redundant and resilient application on top of Kubernetes.

More details or Buy tickets

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.