Speaker

Michele Caci

Michele Caci

Amadeus, Senior Software Engineer

Antibes, France

Actions

Michele Caci is a Senior Go Software Engineer at Amadeus IT Group, based in the French Riviera 🇫🇷, originally from Sicily 🇮🇹.
A passionate Gopher since 2018, he works on logging middleware and infrastructure with Go, Vector and Splunk, and explores TinyGo and MCP in his spare time.

A regular on the European conference circuit, Michele has spoken at GopherConEU, GoLab, Container Days, WeAreDevelopers World Congress and RivieraDEV on topics ranging from debugging Go in Kubernetes to graph algorithms through board games. He is also a co-organiser of RivieraDEV, a multi-language developer conference held annually in the French Riviera.

Outside of code, Michele enjoys reading, cooking, swimming and learning spoken languages —> he is fluent in Italian, French, English, Portuguese and is currently working his way through Japanese.

Area of Expertise

  • Information & Communications Technology

Topics

  • golang
  • Cloud & DevOps
  • Application Development

Debugging Go: from zero to Kubernetes

When searching for bugs in our Go applications I used to use many tools like testing, profiling, logging, and so on.

One tool I didn't use back then was the Go debugger (Delve) because, despite being very effective, it seemed intimidating and difficult to start and use. Moreover, today more and more Go applications are deployed and running in a Kubernetes cluster which makes the task to run the debugger even more intimidating and difficult.

Today, the Delve debugger is my main tool for searching bugs in my Go applications, wherever they are located, and with this talk I wish to share with everyone how to start a debugging session with Delve, going gradually from starting Delve for a Go application in my local development environment, then for the same application running inside a Docker container and eventually still for the same application deployed in a Kubernetes cluster.

My objective with this talk is to give an introduction on how to start Delve to debug a Go application and, with this knowledge, make debugging a less difficult and intimidating tool to find bugs.

Colors, images and gifs: bring on the fun with Go!

Let's walk through how we can put some color to our programming.

We will explore how to work with colors to create palettes and images, we will see how to fill pixels in a rectangle and make a matrix of numbers become a forest or a map, we will see how to layer images and texts on top of each other to make some colorful banners and add a pinch of creativity to animate them into playful gifs.

And all of this with Go and (almost) always with the standard library!

Creating images and gifs is for sure about having fun and unleashing your creativity so join me to this journey of giving life to images and gifs with Go.

Graphs and games: can Go take a Ticket to Ride?

With this session, I propose to have a look at how we can make the world of Go match with the world of board games.
In particular I wish to share the challenges and highlights of implementing a game of Ticket to Ride game in Go.

Since the basics concepts of Ticket to Ride are related to graphs, I will start by sharing some concepts about graphs, their relation to Ticket to Ride and how they can be implemented in Go.

Several Go features, like generics and interfaces, will be in the spotlight and show the simplicity that Go brings to tackle the complexity of the problem to solve.

To drive this point home I will go on to describe how to implement some examples of gameplay in its code structure and execution.

Programming games is fun and entertaining and, most importantly, a good playground for learning and practicing a language and as a Gopher I want to share how the simplicity of Go makes it easy to approach the creation of applicationsprograms/games of a relatively high level of complexity.

This proposal comes from my passion about playing board games: it gave me the motivation to try implement one in Go and I thought about Ticket to Ride as it would have helped me also revising graph algorithms.

I can taylor this session for a talk that last from 35 to 50 minutes and I plan to show the code in live and explain what specific features of Go made the game simple to create.

I have already created a repository with the code that handles graphs algorithms and data structures in Go: https://github.com/mcaci/graphgo
and I'm currently working on my free time on expanding it to have a playable simplified version of the Ticket to Ride board game.

Get logs that matter with structured logging and OpenTelemetry

Logging is one of those things that every Go developer does from day one and can present challenges when it gets to production.

Sometimes logs are too many, sometimes they are expensive to search and/or store but often happen to give unclear information when trying to search events that matter in a bug investigation.

