October 22nd, 2018
Lungarno del Tempio, 44 Firenze
Welcome coffee
Go on Fuchsia OS
Fuchsia is the new OS from Google based on a new non Linux kernel that could replace Android. Few Programming Languages will be supported and Go is of course one of them. This talk will highlight how to write an application in Go for Fuchsia and will also serve as an introduction to the new OS.
Implementing Software Machines in Go and C
A fast-paced dive into the rudiments of virtual machine and emulator implementation.
Emulating a Nintendo DS in Go
Emulation is tricky, and making it fast in a high level language like Go is even trickier.
Goroutines: the dark side of the runtime
Have you ever wondered what really lies behind the “go” statement? Did you ever stop and think about differences between goroutines and standard operative system threads? Is there something you should know to avoid bugs or weird, unintended behaviours?
Go Hardware Go!
What happens if you take reconfigurable hardware (like FPGA) and mix it with a modern language like Go? What if the processor became a modular object?
Decoding invalid base64 with state machines
How many times did you try to decode a string and couldn’t because it was malformed? With state machines, we can dynamically decode malformed or incomplete strings. This talk will discuss how to implement such state machines and the problems you might encounter.
Lunch
Computer Vision Using Go And OpenCV 3
Introducing GoCV (https://gocv.io) a new package for letting Go programmers create computer vision applications using OpenCV.
Project layout patterns in Go
You completed the tour, learned the language, got your pet project on Github. Time to start a new project, a big one: how do you organize code, tests, docs? During the talk I’ll try to save you some trial and error by sharing the lessons learned during a year spent coding a non trivial Go project.
An embedded soft real time system in Go
An embedded system usually involves low level languages like C and highly customized hardware.
Go tricks from the trenches
This intermediary talk shows how we took advantages of powerful features offered by Go. The egoscale library powers two command line tools (urface/cli and cobra), the integration in Terraform, some Kubernetes tools, the de-facto ACMEv2 library lego and more too come.
Diversity panel: Are we inclusive yet?
"Are we inclusive yet?" is the Diversity Panel debate featuring Cassandra Salisbury, Anna Bernardi, Carmen Hernandez Andoh and Eleanor McHugh.
How interfaces saved our ilfe while migrating half a million users with no downtime
What happens when you have half a million users, 11 millions of their files, and you have to change completely the underlying technology with no downtime, no conflicts, over several weeks of a rolling update?
Gomacro: code generation made easy and fun
Go code generation was traditionally still a difficult topic. Armed with Gomacro REPL, we will see how creating and manipulating abstract syntax trees (go/ast.Node) becomes as easy as adding few keystrokes to a statement or declaration. And you can do it interactively: much more fun and productive.
Lightning Talks 2018
- Turn data into Go structs - Martin Czygan
- Small is more (why, how and when make very small Go binaries) - Andrea Masi
- Lost in transaction? Manage consistency by leveraging distributed state machines - Bernd Rücker
- Athens, a new place for your dependencies - Federico Paolinelli
- Introduction to Go Concurrency Patterns - Fabio Falzoi
- Golang, Linux kernel and the netlink family in between - Florian Lehner
Networking
Gathering & Gopher Dinner
October 23rd, 2018
Lungarno del Tempio, 44, 50121 Firenze FI
Welcome coffee
Fast messaging with Nats and Go
Even if synchronous calls are the most popular way to communicate between distributed services, event based communication is a common alternative due to its advantages in terms of decoupling between producers and consumers.
Debug like a pro on Kubernetes
Go fit perfectly inside containers, you can ship apps as tiny images on k8s, distributing them across the globe. Gianluca will show how InfluxData debugs containers running on Kubernetes to allow sysadmins and developers to troubleshoot and replicate issues using core dump, debuggers, and logs.
Building a packet-based high-performance proxy for a telco
A successful story of reimplementing a safe-browsing proxy for Telefónica, moving from C++ and socket handling, to Go and packet management, and how Go can help you to be productive and efficient, and to achieve a high-quality product.
Unit Testing Code with Hard-To-Mock Dependencies
Unit testing using mocks is a common technique in Go and other languages. However, some dependencies are harder to mock than others; standard library packages such os can be particularly tricky. This talk covers strategies for effectively testing code that depends on such hard-to-mock packages.
Building great APIs with gRPC
It generally takes lots of time and decisions to create an HTTP API, but when you want to get productive fast, you want to skip as many steps as possible. I’ve been working with gRPC for almost a year and I can guide you from first lines of the code up to request tracking or exposing it via HTTP.
Go as a scripting language in Linux
Do you like Go so much and use it in every software project? Do you think Go is a truly universal language? How about taking it to the next level and trying Go as a scripting language for your favourite Linux distribution?
Applying serverless architecture pattern to distributed data processing
In this talk we will go through whole “serverless” thing: from decomposing app and its logic to microservices and further to smaller bits, i.e. functions to defining data flow through functions and building their fault-tolerant pipeline.
Production Ready Go service in 30 minutes
We always hear how Go is a simple language, how it can enable developers to be productive.
Lunch
Orchestration of microservices
Microservices, DDD, distributed systems, serverless. All trends decompose to the max, which moves the complexity to the collaboration of these pieces. I want to tell some war stories around that in this talk and give people some guidance.
Go for the Long Game
Come hear why and how Go is engineered for longevity for the practice of Software Engineering; not just in code features and syntax, but also for organizational processes, change management, team rapport, leveling up inexperienced people, and project stewardship. See how your team or organization can use Go to move with emerging trends, from the micro to the macro.
Building a DIY proxy with the net package
The net package is one of the key assets of Go, and it's commonly used through higher level interfaces like net/http.
Bad gophers: unexpected hurdles programming in Go
Plot twist: sometimes Go gets in our way. While exploring the container world, we can find surprising limits if the implementation of the Go runtime, and the solutions needed to overcome those limits may be even more surprising. In this talk we will see some of those limits, and their solutions.
Go implementation of DNS Load Balancing at CERN
CERN is using an increasing number of DNS based load balanced aliases (currently over 600).
Cgo for fun and profit (read pain and suffering)
Famous last words: “CGo will allow me to write code in Go once and invoke it from other languages easily”. I demonstrate that this approach is mostly more trouble than it’s worth; by doing a live end-to-end exercise of invoking go built shared library from other higher level languages.
"Goodbye, Gophers!"
Cocktail & networking