Golang conference and meetup videos from 2018 (Q1 digest)

Browse around all the videos from  Golang conferences and meetups from 2018 Q1. The Q2 edition is already on the way, stay tuned with the monthly newsletter and twitter.

Golang Talks 2018 Q1

GopherCon India 2018 (Pune, India)

Organisation – A Distributed Computing Network

Niranjan Paranjpe (Go-Jek)

There are many similarities between a distributed computing network and technical organisation. This talks draws parallels between these two worlds to put org design in a new perspective.

Niranjan is CTO at Go-Jek, Indonesian unicorn. He has 12 years of experience as a programmer, consultant and entrepreneur. As CTO, he is responsible for building a high performance engineering culture focused on passion for new technologies, code quality and product thinking. He started his career at Infosys, before moving to ThoughtWorks where he consulted for Fortune 500 clients. He then went on to co-found C42 Engineering, a boutique software engineering consulting firm, with Aakash and Sidu. In October 2015 C42 was acquired by Go-Jek to expand it’s engineering arm to Bangalore.

Ethereum? Why GO there?

Dave Appleton (HelloGold)

Dave Appleton has been messing around with things since sometime before the dawn of time. Mentored by people with more technical expertise than interpersonal skills and business sense, Dave started programming in 1968 in FORTRAN, building audio systems about the same time and messing with digital logic in 1976. In the intervening time he has built world beating test systems, co-designed award winning products, run his own instrumentation company for over fifteen years, learned and actually used more than two dozen programming languages at a professional level, and taught courses from hobby to degree level on subjects as diverse as IOT, e-commerce and Image Processing. For the last three years he has been working on crypto currencies and financial technology.

Translating Go to Other (Human) Languages, and Back Again

Aditya Mukharjee (Stripe)

Like most programming languages, Go uses English keywords. But Go’s unique approach to byte and string handling makes it the ideal candidate for a universal programming language that can be localized to allow English-speaking and non-English speaking developers to collaborate on the same projects.
Aditya is a systems engineer at Stripe on the Observability team, based in New York City. He studied statistics at Columbia and computer science at Cornell, and has been writing Go professionally for the past four years. When not defending users against online fraudsters, he spends his free time playing German-style board games and listening to embarrassing music.

Using Kubernetes API effectively with Golang

Vishal Biyani

Extend Kubernetes to write custom abstractions effectively in Go language, starting with basic CRUD operations and then leading into advanced features like informers, listers watchers etc. to build robust and scalable apps.
Vishal is Founder and CTO at Infracloud technologies. Vishal brings his experience as an engineer who has worked across the whole lifecycle of software development together to bring holistic view of systems and obsessive focus on reducing waste while delivering value. Vishal has worked with Fortune 500 enterprises as well as medium scale startups to bring best of technology & processes together. Vishal is currently focusing on serverless space by contributing to Fission serverless framework. When not at keyboard, Vishal can be found on flipping pages or behind bicycle pedals.

Golang – Metric tracking and Nuances of Memory Management

Deepesh Naini (Go-Jek)

Golang, we all know that it is a super fast, super developer friendly language. But with all this speed around Golang it’s very common for developers to suffer from pitfalls. I am gonna talk about how we can avoid those.
Deepesh is lead product engineer at Go-Jek. He is a full stack developer with hands on experience on Android, Ios, React, Angular, OOJS, Node.js, Golang. His passion is to build cool products which can help scale a business and bring value to customers.

Discussions on Learning Go and a Wishlist for the Future of the Language


CGO: From head to toe

Nitish Sakhawalkar

Writing code that passes data or calls functions across language boundaries is tricky and needs a lot of discipline. This talk focuses on some of the good practices for go developers who are new to the cgo world, through simple snippets and will also dive a little deeper into the actual workings.
Born in Pune, Nitish is an engineer at Slack Technologies on the Native Clients Infrastructure Team in San Francisco, USA. He is a huge fan of typed, compiled languages and at Slack he works on cross-platform client applications in C++. Although relatively new to Go, his unique cross-platform experience has got him deeply involved in and experimenting with CGO. When not solving cross-platform application challenges, he spends time listening to Classical Indian music and practicing Reiki healing.

