"Tackling Concurrency Bugs with TLA+" by Hillel Wayne
Strange Loop Conference3 HN recommenders · recommended in 3 months, 2018-2025
24K views · 9 years ago · talk · evergreen
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.
59:50Leslie Lamport: Thinking Above the Code
Microsoft Research
403K views • 12 years ago
39:40"Type-Driven Program Synthesis" by Nadia Polikarpova
Strange Loop Conference
15K views • 8 years ago
1:10:23"Systems that run forever self-heal and scale" by Joe Armstrong (2013)
Strange Loop Conference
85K views • 5 years ago
40:27"Finding bugs without running or even looking at code" by Jay Parlar
Strange Loop Conference
42K views • 7 years ago
40:20"Testing Distributed Systems w/ Deterministic Simulation" by Will Wilson
Strange Loop Conference
55K views • 12 years ago
36:58"A (Not So Gentle) Introduction To Systems Programming In ATS" by Aditya Siram
Strange Loop Conference
26K views • 9 years ago
41:08"Transactions: myths, surprises and opportunities" by Martin Kleppmann
Strange Loop Conference
84K views • 11 years ago
41:06"Unison: a new distributed programming language" by Paul Chiusano
Strange Loop Conference
45K views • 7 years ago
43:04"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)
Strange Loop Conference
468K views • 4 years ago
1:06:45Let's #TalkConcurrency Panel Discussion with Sir Tony Hoare, Joe Armstrong, and Carl Hewitt
Erlang Solutions
13K views • 7 years ago
51:27Google I/O 2012 - Go Concurrency Patterns
Google for Developers
894K views • 14 years ago
35:15Solid Ground // Saša Jurić
EMPEX Conference
14K views • 9 years ago
2:32:39Clojure Concurrency - Rich Hickey
ClojureTV
73K views • 13 years ago
42:20"Stop Rate Limiting! Capacity Management Done Right" by Jon Moore
Strange Loop Conference
41K views • 9 years ago
38:36"A Little Taste of Dependent Types" by David Christiansen
Strange Loop Conference
48K views • 8 years ago
43:39CRDTs and the Quest for Distributed Consistency
InfoQ
68K views • 8 years ago
40:00"Agility & Robustness: Clojure spec" by Stuart Halloway
Strange Loop Conference
25K views • 10 years ago
1:12:10Practical Common Lisp
Google TechTalks
98K views • 19 years ago
1:01:39"Simple Made Easy" - Rich Hickey (2011)
Strange Loop Conference
219K views • 5 years ago
36:14Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt
ClojureTV
8K views • 9 years ago
5 comments from Hacker News
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. ▶ this 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.
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] ▶ this video (15:55)
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 ( ▶ this video ) that provides a high-level overview on what TLA+ is about.
Hillel gave a pretty interesting talk on TLA+ at last year's StrangeLoop: ▶ this 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'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+" ( ▶ this video ) - "Formal Methods in Practice" ( link ) I love helping people with this stuff, so ping me if you have any questions!