Category Archives: Concurrency

[Video 224] Jose Valim: Idioms for distributed, fault-tolerant applications

Jose Valim is well known as a Web developer, consultant, and open-source contributor. He’s now also known for being the inventor of a new programming language known as Elixir, which combines many of the semantics of Ruby with the distributed, fault-tolerant nature of Erlang. In this talk, Valim describes some of the most common idioms used by programmers working with Elixir, and how they can ensure that our Web applications are as robust as possible.

Mark Smith: Building Services in Go

Go is an open-source systems language that has gotten a great deal of attention for the ease with which it lets you create concurrent services, and especially network services. In this talk, Mark Smith demonstrates how to create a network service in Go, using Go’s patterns such as goroutines and channels.  If you’re interested in creating network services that can scale massively, or just in how Go works, this talk will likely be of interest to you.



Simon Peyton Jones and Tim Harris: Software Transactional Memory

How can you take advantage of today’s multicore systems? Write concurrent programs, of course. But that requires all sorts of tricks and cleverness, such as locking and mutexes. In this talk, two well-known computer scientists (Simon Peyton-Jones and Tim Harris) outline “software transactional memory” — the idea that as with databases, programs can offer transactional access to data. STM is used in Clojure and Haskell to avoid concurrency problems, and its proponents say that it solves many of the problems associated with traditional threading and locking.



Sarah Mount: Message-passing concurrency for Python

Many Python developers, or developers new to Python, want to know they can best get handle multiprocessing — typically using threads, but sometimes using processes. This is a legitimate question, and often leads to disappointment when they hear about the GIL and related restrictions. However, threads aren’t the only way to handle concurrency in Python; we can learn a great deal from other paradigms and programming languages. In this talk, Sarah Mount introduces several of these ideas, and particularly message passing, and considers how and why we might wish to use them in Python.