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.
Category Archives: Concurrency
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.
Mark Bates: Go for the Rubyist
Mark Bates introduces the Go language to a community of Ruby programmers, pointing to the reasons why many Rubyists are using Go in high-performance situations.
David Beazley: Understanding the Python GIL
The GIL (global interpreter lock) surprises and frustrates many Python developers. This talk by famed Python developer and trainer David Beazley describes the GIL, and some of the efforts Beazley has made to reduce its influence on multithreaded Python code.
Jim Weirich: Ruby, threads, events … and Flying Robots
The late, great Jim Weirich gave this talk about threading (and concurrency, in general) in Ruby.
Caleb Smith: Introduction to Celery
Min Ragen-Kelly: Using IPython for Parallel Computing
IPython is quite popular as an interactive shell, or even for providing shared Web-based notebooks. However, it can also be used for simple parallel computing tasks. In this talk, Min Ragen-Kelley introduces IPython’s parallel-processing capabilities.
Rob Pike’s “Concurrency is not Parallelism”
Legendary developer Rob Pike describes why programmers should understand the different ways in which programs can execute things in parallel.