Subscribe to our Erlang Factory newsletter to receive the latest updates and news

Scott Chacon
Git evangelist and Ruby developer
Logical Awesome

Scott Chacon is a Git evangelist and Ruby developer employed at Logical Awesome working on GitHub. He is the author of the Git Internals PDF book by Peepcode as well as the maintainer of and the Git Community Book. Scott has presented at RailsConf, RubyConf, Google, and a number of local groups in addition to teaching corporate training on Git across the country.

Scott Chacon is Giving the Following Talks
BERT is to Erlang as JSON is to JavaScript (plus a mini Git tutorial!)

We'll start off with a mini Git tutorial to help conceptualize the problems we had at GitHub that were addressed in the crafting of BERT and BERT-RPC. If you're unfamiliar with Git, this may open your eyes to the power, flexibility, and speed of this distributed version control system. Your language is great at dealing with distributed systems, shouldn't your SCM be just as adept?

BERT (Binary ERlang Term) is a new serialization format based on Erlang's external term format. It supports rich data types such as atoms, heterogenous lists, tuples, binary data, booleans, dictionaries, and more. Just as JSON acts as an excellent inter-process data format for web-based technologies, BERT acts as an efficient inter-process data format for low-latency server technologies. Built on top of BERT is BERT-RPC, a simple, dynamic RPC protocol providing both synchronous and asynchronous requests, caching directives, streaming, and even callbacks.

Tom created these technologies to help us scale GitHub. Tom needed a fast, robust way for one process to make low-latency calls to another. Tom looked at Thrift and Protocol Buffers, but those solutions were too complex and not flexible enough to hang with Ruby. Tom also wrote Ernie, an Erlang/Ruby hybrid BERT-RPC server that makes it dead simple to write your RPC functions in Ruby (or other languages). Together, all these technologies power GitHub's new federated architecture and allow us to independently and horizontally scale both frontend and backend layers.