DUTDIP – Don’t Use This Dependency Injection Pattern

Rushabh Dadbhawala

A thought experiment in designing a DI system for GoLang, bringing out subtle nuances of the language, especially when compared to traditional object oriented languages. Brings out possibilities and challenges of the language, and enlightens you on things you shouldn’t do!
Rushabh is solving problems using software since 15 years. He is well grounded in Object Orientation, Design Patterns and Software Architecture. He is both domain and technology agnostic; “tightly coupled” only to source code! At Continuum, Rushabh works with multiple teams to build the new product platform. Rushabh prefers to roll up the sleeves and get hands dirty with code. He is not what one would call a “white board architect”.


Piyush Varma (Oogway Consulting Private Limited)

Cgroups and Namespace are the shoes and shorts of the container race, not in any particular order. They have been around for a while but not too many see the usage and power they have. The talk is a consortium of Golang cookbooks to help you understand how to reach a container using these constructs.
Piyush is a software consultant solving infrastructure and data engineering problems for over a decade. He likes almost all programming languages alike. He is a self-trained ultra-runner and connoisseur of silly jokes which he transmits over UDP.

What is the Legacy You are Leaving Behind?

William Kennedy (Ardan Studio)

“There are two kinds of software projects: those that fail, and those that turn into legacy horrors.” – Peter Weinberger (inventor of AWK).
In this talk, I will ask you to think about the philosophies you carry with you as a software developer and ask a lot of questions. What’s important to you as a developer? What does engineering mean to you? How do you ensure your maintaining strong mental modes? All these questions and more will be presented and discussed.
William Kennedy is a managing partner at Ardan Studio in Miami, Florida, a mobile, web, and systems development company. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity. He spoke at GopherConIndia 2015 and 2017.

A Modern Edge Microservices Framework Built Entirely in Go

Matt Ellis

Explore the challenges and benefits to building a microservices framework from the ground up entirely in Golang, from contribution models to dependency management, discover how we’ve successfully leveraged Go to build the lightest microservices framework designed for IoT and serverless compute.
Matt Ellis has been involved in the tech industry from a very early and has held a number of roles. Early in Matt’s career he spent the majority of his time on developing 3D rendering engines in both OpenGL and Direct3D. He also authored a number of technical manuals and books on the topic. During an independent consulting opportunity in Brazil, Matt authored two additional books with a focus on RESTful services and APIs. More recently, Matt works as a Sr. Product Manager & Head of Open Source Software at TIBCO Software, Inc where he focuses on product & strategy around Open Source and more specifically, Project Flogo, an open source edge microservices framework built entirely in Go.

Playing with robots in Golang

Sanket Sudake

With advent of ARM devices, IOT toys and platforms I started tinkering with Golang to build on devices. This talk will explore possibilities of hardware with golang and demo voice command talking to raspberry pi which operates the Sphero ball.
Sanket works as Software Engineer at Infracloud Technologies. He has been using golang to develop different solutions around Kubernetes, Docker, IOT etc. He is also an active contributor to Openstack. His core interest areas are distributed systems and networking technologies. Prior to this he worked at Veritas as Linux Kernel Engineer.

How I learned to stop complaining and use the strengths of the language

Sean Kelly

Embedding. It sure is weird, isn’t it? It’s unlike traditional inheritance, and it can be uncomfortable at first. But it does have a lot of positives to it that might not be obvious at first. In this talk, we’ll go over highlights and pitfalls of embedding, and some interesting ways to use it.
Sean Kelly (affectionately known as Stabby) is a Lead Software Engineer and Engineering Manager for Rapid7. A simple man with a dog for an avatar, he enjoys learning new things, helping / mentoring others, and posting photos of his dog on the internet. When he’s not giving talks, he enjoys spending time at home with his wife, taking his dog to the park, and coming up with new projects to work on that he will never actually finish.

Resiliency in Distributed Systems

Rajeev Bharshetty

