Workshops

Ultimate Software Design with Kubernetes

Bill Kennedy

Managing Partner, Ardan Labs Instructor

Workshop Description

"As a program evolves and acquires more features, it becomes complicated, with subtle dependencies between components. Over time, complexity accumulates, and it becomes harder and harder for programmers to keep all the relevant factors in their minds as they modify the system. This slows down development and leads to bugs, which slow development even more and add to its cost. Complexity increases inevitably over the life of any program. The larger the program, and the more people that work on it, the more difficult it is to manage complexity." - John Ousterhout

This class teaches you how to build production-level software in Go leveraging the power of a domain-driven, data-oriented architecture that can run in Kubernetes. From the beginning, you will program along with the instructor as he walks through the design philosophies and guidelines for building software in Go. With each new feature added to the project, you will learn how to deploy to and manage the Kubernetes environment used to run the project. The core of this class is to teach you how to handle and reduce the spread of complexity in the systems you are building.

What you will learn:

Introduction to the class and all the engineering that you will learn

  • Design Philosophy, Guidelines, What to Expect
  • Tooling to Install
  • Images to Install

Deploy First Mentality: We begin to build the service with a focus on the ability to deploy the service in Kubernetes.

  • Project Layers, Policies, and Guidelines
  • Prepare Project
  • Logging

Kubernetes: We introduce Kubernetes and get a K8s environment up and running. At this point, everything we do runs in the K8s environment.

  • Clusters, Nodes and Pods
  • Start the Kubernetes Cluster
  • Create/Build a Dockerfile for the Service
  • Create/Apply K8s Deployment for the Service

Kubernetes Quotas: We introduce applying Quotas to the deployment and discuss the problems that can result.

  • Understanding CPU Quotas
  • Understanding the Go Scheduler
  • Adjust GOMAXPROCS to maximize performance

Domain-Driven, Data-Oriented Architecture: We talk about the data-driven, data-oriented architecture that is implemented in the project. We discuss the design philosophy, guidelines, and semantics of how the three layers of App Business, and Storage work together.

  • Architecture Review
  • Data Flow Trust vs Non-Trust

Bio

William Kennedy is a managing partner at Ardan Labs in Miami, Florida. Ardan is a group of passionate engineers, artists and business professionals focused on building and delivering reliable, secure and scalable solutions. Bill is also the author of Go in Action and the Ultimate Go Notebook, plus the author of over 100 blog posts and articles about Go. Lastly, he is a founding member of GoBridge and the GDN, which are organizations working to increase Go adoption through diversity.



AI-Powered Backends in Go

Johnny Boursiquot

Software, Reliability, and Cloud Systems Engineer, Instructor

Workshop Description

This training is designed for experienced Go developers who want to build, deploy, and operate AI-powered backends. We'll focus on integrating Generative AI into real-world systems using models from popular vendors (OpenAI, Amazon, etc), tools like Ollama for local exploration, and business-critical capabilities that rely on RAG (Retrieval-Augmented Generation).

What you will learn:

You'll learn how to interact with LLMs efficiently, implement vector search, and build multi-step agentic workflows—all with Go. Throughout the day, you'll work through hands-on exercises to deploy GenAI services, optimize performance, and monitor AI interactions. We'll cover caching strategies, observability, and security best practices to ensure reliability at scale. By the end, you'll have a solid understanding of how to build AI-powered systems in Go that are efficient, scalable, and production-ready.

Bio

Johnny Boursiquot is a multi-disciplined Software, Reliability, and Cloud Systems Engineer with over two decades of experience across various client, server, and cloud infrastructure technologies. He has been part of multiple startup founding teams and worked at large, market-leading Fortune 500 technology companies. Johnny has authored technology courses, collaborated on books as a co-author and technical reviewer, and provided corporate training to large technology companies. Currently, he works extensively with Go (golang), AWS (ECS, Fargate, Lambda, CloudFormation, etc.), Microservice Architectures, and Serverless Architectures. He also teaches these technologies professionally on platforms like LinkedIn Learning, O'Reilly, Packt, and others, and offers programming workshops at no cost to learners in his local community whenever possible.



Practical Go for Developers

Miki Tebeka

Go Trainer, Ardan Labs, Instructor

Workshop Description

This class helps experienced engineers get effective with the Go programming language and learn by writing code to solve common programming tasks.

Some of the topics we'll cover:

  • Basic data types, how and when to use them
  • Calling REST APIs
  • Working with files
  • Error handling
  • Structs, methods & Interfaces
  • Concurrency
  • Project Engineering
  • Writing an HTTP server

Bio

Miki is an old Gopher and even older developer :) He spends his time teaching (either via his company or via ArdanLabs), writing books, creating video courses, blogging and of course - writing code (either open source or for customers). Miki is one of the organizers of GopherCon Israel and the Go Israel Meetup.



Go Design Principles for Great Go Development

Ronna Steinberg

Tech Lead, Upvest

Workshop Description

Go isn't just a language; it's a philosophy. This hands-on workshop dives into the design principles that underpin Go, exploring how they influence everything from type systems and interfaces to concurrency and functional programming. We'll experiment with different approaches and discover how to leverage Go's powerful features to build robust, scalable, and elegant applications. Whether you're a Go newbie or a seasoned gopher looking to refine your craft, this workshop will expand your Go thinking.

Go's design emphasizes simplicity, efficiency, and maintainability. But how do these principles translate into practice? This workshop isn't just about learning syntax; it's about understanding why Go works the way it does. We'll delve into the language's core features—type system, interfaces, generics, functional programming techniques, and concurrency patterns—and, more importantly, we'll experiment with different ways to use them. We'll challenge assumptions, explore trade-offs, and discover better practices. This is a hands-on workshop, so come ready to code, and elevate your Go development skills.

Lessons:

  • Understanding Go's Type System and Interfaces: We'll explore how Go's type system and interfaces enable you to write clean, maintainable, and expressive code. Beyond the basics, we'll delve into underutilized interface patterns, exploring when and why they're valuable. Get ready to elevate your Go code with elegant and robust designs.
  • Building Reusable Code with Generics: Unlock the magic of generics and how they can supercharge your code with type safety and reusability. We'll explore various use cases and play around with different generic programming techniques.
  • Applying Functional Programming Principles in Go: Discover how functional thinking can broaden your perspective and open up new possibilities. While some functional paradigms have influenced mainstream Go practices, we'll push beyond the familiar, experimenting with techniques and exploring their potential.
  • Mastering Concurrency Patterns and Testing: Dive into the intricacies of concurrency in Go. We'll examine different concurrency patterns and pick up practices for testing concurrent code to ensure safety and performance.

Prerequisites

  • Some general coding experience;
  • Some hands-on experience working with Go, or: Go over "A Tour of Go".

Preparation

  • Git client
  • Go 1.23 or above.
  • An IDE with a Go plugin

Bio

Ronna is a technologist, a Gopher since 2014, a Women Who Go organizer, and GoTime's "unpopular opinion" hall of famer. After over 20 years in software development, Ronna knows that she is the sum of the opportunities that were given to her, which is why she helps others to do the same. She has been crafting hands-on workshops in Go since 2017, and is looking forward to seeing you in her upcoming new workshop "Go Design Principals for Great Go Development."