Conference: Nov 13-15, 2017
Workshops: Nov 16-17, 2017
Presentation: Looking Inside a Race Detector
Key Takeaways
- Appreciate the problems and challenges around data race detection.
- Understand the core computer science concepts that enable dynamic (and to a lesser extent static) race detection.
- Understand the implementation of these concepts in a practical race detector, namely the Go Race Detector.
Abstract
Writing race-free concurrent code is hard. Debugging racy concurrent code is even harder. Race detectors are seriously cool tools that make both easy -- they detect the race conditions in a program.
But race conditions are arguably the most elusive programming errors, so how do race detectors detect them?
This talk will explore the internals of the Go race detector to answer that question. We will delve into the compiler instrumentation of the program, and the run-time module that detects data races. We will touch upon the optimizations that make the dynamic race detector practical for use in the real world, and evaluate how practical it really is.
Interview
Kavya: Samsara is an IoT start-up that provides real-time monitoring for industry applications. I primarily work on backend and infrastructure, so the focus of my day-to-day is building and scaling the workhorse between the sensors and the dashboards.
Kavya: The areas we see the largest traction in right now are fleet monitoring and environmental monitoring. For example, if you’re in the food manufacturing industry, you would need to track things like where your delivery fleet vehicles are and view vehicle diagnostics remotely, and also monitor the temperature inside the vehicles -- we provide insights on a number of operational concerns like that.
Kavya: The first half of the talk will explain the fundamental concepts and theory behind one type of dynamic race detection. We’ll see how ideas like the happens-before relationship (https://en.wikipedia.org/wiki/Happened-before) and vector clocks (https://en.wikipedia.org/wiki/Vector_clock) -- that have typically been discussed in the context of distributed systems -- apply to the problem of race detection.
The second half will explore how the theory is implemented in the Go race detector. Many times, in computer science, academic research cannot be applied in practice easily because it turns out to be too complex to implement correctly, or not performant. That’s not the case here. We’ll see how the theory is implemented in a practical and performant race detector. The talk will use code, compiler output and is targeted at developers.
.
Tracks
Monday Nov 7
-
Architectures You've Always Wondered About
You know the names. Now learn lessons from their architectures
-
Distributed Systems War Stories
“A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.” - Lamport.
-
Containers Everywhere
State of the art in Container deployment, management, scheduling
-
Art of Relevancy and Recommendations
Lessons on the adoption of practical, real-world machine learning practices. AI & Deep learning explored.
-
Next Generation Web Standards, Frameworks, and Techniques
JavaScript, HTML5, WASM, and more... innovations targetting the browser
-
Optimize You
Keeping life in balance is a challenge. Learn lifehacks, tips, & techniques for success.
Tuesday Nov 8
-
Next Generation Microservices
What will microservices look like in 3 years? What if we could start over?
-
Java: Are You Ready for This?
Real world lessons & prepping for JDK9. Reactive code in Java today, Performance/Optimization, Where Unsafe is heading, & JVM compile interface.
-
Big Data Meets the Cloud
Overviews and lessons learned from companies that have implemented their Big Data use-cases in the Cloud
-
Evolving DevOps
Lessons/stories on optimizing the deployment pipeline
-
Software Engineering Softskills
Great engineers do more than code. Learn their secrets and level up.
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
Wednesday Nov 9
-
Architecting for Failure
Your system will fail. Take control before it takes you with it.
-
Stream Processing
Stream Processing, Near-Real Time Processing
-
Bare Metal Performance
Native languages, kernel bypass, tooling - make the most of your hardware
-
Culture as a Differentiator
The why and how for building successful engineering cultures
-
//TODO: Security <-- fix this
Building security from the start. Stories, lessons, and innovations advancing the field of software security.
-
UX Reimagined
Bots, virtual reality, voice, and new thought processes around design. The track explores the current art of the possible in UX and lessons from early adoption.