Keeping distributed systems up and running is a hard problem to solve at scale. Adopting some basic patterns can help us guard our systems from sudden spikes in traffic, dependency failures, network issues, slower downstream services and can help us achieve considerable uptime on our systems.
Rajeev is working as a Product Engineer at GO-JEK. At GO-JEK, he is working on building Resilient Distributed systems at Scale. His primary focus and interest areas are Distributed Systems, Security and Data. He is a theoretical computer science nerd, interested in reading academic papers. He has open sourced some projects at github.com/rshetty. He is also Long distance Runner, Amateur Musician and an Avid Photographer.

Load Testing for Modern Applications

Abhishek Gahlot

Carrot is Go based Distributed Load/Stress testing frameworks for Modern Web Application which was created to test HackerRank Code Completion Infra I wrote to test more than 200 million requests a month. Test your Web App with support of WebSockets/XHR, Multiple payload/protocols, Fancy Graphs.
Abhishek worked for HackerRank for 2 years where Code Completion Infrastructure was built. He is currently working at Automattic in Data team on scaling Infrastructure of Automattic and WordPress.

Writing Job Queues in Go

Mahadevan Ramchandran

Processing asynchronous jobs with Go start off simple and quickly mushroom into intricate pieces as requirements get added on (workers, cancels, retries, ..). Based on our popular blog post “Job Queues in Go”, this talk will walk you through all the pieces you need to build your job queue.
Mahadevan Ramachandran is the technical co-founder and CEO of RapidLoop. In his career spanning more than 18 years, he has co-founded RapidLoop, a startup that creates cloud native solutions for server monitoring, database monitoring, service monitoring and app metric monitoring. He also served as game CTO for top Zynga titles (including Draw Something, Hidden Chronicles, ChefVille) reaching millions of players and led the engineering team that built and launched the first Zynga title from India (Hidden Shadows). Previously Mahadevan led development teams creating products for global businesses at Siemens, Philips, Emulex and EMC. He released his first FOSS in the early ‘90s – to India’s first BBS (CiX) and continues to be an active open source contributor.

The State of Go

Cassandra Salisbury (Google)

Cassandra Salisbury currently works on the open source strategy team at Google as a program manager on the Go team. She is a core team member of GoBridge where she focuses on increasing diversity and mindfulness in the Go community. She is an organizer for the GoSF meetup, and a local conference, Gopherfest. She is an avid karaoke fan, finds relief in stress cooking and lives in the San Francisco Bay Area.

FOSDEM 2018 – Go Devroom (Brussels, Belgium)

The State of Go What’s new in Go 1.10

Francesc Campoy

Go 1.10 is planned to be released in February 2018 and this talk covers what’s coming up with it.

Advanced Go debugging with Delve

Derek Parker (Red Hat)

Learn how to utilize the Delve debugger to dig into and solve complex bugs in your code.
Delve is a powerful yet simple open source debugger for the Go programming language. In this talk, I will discuss what makes both Go and Delve different from other languages / debuggers, and then dive into real world usage. I will begin by introducing the tool, and showing the basics of how it works. From there I will use specific example problems to show how to use some of the most powerful features of Delve to solve even the most complex bugs.

I will start with a deep dive into the Go programming language. Topics of discussion will include the runtime, DWARF, scheduler, and more. From there, I will introduce Delve and discuss how it is different from other debuggers and walk through basic usage. After that I will switch over to a terminal where I will work through several pre-made bugs, highlighting certain features of Delve. The goal of this talk is to equip users with all of the knowledge and confidence they need to use Delve to effectively debug their programs.

This talk will be beneficial to beginners and advanced users alike.

Networking deepdive From net.Dial to gRPC

Michael Hausenblas (Red Hat)

In this talk we’ll discuss networking in Go. The goal is to provide beginners with a comprehensive overview of what the stdlib offers as well as what packages outside of the stdlib exist that can be used for networking. More advanced users can benefit from networking best practices and guidance for implementing distributed systems.

Testing and Automation in the Era of Containers (with Go)

Verónica López (Red Hat)

