Go is a statically-compiled systems language geared to developing scalable and type-safe applications with the light touch of a dynamic language. In this session we'll explore Go from a Rubyists perspective, examining the CSP-based concurrency model which has gained it wide-spread press coverage, it's inference-based approach to dynamic typing and the inheritance-free object model this supports. Where possible I'll tie these concepts back to familiar Ruby idioms. 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. 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 get started writing your own concurrent Go programs.
Go is a general-purpose language that bridges the gap between efficient statically typed languages and productive dynamic language. But it’s not just the language that makes Go special – Go has broad and consistent standard libraries and powerful but simple tools.
This talk gives a brief introduction to Go, followed by a tour of a real programs that demonstrate the power, scope, and simplicity of the Go programming environment.
The Go programming language, invented at Google, brings a novel new approach to parallel programming. With a strong focus on developer productivity and software readability, Go shares a lot of design philosophy with Ruby while targeting a different set of problems. Though the use of new language primitives, goroutines and channels, Go applications can solve programs in a highly parallel fashion without the use of locks.
This talk introduces the Go programming language, discusses the innovative parts of the language's design, and demonstrates how these concepts can be applied to Ruby.
Go gives us powerful abstraction through interfaces with no bureaucracy. In my quest to find the right balance between pragmatism and abstraction, I have developed some useful patterns that leverage Go’s interfaces to make code modular, lean and clean.
This is a hands-on opinionated talk about software craftsmanship and sane abstraction techniques. This is a talk where you’ll learn how to embrace the interface.
Single Static Assignment (SSA) is an intermediate representation of code that many compilers use for analysis and optimization. This talk will look at how the go/ssa package is used in existing Go static analysis tools like eg and oracle and how we can use it to build our own tools.
Learn how Parse.com a backend platform for mobile app developer reinvented its backend stack without breaking compatibility with the existing API using Go as the primary tool. One can say this is upgrading the engine of a plane mid-flight. Come hear about all the war stories.
Find out how at times we did not do things the “Go-Way”. Learn how we were inspired by the Facebook PHP stack
Hear about Fog Creek’s first production Go service: a rewrite of their Git and Mercurial SSH reverse proxy from Python. See how they monitor memory, who’s currently connected, what actions they’re performing, what their code is doing, and how they implement drain-and-die so a connection is never forcefully closed. Response times halved. Scheduled daily restarts were replaced with multi-month uptime, and shoulder shrugging about recent crashes were replaced with detailed forensic logs.
Pick up some tips on how to write resilient services with Go!