"Tackling Concurrency Bugs with TLA+" by Hillel Wayne
Strange Loop Conference3 HN recommenders · 2018–2025
24K views · talk · evergreen · Uploaded 2017-10-02
Hillel Wayne's Strange Loop talk introducing TLA+ as a specification language for finding concurrency bugs in designs. It covers stalling, race conditions and dropped messages, with PlusCal examples.
Recommended as a concise, high-level intro to what TLA+ is and when it helps.
42:03The Soul of Erlang and Elixir • Sasa Juric • GOTO 2019
GOTO Conferences
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
49:15Erlang Factory 2014 - That's 'Billion' with a 'B': Scaling to the Next Level at WhatsApp
Erlang Solutions
1:07:10Brian Beckman: Don't fear the Monad
jasonofthel33t
47:43"Turning the database inside out with Apache Samza" by Martin Kleppmann
Strange Loop Conference
59:2328c3: The Science of Insecurity
28c3
42:43"Propositions as Types" by Philip Wadler
Strange Loop Conference
1:02:50The Language of the System - Rich Hickey
ClojureTV
5 comments from Hacker News
I've used it for caching, batch processing, and concurrent web apps, and it's been a huge help. I've gone into how I used it in a couple of places: - "Tackling Concurrency Bugs with TLA+" ( [VIDEO] ) - "Formal Methods in Practice" ( [LINK] ) I love helping people with this stuff, so ping me if you have any questions!
Hillel gave a pretty interesting talk on TLA+ at last year's StrangeLoop: [VIDEO] If you are new to TLA+ and just want to get the basic idea and use cases, I recommend the talk. Edit: I think he also brought home made granola or something. So attending his talks in person has benefits.
I feel TLA+ would be too much to ask in a system interview which is what this site is about. In case anybody is interested, there is a nice talk by Hillel Wayne on youtube ( [VIDEO] ) that provides a high-level overview on what TLA+ is about.
PlusCal uses labels (e.g. "Give:") to designate atomic actions - when you translate it, each labelled section is turned into an atomic action [1]. You can start off with a very simple spec with totally atomic transactions, and gradually make it more granular by introducing more labels, as shown in Wayne's Strange Loop presentation [2] [1] [LINK] [2] [VIDEO] (15:55)
The literature on distributed systems is huge. It depends a lot on your use case what you ought to do. If you're lucky you can avoid shared state, as in no race conditions in either end of your executions. [VIDEO] is fairly concise and gives some recommendations for literature and techniques, obviously making an effort in promoting PlusCal/TLA+ along the way but showcases how even apparently simple algorithms can be problematic as well as how deep analysis has to go to get you a guarantee that the execution will be bug free.