As containers and orchestration technologies went from niche to necessary tools to build modern distributed systems, traditional testing is no longer enough. e2e cases represent a great solution, but it’s often easier said than done. In this talk, I will share my experience of building a testing framework for distributed systems, revisiting common mistakes, how to avoid them, and showing how to take advantage of the power of Go to make sure our systems behavior match our original expectations, with scalability in mind through automation.

Upspin and a future of the Internet My vision of Rob Pike’s Upspin as a basis for a decentralized I…

Gildas Chabot

Upspin is both a protocol and a reference implementation for a global name space for network-accessible files that comes with permissions and end-to-end encryption. With simplicity at its core (the protocol is just 10 methods), it is very versatile and can be a building block for a decentralized Internet

Last October, Rob Pike published the Upspin manifesto on his blog – command center. This manifesto is centered around a concept I care for: the separation of the producers and the consumers of data. I had been willing to create web services that could freely inter-operate and Upspin is a wonderful tool for that. Since then, I have been working on a collection of Upspin client and servers to prove the concept.

In this talk I will present: – the basic concepts and architecture of Upspin – my implementations of Upspin client and servers (directory and storage) – my thoughts about what can be done with Upspin

Dep Deep Dive!

Sam Boyer

This talk will cover the essential mechanics of dep, combined with an explanation of the main ideas behind dep’s design. It makes sense to explain these together, as dep is an opinionated tool with a spare interface: if people don’t understand dep’s basic way of thinking about dependency management, then they may find themselves “holding it wrong,” and having a difficult time. The benefit of dep’s spare design is that doesn’t take long to cover the essentials, and attendees will be able to walk away with a clear sense of how to leverage dep to their advantage.

Networking Swiss Army Knife for Go

Roman Mohr

Creating and managing network devices, Traffic Control, routing and iptables, introspecting and manipulating network packets. That normally involves a lot of low level C programming, which introduces a huge gap between frontend (web and service oriented) and backend needs (systems programming). Go is excellent in bridging this gap in general, and thanks to the great work of the Go community, networking tasks are very easy to solve too. This session will introduce a set of libraries which form a comprehensive Swiss Army Knife to tackle almost any network related task on Linux with Go.

The case for interface{} When and how to use empty interface

Sam Whited

The empty interface (interface{}) is one of the most interesting, powerful, and easily abused features of Go, but there are use cases for which it is uniquely and excellently suited. In this talk for the Go devroom, I will propose a set of rules which can be used to see if your use of interface{} will be the elegant and simple API that interface{} promised, or merely lead to a maintainability nightmare down the road.

Google’s approach to distributed systems observability for Go

Jaana Dogan (Google)

The progression of microservices in the industry resembles me the way microservices progressed at Google. First, a common container format. Then, a way to express complicated systems in terms of containers. Then, tools to deploy them and services to schedule them. Then, core networking services to support the complicated networking requirements of our highly large systems with complex dependencies. Then, observability: collecting diagnostics data not just to recognize and debug production problems, but also to provide critical signals about usage to our highly adaptive and scalable environment.

Creating GopherJS Apps with gRPC-Web

Johan Brandhorst

This presentation will introduce gRPC, gRPC-Web and GopherJS to attendees. At the end of the presentation, they will know how to create a GopherJS frontend and leverage GopherJS gRPC-Web bindings for the communications with a generic Go gRPC backend.

Building and testing a distributed data store in Go

Matt Bostock

This talk covers my experiences designing, building and testing a open-source distributed metrics store in Go.

I’ll explain:
* the system architecture and the trade-offs involved in distributed systems
* how the design evolved
* how Go is well-suited to high throughput distributed systems
* useful libraries for building such systems in Go
* using pprof to identify performance bottlenecks
* how data structures affect garbage collection in high-throughput systems
* testing strategies and failure injection

Computer Vision Using Go And OpenCV

Ron Evans

