GopherConAu 2023

Here we Go!


Wednesday 8th November
0800 Registration
0900 Workshops
1700 End

Conference Day 1

Thursday 9th November
Time Slot Speaker



Welcome & Acknowledgements

Go Testing By Example

Writing good tests is a critical part of software engineering that doesn't always get the attention it deserves. This talk will present strategies and concrete approaches you can use when writing your own programs, illustrated by some of the best tests in Go's own source code.

Russ Cox

Russ is the co-creator of the Go programming language. He currently leads the development of Go at Google.

How Go Made a Better Engineer Out of an ex-Barista

My journey into the tech world was a bit unconventional. I initially studied medicine and spent a decade working in the hospitality industry. However, I eventually made a career pivot into software engineering. What makes my story somewhat unusual is that Go was my very first language in a professional role. I'm excited to share my experiences and insights at the conference, where I'll discuss how Go has played a pivotal role in transforming my career.

Aysa Matueva

Aysa is a Senior Software Engineer at Culture Amp. She is a two-time a champion barista in Moscow, now living in Melbourne.



Constraining Complexity in the Generics Design

When Go added generics, it also added unions to interfaces. They let you specify a list of types, constraining a type parameter to be from that list. However, those types can not be interfaces with methods. I explain why that is. And what we might do about it.

Axel Wagner

Axel is a Senior Software Engineer at Infront Quant. Previously he has been a Site Reliability Engineer at Google Zürich for three years, after getting an M.Sc. in Mathematics from University of Heidelberg. Since 2013, Go has been his primary programming language and he is an active member of the community, both online and offline. He is passionate about Open Source, an avid chess player and is trying to read every Science Fiction and Fantasy book ever written.

WebAssembly with Go:
Powering the Web with Speed and Efficiency

The rapid evolution of web technologies brings forth a new paradigm: WebAssembly (Wasm). As a binary instruction format, WebAssembly bridges the gap between web applications and native code, unlocking a realm of possibilities for performance improvements and expanded feature sets. This talk delves into the fascinating synergy of WebAssembly and Go, a statically typed, compiled language known for its simplicity and efficiency. From the foundational concepts to hands-on applications, we'll explore how to harness the strengths of both WebAssembly and Go to craft faster, more efficient, and more powerful web applications.

Jyotsna Gupta

Jyotsna Gupta is an Open Source Enthusiast, previously worked as a Senior Software Engineer in Gojek, Bangalore. She is also involved with Mozilla Community since 2015 and volunteers to Mozilla in her free time as an Add-on Content Reviewer, Mozilla TechSpeaker & Mozilla Representative. She is a coder by profession and a Shuttler by passion. For her contributions to Mozilla, her name is also listed in about:credits and the credits page of every browser ever shipped by Mozilla.


Lunch Thursday

Elements of Gonum for Scientific Computing

In the realm of scientific computing, the efficiency, power, and adaptability of your tools can greatly influence the quality and speed of research. For those seeking to harness the capabilities of Go for data-intensive tasks, Gonum provides a robust foundation. In this talk, we will journey through the core elements of the Gonum library, shedding light on its potential for modern scientific computing.

Vladimir Chalupecky

Vladimir started working with Go in late 2014 when he submitted his first changes to the Gonum project. Over time, he's become one of the main contributors to the project, focusing mainly on packages for linear algebra and nonlinear optimization. With a PhD in mathematical engineering he's worked as a researcher in both academia and industry, as a project manager and most recently as a software engineer developing internal services in Go. Outside of work he spends time with his family, plays table tennis for fun, and works on Gonum.

The Go-to Language for AI:
Exploring Opportunities and Challenges

This session explores the unfolding potential of Go in AI, spotlighting pioneering ML/NLP frameworks and emerging LLM-oriented projects. Highlighting the shift towards compiled languages for more efficient AI solutions, Go emerges as a streamlined, high-performance choice. However, when juxtaposed against established frameworks or emerging stars written in C++ and Rust, which offer 'close to the metal' performance, Go faces challenges, particularly regarding raw performance on GPU. Despite these, Go’s unique strengths align well with the rising demand for local model execution, offering a strategic advantage to integrate AI capabilities into everyday projects. Through real-world scenarios, we’ll explore the pathway towards effective, local inference and single-executable deployment, positioning Go as a compelling contender in the evolving AI arena.

Matteo Grella

Matteo Grella leads the global artificial intelligence team at Crisis24. His experience spans AI projects in private companies, universities, and government agencies. Matteo’s research primarily centers on Natural Language Processing and associated Machine Learning models, which fuel his contributions to Open-Source projects and published academic papers. He holds a special interest in "archaic" languages such as Ada, Lisp, and Fortran, yet when it comes to production-ready, tested, and efficient solutions, Go is the way.

The Hacker's Guide to JWT Security

