Docker is one of the faster growing open source project. Less than 5 months after launching, the project had 60K+ users, over 6000 github stars, over 100 derivative projects, and over 150 significant contributors from around the world. Docker has been integrated into a number of key projects (Chef, Puppet, Jenkins, Travis, Vagrant, OpenStack), and has been deployed at some of the largest web properties, stirring hype and controversy in the open-source community in the process. But what the hell does a “container engine” do, and why is everyone so excited?
In this presentation, Victor Vieux, one of the core engineer of Docker, will explain the philosophy and history behind Docker, show examples of the projects built by the Docker ecosystem, and paint a picture of how Docker can change the way we think about software distribution and deployment. He will also speak about the rationale for writing Docker in Go, and the impact that has has on the project growth. In the presentation, he will show a number of examples, including how to build a open source playground for Go.
We have recently been working on a game called hackerbots whose server-side component we chose to author in go. We learned quite a few lessons about how to write server-side code in go along the way. A few of the things we will discuss include:
How to test for (and solve) leaking go routines
How to use the profiler to uncover issues with your code
Mixing websockets and http for game play and game control
Go concepts that help us separate game state, player updates, and network traffic
Optimizing JSON serialization for minimal traffic while maintaining human readability
How go got in our way, and what we did to make it less painful- how to debug and fix 'frozen' server code
We will discuss what it is about go that really helped us write our game, with a focus on sharing stories that stand apart from the typical anecdotal reasons for choosing go.
Come learn how we used the go tooling to keep our game within the constraints of a tiny virtual machine whilst having a blast doing so.
The robotics revolution has already begun. You can buy drones and robotic devices at local retail stores. Unfortunately, it’s hard to develop code for robots, and nearly impossible to create solutions that integrate multiple different kind of devices. Introducing Gobot, a set of robotics libraries written in the Go programming language. Gobot can communicate with many different kinds of hardware devices, and integrate them together. With surprisingly few lines of code, you can write interesting applications that tie together Arduinos, ARDrones, Spheros, and more… even all at the same time! The time has come for Go powered robotics, and Gobot is here to help!
Presented with the realization that his thunder for his original talk had been covered by the presenters from the previous day Blake switched it up and conducts an insightful panel with the Go team, instead of his original presentation:
Go's stdlib is filled with interesting solutions to fun problems. I will surface them for your amusement and also in hopes to give everyone a better understanding of Go's use of its own simple, yet powerful features.
Go is well-known as a rising star in building infrastructure and networked services. But it also makes an excellent choice for building developer tools that are downloaded and run on diverse, uncontrolled environments around the world. I will briefly cover why Go makes such an excellent choice for creating developer tools, but the talk will focus primarily on how to solve the most common problems unique to these tools. I will cover how to bundle non-code asset files, safely cross-compile release builds, remotely auto-update, gracefully handle crashes and more by drawing on lessons and techniques learned building my own developer tool, ngrok.
Despite what many compiler-fearing communities may say, Go is a fantastic language in which to build web services. This talk will start by catching everyone up on the Go standard library's HTTP packages, their strengths, and their weaknesses. We'll talk about JSON and its relationship with Go data structures, learn about Go's excellent support for reflection and how we can use it and the Go compiler to create safe APIs. Using some choice open-source packages we'll create higher-level APIs, collect metrics, and write tests. Finally, we'll get our Go web services into production and talk about stopping gracefully and restarting without downtime.
Andrew Gerrand closes the conference in the way that only Andrew can.
Go has rapidly built a reputation as a great language for web development. But as Rails developers, we already have a really, really great language for web development -- why should we be interested in Go?
I’m convinced that every web developer would benefit from exposure to the Go approach to programming, which places a strong emphasis on up-front error handling and modular, namespaced libraries. Let's sit down and compare some code!
In this talk, we will:
* Compare idiomatic approaches to common problems such as error handling, dependency management and testing in Go and Ruby.
* Think carefully about tradeoffs between different programming styles and examine how programming languages encourage one style or another.
* Tease out common ideas and best practices that apply to all web applications, regardless of language or framework.
* Read a bunch of code.
We will not:
* Try to convince anyone to ditch Ruby/Rails and embrace Go.
* Make vague, unsubstantiated claims about the benefits of static or dynamic typing.
* Assume any prior knowledge of Go.
Go is a statically-compiled systems language geared to developing scalable and type-safe applications whilst leveraging type inference to approximate the light touch of a dynamic language. It could be characterised as the static-typing world's response to Ruby. In this session we're going to explore the Go language, its tool-chain and idioms such as CSP-based concurrency and dynamically inferred interfaces to see how they influence the design of Go applications. We'll compare these to equivalent Ruby idioms where they exist, model Go-style concurrency in pure MRI Ruby, and look at interoperability between the two languages. Along the way we'll meet gotest (Go's testing and benchmarking framework), CGO (for linking to C libraries), goinstall (the remote package installer) and Go's powerful reflection and type manipulation features. There'll be a good mix of Go and Ruby code so that by the end of the session you'll be comfortable reading Go source code, have a basic feel for developing with the language and the necessary background to start using Go components in your dev projects.
It has been said that Go is a language created by Google, at Google, for Google-sized problems. Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Presenters Ken Walters and Ted Price will share a quick overview with the audience.
Ken Walters has more than 18 years of experience designing, developing and managing web and interactive experiences. He is a technologist, a strategist, and a craftsman who is passionate about application architecture and user experience. Ken’s work has been featured in Communication Arts, Graphic Design:USA, Graphis and Forbes.com’s Best of the Web.