Lessons learned from languages like Rust, Go-lang, Swift, Kotlin, and more.
Track: 21st Century Languages
Location: Empire Complex, 7th fl.
Day of week: Friday
Track Host: Carmen Andoh
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.
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.
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.
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.
4:10pm - 5:00pm
Solving New School With the Old School (Clojure)
Tracks
-
Microservices: Patterns & Practices
Evolving, observing, persisting, and building modern microservices
-
Developer Experience: Level up Your Engineering Effectiveness
Improving the end to end developer experience - design, dev, test, deploy, operate/understand. Tools, techniques, and trends.
-
Modern Java Reloaded
Modern, Modular, fast, and effective Java. Pushing the boundaries of JDK 9 and beyond.
-
Modern User Interfaces: Screens and Beyond
Zero UI, voice, mobile: Interfaces pushing the boundary of what we consider to be the interface
-
Practical Machine Learning
Applied machine learning lessons for SWEs, including tech around TensorFlow, TPUs, Keras, Caffe, & more
-
Ethics in Computing
Inclusive technology, Ethics and politics of technology. Considering bias. Societal relationship with tech. Also the privacy problems we have today (e.g., GDPR, right to be forgotten)
-
Architectures You've Always Wondered About
Next-gen architectures from the most admired companies in software, such as Netflix, Google, Facebook, Twitter, Goldman Sachs
-
Modern CS in the Real World
Thoughts pushing software forward, including consensus, CRDT's, formal methods, & probalistic programming
-
Container and Orchestration Platforms in Action
Runtime containers, libraries, and services that power microservices
-
Finding the Serverless Sweetspot
Stories about the pains and gains from migrating to Serverless.
-
Chaos, Complexity, and Resilience
Lessons building resilient systems and the war stories that drove their adoption
-
Real World Security
Practical lessons building, maintaining, and deploying secure systems
-
Blockchain Enabled
Exploring Smart contracts, oracles, sidechains, and what can/cannot be done with blockchain today.
-
21st Century Languages
Lessons learned from languages like Rust, Go-lang, Swift, Kotlin, and more.
-
Empowered Teams
Safely running inclusive teams that are autonomous and self-correcting