In this talk, we'll make the case for observable Go services from the ground up by watching how combining the logging structure provided by `slog` and connecting it to the open structure of OpenTelemetry.

We'll start with a brief introduction of both `slog` package and OpenTelemetry framework and we'll journey along the interaction between the two, observing the synergies they show and the tools they provide to make an actual Go application effectively observable.

By the end of the talk you'll get a clear idea of observability in Go that goes beyond the simple "how do you log?" question and will be able to see how do you get a clear view of what your Go application is doing.

I've been working with Go professionally for several years and have spoken at GoLab previously — on Go's image and GIF processing capabilities, and on implementing the board game Ticket to Ride in Go. The Ticket to Ride codebase makes a return here not as the main subject, but as a familiar, self-contained domain that lets me demonstrate observability concepts without dragging the audience through a business problem they don't know.

The logging cost and signal-quality angle comes from direct production experience working with Vector and Splunk in high-volume environments. It's a perspective I don't often see in conference talks, which tend to focus on API surfaces rather than the judgment calls that make or break an observability setup.

I've got the clicks, I've got the blinks and I've got the dings ft. TinyGo (and a happy child)

The title comes from the Spaceballs quote: "I've lost the bleeps, I've lost the sweeps, and I've lost the creeps."

As said in the abstract my main motivation to get started with TinyGo was my son who loves the real-world objects that he can click and make noises or see some blinking lights or any kind of visual feedback where he can learn that something he does can lead to some results he didn't anticipate while having fun in the process.

Even though I'm proud of his initiative and sense of discovery, I'm also afraid of him losing or misusing these same objects so I decided to try and craft some replacements that he can enjoy and that I can worry less about.

As a beginner in TinyGo and electronics I'll start by introducing:
- the basics concepts I learned about the circuits
- why I chose TinyGo compared to other mainstream languages in the microcontroller field
- the tools and code I use to create the objects
- and the resources that helped me along the way

And most importantly, I will show live the tools I created to inspire the attendees that getting started with TinyGo can be simple and fun.

The title comes from the Spaceballs quote: "I've lost the bleeps, I've lost the sweeps, and I've lost the creeps."

As said in the abstract my main motivation to get started with TinyGo was my son who loves the real-world objects that he can click and make noises or see some blinking lights or any kind of visual feedback where he can learn that something he does can lead to some results he didn't anticipate while having fun in the process.

Even though I'm proud of his initiative and sense of discovery, I'm also afraid of him losing or misusing these same objects so I decided to try and craft some replacements that he can enjoy and that I can worry less about.

As a beginner in TinyGo and electronics I'll start by introducing:
- the basics concepts I learned about the circuits
- why I chose TinyGo compared to other mainstream languages in the microcontroller field
- the tools and code I use to create the objects
- and the resources that helped me along the way

And most importantly, I will show live the tools I created to inspire the attendees that getting started with TinyGo can be simple and fun.

When it comes to toys my 2‑year‑old, loves the real-world object: car keys, remote controllers, door-opening cards or even credit cards: life with him is quite an adventure!

So I set up to learn TinyGo and craft some objects that get as close as possible to the things he loves with buttons, lights, sounds and an high level of interaction, so that I can replace those "dangerous" real-world objects with them.

Follow me in my "dad project" rabbit hole and learn how to get started with TinyGo and why I chose it compared to other mainstream languages like Python and C. As a beginner in electronics I'll also share some of the lessons I learned:
- the basics concepts I learned about the circuits
- the tools I use to create them
- the small wins and the walls I hit
- and the resources that helped me overcome most difficulties.

All of it, while explaining the details of the work I have created and how to set up everything you so that you can reproduce it as well, so, if you're curious about what you can achieve with TinyGo today and how you can (try to) make your little one happy, this is the talk for you.

GoLab 2024 Sessionize Event

November 2024 Florence, Italy

Michele Caci

Amadeus, Senior Software Engineer

Antibes, France

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top