RabbitMQ Summit 2019

David Ireland wrote “As Oliver Wyman were platinum sponsors of this years’ RabbitMQ Summit, a group of us were in attendance to contribute and hear the latest news from today’s RabbitMQ users. Our own Alex Thomas gave a talk: Using the Source-oriented Exchanges Pattern to Keep Events in Order. Another talk I particularly enjoyed was Lifting the Lid…”

By British Post Office (Scan of original(s)) [Public domain], via Wikimedia Commons

RabbitMQ and transactions

David Ireland wrote “RabbitMQ can’t (in general) participate in two phase commit. From a practical point of view, RabbitMQ can only make a message durable by adding it to a queue. This makes quite a few optimisations possible. Transaction participation would require RabbitMQ to spool messages temporarily on disk before adding them to a queue on transaction commit,…”

By J.smith (Own work) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons

Messaging, partition and consistency

David Ireland wrote “‘Why is this so hard?’ is a recurring theme of my RabbitMQ consulting at the moment. If a database gets a split brain, I just ask it to reconcile, and it mostly works. Why can’t RabbitMQ do that? Here is an attempt to explain that in fairly concrete terms. Imagine a simple system where a…”

By Skrrp (Own work) [CC BY 3.0 (http://creativecommons.org/licenses/by/3.0)], via Wikimedia Commons

RabbitMQ throughput: assigning blame

David Ireland wrote “Recently I looked at the instrumentation API to see what I could figure out about allocation performance. Actually, there’s a bunch of information available via erlang:system_info:  (rabbit@mrclumsy)2> erlang:system_info({allocator,binary_alloc}). [{instance,0, [{versions,"0.9","3.0"}, ... It’s far too long to include here, but it at least confirms the allocator is the best fit allocator. Erlang also promises that coalescing…”

By Szymon (Poczta Polska) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

The end-to-end principle and RabbitMQ queue mirroring

David Ireland wrote “One of the foundations of the internet is the end-to-end principle as described by Saltzer, J. H., D. P. Reed, and D. D. Clark (1981) in End-to-End Arguments in System Design. This pretty much says queue mirroring as a reliability mechanism is a waste of time. You might argue it’s time the RabbitMQ team has spent…”

By Kander (Own work) [Public domain], via Wikimedia Commons

Bloated Rabbit – Part 1

David Ireland wrote “Can a rabbit with a 128Gb stomach swallow 128Gb of carrots? I’m working with a client at the moment, and they seem to be finding that no, it can’t. I want to figure out why not, so I’m going to have to find out a bit about Erlang memory management. RabbitMQ messages are stored as…”

Smart meters

David Ireland wrote “I’ve been using a micro-controller to automatically dim lights according to the time of day and ambient light conditions. At some point, I decided it would be easier to tinker with if I just used a raspberry pi, logged into it, and edited a python program. This doesn’t work: The pi basically can’t do PWM…”

By Kiran Foster from no fixed abode, New Zealand (doughnut) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

Gemalto

David Ireland wrote “It’s claimed GCHQ were able to steal bulk keys from Gemalto a GSM SIM manufacturer. Assuming that GSM was a sane public key based system… Making SIMs can be like this: have a machine which generates key pairs, writes the private key into the SIM, and the public key to a file along with the…”

Why not program in Standard ML?

David Ireland wrote “I decided to learn a language from the ML family recently, because we are seeing quite a few good candidates whose strongest language is F# or OCAML. So I decided to learn Standard ML. Yes, I know, that makes no sense. But wait… Standard ML is really small and easily learned. If you know another…”

Honeycomb, 2001, Gavin Mackintosh, South Molton, UK. Creative Commons, via WikiCommons.

Java multi methods new home

David Ireland wrote “I’ve split Java multi-methods out of LShift’s Java library. That’s mostly because Guava has equivalents for just about everything else in the library, but the multi-methods part is still unique, as far as I’m aware. You can find it here. You can raise tickets there as well. For more information, see the original post. Here’s…”

By Alberto-g-rovi (Own work) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0) or GFDL (http://www.gnu.org/copyleft/fdl.html)], via Wikimedia Commons

When in Rome

David Ireland wrote “I’ve been trying to integrate js-sequence-diagrams into Trac. I’ve reached the point where I can choose between my sequence diagrams getting rendered, and the rest of the Javascript in Trac working. And it’s all because of an underscore… There’s a popular library in the Javascript world: underscore. In python _ is used to internationalize a…”

Facebook android security fail

David Ireland wrote “I wrote about the Ocado android applications ridiculous privileges  list a while back. Facebook has reminded me of it: Facebook app now reads your smartphone’s text messages? THE TRUTH. Facebook want to be able to capture the two factor auth message straight from your text messages, so they ask for access to all your text messages.…”