Cameron is a product manager and the product lead for Go at Google. Before Go, Cameron led Google Cloud's programming languages support and integrations and, before Google, he led a high frequency market making firm where he built low latency trading systems in C and C++. He likes Go more.
Cameron earned a bachelor's degree in computer science from the University of California at Santa Barbara and a juris doctor from the George Washington University Law School.
State of the Go Nation
Go has come a long way in recent years: From the IDE to package management to changes in the language itself, Go today provides a more productive, coherent experience than ever before.
In this talk, we'll review the last several years of advancements in the Go language and the Go toolchain, as well as how the Go team leverages its portfolio of projects to create complete, developer-centric solutions. By digging into examples of what we're working on now, we'll also share a peek of what we're most excited about in the years to come.
Katie Hockman is the engineering lead for Go tracing client libraries at Datadog. She was previously at Google where she was an engineer on the Go core language team leading efforts such as the module mirror and checksum database, and adding fuzz testing support into the native Go tool chain.
Go now supports fuzz testing natively as of Go 1.18, a tool that can be used to identify bugs and security vulnerabilities in your code. This talk will discuss practical applications of fuzzing your code so you can get the most out of the tool. This talk will include a live code demo of a bug being found, fixed, and tested in real time using fuzzing.
Alan Donovan has spent almost twenty years working on developer tools at Google NYC, including the company’s build system (Blaze) and its production monitoring system (Monarch). Since joining the Go team in 2012, has built numerous static analysis packages and tools for Go, and, with Brian W. Kernighan, co-authored The Go Programming Language (Addison-Wesley, 2005).
Rob Findley is tech lead for gopls, the Go language server. Before working on gopls, he contributed to pkg.go.dev, Go generics, and support for tools in the Go standard library.”
Redesigning Gopls for 10x scale
Gopls is Go’s implementation of the Language Server Protocol, which turns any text editor into an IDE. In this talk, Rob and Alan of the Go team at Google will present the results of their year-long effort to rearchitect Gopls to enable it to work efficiently in the largest of Go projects. By exploiting the dependency structure of Go programs at various levels of scale (identifiers, imports, types, modules) and using techniques from compilers and build systems, the new design enables Gopls to start more quickly and to serve much larger codebases, while consuming dramatically less memory. It also fixes a number of longstanding bugs and unlocks some new features, such as modular static analysis.
Moieed Ahmed is the Director of Software Engineering at Capital One. He is a hands-on developer, solutions architect and an engineering leader. Moieed has led multiple large scale enterprise software projects in a variety of domains including tech and finance industries. He is passionate about building innovative technical solutions for solving business problems.
As a Go evangelist, Moieed started utilizing Go for building enterprise solutions about 5 years ago across his teams and never looked back.
Lee Tsai is a Senior Manager of Software Engineering at Capital One. He works within the Commercial Bank Technology group, where he has brought multiple Go projects to production. Before Capital One, Lee led the Engineering Enablement team at Intuit Mailchimp through a dev environment modernization effort using Go.
Before software, Lee worked on Wall Street as an analyst. That experience continues to fuel his passion for building innovative technical solutions to solve business problems.
Go Big! Go Enterprise
Come with us on a journey adopting Go at an enterprise. We will walk through example projects using Go to solve common enterprise problems. And see how Go can help with cost efficiency, increased reliability, improved runtime performance, and providing a better developer experience.
Based on our experience working with Go at Capital One, we will walk through general enterprise use cases where Go really shines. These projects cover domains such as cloud, software engineering, and shared services. Finally, we will close by sharing takeaways from these projects and the ways in which Go and its community continue to delight us.
Alan Shreve is the founder and CEO of ngrok.com, a service that provides secure tunneling infrastructure and developer tools, used by tens of thousands of developers at firms all across the industry.
Alan has also developed and maintains numerous open source projects, many of which are used widely. These include libraries for RPC primitives, self-updating software, structured logging, SQL query visibility and more.
Alan loves to talk about how to build better educational tools for new programmers; how to run sustainable self-funded software businesses; and how we can encrypt all internet communications and build a safer and more secure web.
Abstractions are Dead, Long Live Abstractions!
Building an app isn’t simply html, css, and js. In modern app development, we have scripts that build and deploy servers, configure connectivity, monitor and report status, package and distribute code, observe activity across the system, and scale up or down as we need. Every capability introduces new concepts, tools, and complexity that we must learn, monitor, study, and maintain over time.
In short, there’s nothing short about it. Unfortunately, we found ourselves here by working with the wrong abstractions. And even worse, we’re stuck in a place far outside our skills and understanding and have lost track of our app. Our tooling has changed but our modeling around it has not.
In this talk, let’s shift our thinking to solve the problems we’re good at and get back to building great apps.
Lesley Cordero is currently a Staff Software Engineer, Tech Lead at The New York Times. She has spent the majority of her career on edtech teams as an engineer, including Google for Education and other edtech startups.
In her current role, she has focused on observability, building excellent teams, and reliability management by setting org-wide vision & strategy, improving on-call processes, introducing chaos engineering, and cultivating culture that builds with the most vulnerable employees in mind first. She shows care for others by holding them accountable to the best versions of themselves — and by buying them the occasional bubble tea.
Using Golang for Platform Engineering
We’ll explore how Golang can improve platform engineering with its robustness, concurrency model, and cross-platform support. We’ll talk about DevOps best practices and Golang examples for creating tools, deployment automation, integrations, and using infra-as-code.
Jason Hall is a professional container image nerd at Chainguard, building tools to build and manage container images, and services to move them around better and faster.
He lives in Brooklyn with his wife and kids, and enjoys eating pizza more than you think. No, even more. 🍕
ko: The only good way to build Go containers
ko containerizes Go applications more easily, more securely, and more fasterly than docker build, with no need to write a Dockerfile. If you can run go build, you can use ko to build and push a container image. It even generates high quality build-time SBOMs. It integrates with Kubernetes and even Terraform, if that’s your thing. It was recently accepted into the CNCF, which is kinda nice.
By focusing only on building Go container apps, ko is able to take advantage of Go’s great tooling and ecosystem to make the best, smallest, most secure container images possible.
If you stay to the end I’ll even talk about some future experimental work that might already have shipped by the time the talk happens! Time is weird.
Mofizur Rahman is a Developer Advocate at Google. His area of focus these days are GKE, Batch and Observability. His favorite programming language is Go. He also tinkers with Node, Python and Java. He is also learning and teaching in the Go, Kubernetes, Docker and Microservice community. He is a strong believer of the power of open source and importance of giving back to the community. He is a self proclaimed sticker collecting addict and has collected several box full of stickers with no signs of stopping. He can talk about board games for days.
He writes tech blogs sometimes which can be found on moficodes.
Sorting a Trillion Numbers with Go
Sorting is a common programming task, and the Go standard library comes with a sort package that can be used to sort any slice by loading the data into memory. For sorting larger datasets however, we need to scale our compute vertically. But eventually, we reach an upper limit on how big our compute can be, and the only way to handle more data is to scale horizontally.
Dealing with a trillion of anything is a daunting task. Handling large volumes of data is common in HPC or data analytics work. Sorting can be considered a proxy for any compute and memory-intensive task.
In this talk, we will explore ways to optimize our Go code by using the Go profiling tool to find performance bottlenecks and introducing concurrency with goroutines to speed up the code. Even with concurrency, a single machine won’t be sufficient to handle such a volume of data. We’ll cover how to horizontally scale our workload using Kubernetes jobs.
Whether you are new to Go or Kubernetes, this talk will be a useful primer for utilizing Go for batch and HPC workloads.