Video Archive
GopherCon Videos
GopherCon UK 2021: Bryan Boreham - Go Large!
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?
Watch videoGopherCon UK 2021: Tiago Mendes - Co-ordinating data changes in distributed systems
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.
Watch videoGopherCon UK 2021: Sina Siadat - Building a small Language with Go for fun
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.
Watch videoGopherCon UK 2021: John Gregory - Who Goes There? - building a serverless Github auditor
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.
Watch videoGopherCon UK 2021: Nick Craig-Wood - Deadlocks: The Dark Side of Concurrency
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!
Watch videoGopherCon UK 2021: Adelina Simion - Using NATS
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.
Watch videoGopherCon UK 2021: Daniela Petruzalek - Building an Indie Game in GO
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.
Watch videoGopherCon UK 2021: Riya Dattani & Chris James - Acceptance Tests, BDD & GO
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.
Watch videoGopherCon UK 2021: Eleanor McHugh - Browser environments from a system programmer’s perspective
This talk contains a mix of Go and JavaScript, covering WebSocket and WebCrypto from experiments over the past year - possibly with some added IndexedDB.
Watch videoGopherCon UK 2021: Alex Ellis - Zero to OpenFaas in 60 months
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.
Watch videoGopherCon UK 2021: André Eriksson - Software development reimagined
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.
Watch videoGopherCon UK 2021: Eleni Fragkiadaki - Test coverage in Go, the whole package
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
Watch videoGopherCon UK 2021: Foivos Filippopoulos - Semaphore
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.
Watch videoGopherCon UK 2021: Bartłomiej Płotka - Optimizing Go for Clouds
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!
Watch videoGopherCon UK 2021: Stuart Murray - How Go powered our elastic search
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.
Watch videoGopherCon UK 2021: Chris Reeves - Instrumenting GO Applications
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.
Watch videoGopherCon UK 2021: Gergely Brautigam - Distributed Facial Recon
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.
Watch videoGopherCon UK 2021: Tom Camp - Creating a basic chat app
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, Tom 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.
Watch videoGopherCon UK 2021: Adam Hicks - Scaling using Go
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.
Watch video