How to hijack a user account in a JWT app? How to exploit security vulnerabilities on the client-side, on the server-side, or in transport? In our live demos, you'll dive into these and other aspects of JWT security. JSON Web Token (JWT) is an open standard for securely transmitting information between parties as a JSON object. JWT is widely used in modern applications as a stateless authentication mechanism. Thus, it is important to understand JWT security risks, especially when broken authentication is among the most prominent security vulnerabilities according to the OWASP Top 10 list. This talk guides you through various security risks of JWT, including confidentiality problems, vulnerabilities in algorithms and libraries, token cracking, token sidejacking, and more. In live demos, you’ll learn how to hijack a user account exploiting common security vulnerabilities on the client-side, on the server-side, and in transport. You’ll also find out about common mistakes and vulnerabilities along with the best practices related to the implementation of JWT authentication and the usage of available JWT libraries in Go.

Patrycja Wegrzynowicz

Patrycja is a lead engineer at Form3, working on reliability and performance of UK payments. She is also the founder of Yon Labs, a startup focusing on automated tools for detection and refactoring of security vulnerabilities, performance anti-patterns, or cloud issues and providing consultancy in Java, C++, Go, and cloud technologies. Her interests focus on automated software engineering, mainly static and dynamic analysis techniques to support software verification, optimization, and deployment.



Implementing Event-driven Systems with Go

Discover the transformative power of event-driven systems in Go. This talk delves into the practical application of the transactional outbox design pattern and essential Go patterns. Learn how to implement robust, scalable event-driven systems in Go, enabling seamless asynchronous event processing.

Victoria Polishchuk

Victoria is a Software Engineer at Nine and has 5 years of experience in back-end and front-end development. She specialises in back-end development of Microservices and has been working with Go, RDS, GCP and AWS for over 3 years. Her interests range across a variety of industries, fields of technology and science. She loves sharing her passion for Go through mentoring university students and graduates

What's The Point? A Guide To Using Pointers Without Panicking

Puzzled by pointers? In her talk, Mirjam will explore how, and more importantly when, to use pointers without falling into one of their many pitfalls. If you're curious about why you can't deep-copy a struct containing slices, when you should use pointer receivers vs. value receivers, how much space you really are saving by using a pointer or just how to stop your code from panicking, you should pack your towel and hitch a ride!

Mirjam Uher

Mirjam, the Austrian-turned-Australian, is a Software Developer at Mantel Group. Formerly working in Foreign Policy, she embraced the unexpected pause of COVID lockdowns to teach herself programming. She first got a taste of Go when joining Mantel Group and has since championed the language across various projects. With a unique talent of breaking any application laid before her and a joy in puzzle-solving, she delves deeper into the realms of computer science with every day. Mirjam's journey makes her a passionate student and teacher, sharing her enthusiasm through meetups, presentations and as an instructor for a Go course.



Conference Day 2

Friday 10th November
Time Slot Speaker



Welcome & Acknowledgements

The Power of Bloom Filters:
Building a Cutting Edge Go Search Engine to Explore the World's Source

Learn how to use the humble bloom filter and Go to search the worlds source code! Discover how uses both to provide blazing fast search over 75 billion lines of code across 40 million projects by uniquely combining trigrams and bloom filters, all on a single dedicated machine.

Ben Boyter

Ben is a technical lead for Kablamo but at heart a codemonkey. He writes about various topics on his blog which occasionally makes the front of the orange site, as well as run as a side gig for fun. He likes writing code, walks on beach and getting caught in the rain. He hates eating raw tomato unless you prepare it somehow, and slices on a hamburger does not count as preparation.

Building a Beginner Programming Language with Go

In this talk, Julia will explain the motivation for writing a beginner-friendly programming language. She will then show you how to write an interpreter using only the Go standard library, including how a Pratt parser works for expressions with different operator precedence.

Julia Ogris

Julia is a software engineer turned independent developer who has worked at both small and large tech companies, including Square and Google. She is currently traveling the world with her family.



Infinite Possibilities

One major part of Software Engineering is the art of trade-offs. It might be difficult to come up with different designs and how to figure out which one to use. In this talk we'll look at how to evaluate different designs and how to transform one design into another. Finally we'll put these ideas into practice by writing a Flow Based Programming library, and end up with hundreds of different designs. Warning: this talk may cause analysis paralysis.

Egon Elbre

Egon Elbre is a software engineer with over 15 years of experience. He started playing with Go just after the first public announcement and has hung around since then. He loves finding new ways of looking at code such that it would be easier to maintain, understand and, most of all, ensure that it delivers value. He strongly believes that there are explanations that help people learn faster. When he's not neck deep in code he's either drawing or playing the piano.

Coroutines and Go

Go provides great primitives for concurrency, but Coroutines are a concurrency pattern not served natively. They are one of the oldest proposals of a general control abstraction, can we implement them using existing Go definitions? What changes can be made to the Go runtime for efficiency?

