Track: 21st Century Languages

Location: Empire Complex, 7th fl.

Day of week: Friday

Lessons learned from languages like Rust, Go-lang, Swift, Kotlin, and more.

Track Host: Carmen Andoh

Software Engineer on the Build Infrastructure team @TravisCI

Carmen is a software engineer on the Build Infrastructure team at Travis CI. She was the first scholarship recipient for Gophercon in 2015, where she was first introduced to Go, and hasn't looked back. Ask her about her past lives as a Behavioral Analyst for Autism Spectrum Disorders, Teach for America, and having personally visited over 1000 high schools in the states of NJ, TX, NM, and CO, and all 5 boroughs of NYC.


10:35am - 11:25am

Digital Publishing for Scale: The Economist and Go

The Economist newspaper was first printed in 1843. Since then, readers consume news in rapidly evolving ways and technology has taken the forefront in delivering content and enabling the severe contest between intelligence, which presses forward, and an unworthy, timid ignorance obstructing our progress.

To meet these challenges, The Economist restructured its platforms for digital delivery by breaking down a monolithic CMS and adopting a distributed, microservices architecture. The Economist implemented Go to write services responsible for delivering content across products and platforms. Go has enable the team to quickly adapt to business needs and scale for growing demand, but it has not been without its own challenges. This talk will cover the struggles and victories in transitioning to Go and how Go has uniquely fit The Economist’s digital publishing goals.

Kathryn Jonas, Lead Engineer @TheEconomist

11:50am - 12:40pm

Programming for Hostile Environments

In this presentation, we'll talk about some of the challenges that we've faced at Packet while attempting to program against the worst kind of adversary: physical, bare metal infrastructure. We'll describe a few real-world problems we've faced, general strategies to deal with environments that are not friendly to traditional developers, and practices that can be generalized to ensure good programming standards are maintained.

Nathan Goulding, SVP, Engineering @packethost

1:40pm - 2:30pm

Next Gen Networking Infrastructure With Rust

As the world becomes ever more connected, the scale and sophistication of network infrastructure software is increasing dramatically. However, the requirements for this software are as stringent as ever: it must not only be fast, it must be safe, i.e. able to process untrusted data without crashing or being vulnerable to security exploits. Traditionally, these two requirements have been at odds: network programmers had to pick a language that either offered speed or safety. Enter Rust, a new language that lets you have your cake and eat it too. Rust compiles to native code, while ensuring at compile time that the resulting  programs are memory safe. But Rust provides even more: its higher-order abstractions enable expressive programs and powerful memory management techniques without imposing a runtime cost. In this talk, we’ll show how Rust’s “zero cost abstractions” can be leveraged to provide a networking platform that provides expressiveness, speed, and safety with tradeoffs between them. We describe how these techniques are used in Conduit, a “service mesh” proxy for the next generation of cloud native applications.

Carl Lerche, Senior Software Engineer

2:55pm - 3:45pm

Modeling the Real World With Elixir/OTP

Building software that interacts with the real world is not as trivial as it sounds. When you build software that interacts with the real world, you have model your program to represent the real world. The traditional approach to modeling this is to model real-world events sequentially, one after the other. This falls in line with the von Neumann architecture of a computer where a CPU fetches one instruction at a time. In reality, this does not fit the real world. In the real world, an unimaginable number of events occur simultaneously. In fact, most programming languages used today, model the world in a sequential way, where one event happens at a time and failures and errors are an exception, not the norm. Elixir, a language built on top of the Erlang BEAM VM provides not only built in concurrency primitives but effective error handling that makes modeling the real world a natural exercise.

In this talk, I would provide the audience with a walkthrough of concurrency support and error handling in Elixir. This will be followed by a quick run-through of modeling a simple system and running a large number of concurrent BEAM processes along with graceful error handling behaviour.

Aish Dahal, Engineer @pagerduty

4:10pm - 5:00pm

Solving New School With the Old School (Clojure)

There are numerous challenges that come with an application that services the 21st-century user. The application needs to be fault tolerant/correct, it needs to be parallel and concurrent, it needs to be scalable and it will probably require a rich browser UI. In this talk, we will discuss Clojure, a language that's taking some older ideas and solving 21st-century ideas. Topics that will be discussed are Clojure's answer to types, clojure.spec. The ability to write and reason about parallelism and concurrency with core.async. Lastly, we will discuss using the same language on the server and the browser. This talk is geared to folks that are interested in Clojure, Java developers interested in a functional JVM language, folks interested in functional programming and language enthusiasts.

Jearvon Dharrie, Developer Advocate @Comcast