Santeri Viinamäki [CC-BY-3.0 (], via Wikimedia Commons

CodeMesh 2014 Day 1

James Uther wrote “I was at day 1 of CodeMesh this year (you can see Tim’s report on day 2 here). A quick recap: QOTD: There are 3 fire exits as marked, but we’re confident that Erlang programmers who die will be restarted. Keynote: complexity is outside the code Jessica Kerr & Dan North A good, entertaining talk that…”

SpringSource / VMWare Acquire Rabbit Technologies

Mike Rowlands wrote “SpringSource, a division of VMware, Inc. today announced the acquisition by VMware of Rabbit Technologies, Ltd, a company set up by LShift and partners Monadic and CohesiveFT. Read the full story”

On the limits of concurrency: Worker Pools in Erlang

Matthew Sackman wrote “A worker pool is a very common pattern, and they exist in the standard libraries for many languages. The idea is simple: submit some sort of closure to a service which commits to running the closure in the future in some thread. Normally the work is shared out among many different threads and in the…”

The fine art of holding a file descriptor

Matthew Sackman wrote “People tend to like certain software packages to be scalable. This can have a number of different meanings but mostly it means that as you throw more work at the program, it may require some more resources, in terms of memory or CPU, but it nevertheless just keeps on working. Strangely enough, it’s fairly difficult…”

By Tangopaso (Self-photographed) [Public domain], via Wikimedia Commons

Memory matters – even in Erlang

Marek Majkowski wrote “Some time ago we got an interesting bug report for RabbitMQ. Surprisingly, unlike other complex bugs, this one is easy to describe:  At some point basic.get suddenly starts being very slow – about 9 times slower!”

RabbitMQ-shovel: Message Relocation Equipment

Matthew Sackman wrote “In several applications, it’s very useful to be able to take messages out of one RabbitMQ broker, and insert them into another. Many people on our mailing list have being asking for such a shovel, and we’ve recently been able to devote some time to writing one. This takes the form of a plugin for…”

Plugin exchange types for RabbitMQ

Michael Bridgen wrote “An obvious extension point for an AMQP broker is the addition of new types of exchange. An exchange type essentially represents an algorithm for dispatching messages to queues, usually based on the message's routing key, given how the queues are bound to the exchange -- it's a routing algorithm. RabbitMQ now supports plugin exchange types, currently on an experimental branch.”

Merry Christmas: Toke — Tokyo Cabinet driver for Erlang

Matthew Sackman wrote “Tokyo Cabinet is a rather excellent key-value store, with the ability to write to disk in a sane way (i.e. not just repeatedly dumping the same data over and over again), operate in bounded memory, and go really fast. I like it a lot, and there’s a likelihood that there’ll be a RabbitMQ plugin fairly…”

RabbitMQ at the Skills Matter Functional Programming Exchange

Matthew Sackman wrote “Today I was lucky enough to give a talk at the Skills Matter Functional Programming Exchange. I talked about resource management in RabbitMQ and how we’re improving this in upcoming versions of RabbitMQ. All the sessions were videotaped and it would seem that a podcast will be going up shortly. In the mean time you…”

Cranial Surgery: Giving Rabbit more Memory

Matthew Sackman wrote “Many users of Rabbit have been asking us about how Rabbit copes with many large messages in queues, to the extent that the total size of these messages exhausts the available physical memory (RAM). As things stand at the moment, the answer is not very well. Although we have a persistence mechanism, that is not…”