It is easier to see what comes next for the Internet of Things (IoT) when you have eyes on the world. Computer Vision (CV) software, in particular the powerful open source OpenCV (http://opencv.org) has made big leaps in power and usability, and is ready to come into its own as a key part of an advanced IoT solution.

At the same time the Go programming language aka Golang has won over fans with clean code, high-performance, and portability. But there has not been any way to unlock the most state-of-the-art CV libraries using the most state-of-the-art programming language… until now.

Introducing GoCV (https://gocv.io) a new package for letting Go programmers create computer vision applications using OpenCV.

In this talk I will show how to use GoCV to build the next generation of computer vision applications, with live code demonstrations.

Make your Go go faster! Optimising performance through reducing memory allocations

Bryan Boreham

This talk will preset a set of techniques to make your Go programs run faster.

Starting with CPU profiling, moving through memory allocation profiling, to escape analysis, we will point out some less-well-known corners of the runtime, how they impact performance, and how to mitigate this impact.

Often, the single biggest drain on performance in a Go program is the garbage collector. Each release of the Go runtime comes with a slightly faster collector, but you can make much bigger performance improvements by not creating garbage in the first place: if you can rework your code to make fewer heap allocations, then the garbage collector will run less often and have less work to do.

Examples will be drawn from real-world experience optimising the Open Source container visualisation project Weave Cortex: https://github.com/weaveworks/cortex

Distributing DevOps tools using GoLang and Containers, for Fun and Profit!

Lucy Davinhart (Sky Betting & Gaming)

A look at our approach to distributing DevOps tools between many teams (and CI), using a GoLang app to launch containers.

We needed a way to reduce the overheads associated with onboarding new starters, so instead of a document giving a list of software that needed to be downloaded, e.g. Chef Development Kit, Terraform, Docker etc. etc. they could just download a single thing which gave them a ready made development environment whether they used Mac or Linux PCs.

Initially we used Vagrant for this, but that ended up not being the best tool for the job.

Then along came Docker for Mac, and we quickly realised that, by manipulating the GoLang Docker SDK, we could just run everything in containers. Because we wrote this in Go, we could also interact with other Go SDKs for products and services we look after, like AWS and Hashicorp Vault, to prepare an environment for these containers.

This worked really well! Too well, in fact, as people from across the company started asking us “can you add XYZ to this tool?”. We didn’t want our tool to become bloated, so we open-sourced the guts of our tool for other teams to create their own versions, with the tools they needed.

DNA sequencing performance in Go, C++, and Java

Pascal Costanza

While Go is not primarily designed for parallel programming, it nevertheless has features that end up being beneficial for parallelism as well, especially the inclusion of a work-stealing scheduler for goroutines and a concurrent, parallel garbage collector. For this reason, we have recently included Go as one of several candidate programming languages in an evaluation of their suitability for expressing sequencing pipelines. Other programming languages we have evaluated were C++ and Java. Go hits a sweet spot of performing very close to the best results with little programming effort and few compromises in terms of safety and generality.

This talk will present highlights of this experiments and the most important insights.

A DNA sequencer takes a DNA sample, such as human tissue, and applies chemical processes to eventually read small fragments of the DNA sample and output them as large files. These files are then fed into software pipelines that reconstruct the original DNA sequence from those fragments, among other things. Such sequencing pipelines need large amounts of storage, on disk and/or in RAM, and can strongly benefit from parallel execution to improve runtime performance. Data sets for human DNA samples are usually in the order of several hundreds of GB of uncompressed data, and runtimes are typically in the order of several hours for single samples.

Go Lightning Talks

Francesc Campoy & Maartje Eyskens

Golang Bangalore (Bangalore, India)

Golang Slices

This screencast/talk was part of golang meetup bangalore https://www.meetup.com/Golang-Bangalore/events/246437796/

– Covers basics of slices
– Internally how slices differ from array
– A sample code with TDD []*struct would cause problem, if you’re not aware of what you’re dealing with.
– some more gotchas

Zürich Gophers (Zürich, Switzerland)

State of golang.org/x/text

Marcel van Lohuizen (Google)

A Google TechTalk, 11/30/17, presented by Marcel van Lohuizen.
Gophers Zürich Meetup https://www.meetup.com/Zurich-Gophers/

GoSG (Singapore)

AWS SDK for Go – Gophers Meetup

Kai Hendry

Tensorflow Serving in Go – Gophers Meetup

Guo Jun

Gitlab and Go in Go-Jek – Gophers Meetup

Liu Hai Bin