Raghav Roy

Raghav loves systems! But that's not all. He think the niche he relates to, or is most vocal about, is balancing closed source and open source work, and it's still something he's learning and getting better at everyday. He is a nerd for all kinds of white-papers that are all kinds of esoteric, even when it's not low level systems, it could be astronomy, new coffee science, biology and most recently psychology. He always have something to talk about (probably why he likes to give talks) and he always wants someone to talk to him about something they're weirdly nerdy about.

Code Reviews in Go: Top 5 Misses

While working together over the past 4 years at Dapper Labs with Go as the primary backend language, we’ve shared countless code reviews. From late night incidents during surging product demands, we’ve come to value the importance of meticulous code reviews with no room for error. We’ll share stories of memorable code mishaps, shedding light on common pitfalls in Go code reviews. We’ll provide practical solutions and insights on how to prevent these issues during the review process. We’ll also discuss often-overlooked aspects of code reviews and our robust coding standards for creating reliable software.

Sadie Freeman

Sadie is a Senior Backend Engineer at Dapper Labs. She worked on NBA TopShot and NFL AllDay from day one, alongside Quinn and they were part of the team that aggressively scaled up both products to support 100x traffic. Sadie previously worked in HR but re-trained as a developer through a coding bootcamp and aims to make tech more accessible for folks who feel like they "aren’t technical enough".

Quinn Hou

Quinn is a Senior Software Engineer at Dapper Labs, where she has experimented and launched multiple projects. She remembers the first day whiteboarding the system design of NBA Topshot and enjoys bantering and building software with the team. While she loves readable code, system design also gets her excited for Mondays. She finds joy in building cool things with cool people, like Sadie.


Lunch Friday

Dog Food Can Be Delicious

Maturity of software is related to the technical debt and requirements it took to get there along the way. How do you know when you're ready to make architectural changes or how to make those changes? By benchmarking of course! This is a story about Grafana's path to maturity and how we're using Grafana and K6 to benchmark Grafana and overcome technical debt as part of our architecture overhaul.

Jeff Levin

Jeff is a software engineer from Anchorage, Alaska. He started programming in middle school and went on to run IT for non-profit while in college. After looking for jobs and a software community to participate in he started his own consulting firm Levinology Labs and the Alaska Developers Alliance before launching a SaaS company in the legal space. He now works for Grafana Labs as a software engineer on the Grafana Architecture Team.

Go Stack: Should It Be Moving Like That?

Have you ever thought about what's actually happening when you run your program? Where are the variables held? How is the memory managed? What even are goroutines ("lightweight threads")? How much is Go hiding from us? This talk will touch on all these topics, focusing on how the Go runtime manages the Go stack. We will discover best (and worst) practices that can only be explained by understanding what's happening under the hood. By the end of this talk, you will know how Go works internally, but, more importantly, you'll be able to utilize this knowledge to improve your programs' performance and be a better Go developer. Diving into Go’s internals may be daunting, but it can help us become better developers. In this talk, we will explore the Go stack, when, how and why it moves, and how we can utilize this knowledge to improve our programs’ performance.

Yarden Laifenfeld

Yarden Laifenfeld is a software engineer and developer advocate at Dynatrace. With a deep background in C and embedded Linux environments, her current focus is coding in Go and diving deep into its internals. She is also on the organizing team of both GopherCon Israel and Women Who Go Israel. She loves to speak at conferences and when she’s not at her keyboard, you can usually find her next to her sewing machine.

Lightning talks

Lightning talks!

Many and varied

An eclectic mix of ideas from the community



Back to the Future: Modernizing CLIs Using Go

Since the dawn of computing, we've interacted with computers using the text-based Command Line Interface (CLI). Today, even with the dominance of graphical interfaces, CLIs are often paired with company APIs to boost platform engagement or used in cloud infrastructure. In my talk, I'll dive into the CLI's structure, the principles for building an effective one, and showcase hands-on examples with some of Go's most popular frameworks.

Marian Montagnino

Marian Montagnino, currently a Senior Software Engineer at Netflix, still fondly remembers the nineties, when a humble home computer lit the first spark of her tech curiosity. By 1995, she had dived deep into the digital world, working as a SysOp for Realm of Mirage BBS in Fair Lawn, NJ. Her love for the field took her to Rensselaer Polytechnic for Computer Science and later to Stevens Institute for Applied Mathematics. Now with over 20 years of experience, Marian remains dedicated to the intricate art of coding and the ever-evolving world of technology.

What We Got Right, What We Got Wrong

Fourteen years after the launch of Go, there is much to think about. With the benefit of hindsight, this talk explores some of the lessons learned from Go's progress so far: not just the things that went well but also the things that could have been done better.

Rob Pike

The Commander.
Ex magicians' assistant: Wikipedia