Containers at Facebook
At FB, we run containers with Linux, Btrfs and systemd. But how does this approach work at scale, and what is the philosophy behind this approach? In this talk, I will dive into the details of these components, including: Advanced details of btrfs and the benefits of a composable file system on a high-traffic network How we use systemd on...
Five Lessons in Distributed Databases
It's been ten years since the first mainstream distributed databases launched. In that time, we've seen hype (NoSQL/NewSQL will do everything!), disillusionment (you still can't beat the CAP theorem), and consolidation (to basically Cassandra and MongoDB). Meanwhile, the big three cloud vendors each launched their own products, and the industry is collectively starting to understand their role in building modern...
Flutter + ML Kit: Building Smart Cross-Platform Apps
Getting started with machine learning on the mobile platform can be daunting. From learning how to implement low-level models and use frameworks, to optimizing and adapting those models for mobile, it can be overwhelming. With ML Kit, regardless of one’s machine learning expertise, one can build compelling machine learning functionality into their mobile apps. Using ML Kit and Flutter, which...
From Rails to Elm and Haskell
When I joined NoRedInk in 2013, we had a typical Ruby on Rails web application. In 2015 we introduced Elm, a pure functional programming language for building Web UIs, and it spread like wildfire to become our primary tool for front-end programming. In 2019 we have over 300,000 lines of Elm code powering the user interface our millions of users...
Functions: Faster to Deploy
Functions are the key superpower enabling serverless architectures. Certainly the low cost of only paying for what you use (100% utilization) is a nice benefit. And no doubt there are operational savings by only focusing on your business logic instead of managing a brittle and complicated infrastructure. But designing with functions as the smallest unit of deployment also confers a...
Generic Swift: It Isn’t Supposed to Hurt
They said Swift is “protocol oriented,” so you wrote protocols. But you wanted them to be generic, so you added associated types. But your collections broke, so you added type-erasers. But your “as”-casts broke, so you switched to Any. But then everything broke, so you read about Mirror. And the tears began. Why did it have to be so hard...
Getting out of Cloud Jail
AWS has made our life easier. And it has made scaling easier – but too often, when you go to scale, it's a matter of reaching for the credit card to add more, more, more. Soon, you're in Cloud Jail. Learn how we dealt with this at TUNE, and how we ultimately did a jailbreak.
In the world of IoT, wireless transports are not created equal
So you want to connect a "thing".... or many "things"? In this journey, you need to make a very important decision (among many): which wireless protocol is right for your use case and how do you choose your platform? At the end of the day, no matter how good your application, if you don’t have reliable connectivity, you just have...
Java Futures, 2019 Edition
Abstract: Since last ETE, we've seen two more major versions of the JDK! What's changed in the last year, and what's coming down the road? Join Java Language Architect Brian Goetz in a whirlwind tour of just some of the features coming to Java next.
Keynote – Collective Problem Solving: Music, Science, Software
There’s a story to tell, about musicians, artists, philosophers, scientists, and then programmers. There’s a truth inside it that leads to a new view of work, that sees beauty in the painful complexity that is software development. Starting from The Journal of the History of Ideas, Jessica traces the concept of an “invisible college” through music and art and science...
Keynote – FP vs OOP: Choose Two
This talk is about the fictitious divisions we invent, and how they harm the progress of our industry. In particular, we'll look at the supposed tension between Functional Programming and Object-Oriented Programming, and hopefully see that the tension is all in our heads.
Kubernetes: Your Next Java Application Server
In the Java ecosystem, we have historically been enamored by the concept of the "Application Server," the runtime engine that not only gave us portable APIs (e.g. JMS, JAX-RS, JSF, EJB) but also gave us critical runtime infrastructure for things like farm deployments, configuration, load-balancing, fail-over, distributed management and monitoring. In this session, we are going to demonstrate how Kubernetes...
Less Code, More Impact! – A Workshop
Let's have some fun! No prior design experience required. This will be a lively, interactive exercise where we explore a user-centric and pencil-first approach to software design & development. In this hands-on workshop we will walk through some tried-and-true methods to: Listen to users to ensure we are focusing on their needs Wireframe to solidify ideas and gain consensus within...
Machine Learning: from ABCs to DEFs
I'd like to introduce you to this new, 60 year old, kid on the block: "Machine Learning". Some math + some stats, but mostly "what"s, "why"s and "how"s of different problems it solves, and of course some code, since that's what machines speak best. While we'll ride along with mouthfuls such as "stochastic gradient descent", "cross entropy" and friends, the...
Making SPA Smarter with GraphQL
GraphQL is a client/server API specification for submitting queries, updates and subscribing to data, and it's been an interesting replacement technology for JSON in single page applications. Originally created for the Facebook application in 2012, it began life serving the graph of connections between people, posts, and other related data. Ultimately, Facebook open-sourced the relay server and the API was...
Neural Networks IRL (in real life)
What exactly is a Neural Network? How do you go from experimenting with a deep learning model in the notebook of your choice to deploying your model to production? What is the secret sauce to a successful feature or platform that utilizes "AI" to accomplish the business goals or needs of your platform? And more importantly, how is engineering always...
Principles of Collaborative Automation
Great automation doesn’t replace humans; it enhances us. When we are choosing or building tools for our team, we want them to play like team members: keep us informed, make the easy decisions repeatably, and pass the hard decisions to the humans along with the information we need to make them. Based on research in human-centered design, this talk enumerates...
Rust: A Language for the Next 40 Years
Learn what makes the programming language Rust a unique technology, such as the memory safety guarantees that enable more people to write performant systems-level code. Hear about how Rust Editions evolve the language and the compiler without breaking existing code. See who's trusting Rust for critical products today. Join us on Rust's journey to the future.
Scaling the Development of Product Feature Codebases
How do you scale the development of a feature when you have many different teams interacting in the same codebase, building across Android, iOS, and web? How should your codebase evolve when your feature needs to go from a small set of one-off screens to a system that can integrate many new products rapidly and sustainably? In this talk I'll...
Serverless Architecture: A Love Story
Serverless applications are the future of lightweight, scalable, and performant application development. Developers are breaking apart their monolith applications into smaller, purpose-focused microservices. They are quickly and purposefully prototyping application ideas. Moving to a “Serverless” environment really means to migrating a fully-hosted environment to using a fully-managed compute or persistence service from one of the big cloud platform providers. One...
Tales from the QA Crypt
The Go Language: What Makes it Different?
The Go programming language emphasizes simplicity and speed. Common programming mistakes are detected by the compiler. The language itself encourages proper error handling. It has first-class concurrency support using goroutines and channels. And on top of all this, Go offers lightning-fast compilation and execution. This talk will cover all the unique features that could make Go the ideal choice for...
The Road to Zig 1.0
Despite being one of the youngest programming languages, Zig is progressing rapidly toward its first production-ready release. Join creator Andrew Kelley for a justification of Zig's existence and a tour of the unique features of Zig. See what people have already built with it today, and explore what will be possible when Zig reaches 1.0. Bring your skepticism, tough questions,...
Understanding Parkinson’s Disease Through Data Science
Parkinson’s disease (PD) is a chronic, degenerative neurological disorder that affects as many as one in a 100 people over the age of 60. It is estimated that more than five million individuals have PD worldwide, and the number is growing with today’s aging population. Since 2010 the Michael J. Fox Foundation (MJFF) has invested $100M assembling the world’s largest...
Zero to Serverless in 45 Minutes
So I have this production AngularJS on Java/Spring REST app. It's getting a bit long in the tooth. I mean, how many Internet Dog Years ago was that? It would work better as a cloud-native app -- faster to load, cheaper to run, more reliable, let them do all the maintenance work, HTTPS out of the box, all that good...