Everything I wish I didn’t know about concurrency
From concepts and idioms to war stories and anecdotes
Written by Manik Surtani.
Everything we do as engineers involves concurrency. Thanks to limitations in heat dissipation technology, Moore’s Law hit practical limits over a decade ago and the only way computing has progressed has been to cram more cores onto a die, and/or use more CPUs. And Amdahl’s Law has ruled ever since.
Concurrency, though, is everywhere, and there exists a large class of systems that we don’t traditionally think of as “concurrent” — such as the interactions between a client and a server, single-threaded applications running on a multi-user system, OS virtualization, shared datastores, and many more. Thinking about concurrency is vital to writing correct, scalable, and performant software. However, the successful application of concurrency is a unique blend of theory and practice.
At Square, we recently organized a seminar titled “Everything I wish I didn’t know about concurrency”, where we started with a short refresher on some concurrency concepts and idioms. We then presented a series of questions to a panel of Square engineers, who shared war stories, anecdotes, and puzzlers, and talked about interesting applications of concurrency they’ve encountered.
You’ll get a glimpse of the mental heuristics applied when designing, building, and debugging concurrent systems. Whether you triggered your first race condition on an Apple II in 1977 or on a mission-critical production system earlier this month, there should be content that is relevant, fun, and interesting for you!
Speakers and panelists
Manik Surtani is an engineer on Square’s Payments Platform, focusing on scalability and high availability problems. He has a background in distributed computing and is the founder of Infinispan, a data grid platform.
Gian Perrone is an engineer on the Seller Analytics & Reporting team at Square, and holds a PhD in Concurrency Theory from the IT University of Copenhagen.
Randy Wigginton’s obsession with computers began in 1974 when he joined Silicon Valley-based Homebrew Computer Club. In 1977 Randy joined Apple Computer as their first software engineer and employee no. 6. Randy’s career spans many of Silicon Valley’s most notable companies such as E*TRADE, Ebay, and Google. Ever the early adopter, Randy joined Square in 2011 and has most notably built the payment gateways to the company’s payment partners today.
Jochen Bekmann is an engineer on Square Cash. Previously, Jochen co-founded Fluent.io, a cloud-based email client, and worked at Google.
Tamir Duberstein is a generalist engineer at Square.