Argot: a lightweight composable test framework for Go

Matthew Sackman wrote “In a current project we’re writing a number of fairly small REST HTTP servers. There are probably going to be around 10 of these in total so I guess that makes these ‘deci-services’. As part of the testing approach, we wanted to be able to write some end-to-end tests and soak tests, and so went…”

Electric railway journal (1914) By Internet Archive Book Images [No restrictions], via Wikimedia Commons

Testing with Traces?

Matthew Sackman wrote “Most APIs and type signatures are hopelessly inadequate for capturing and describing a model. For example, consider a map and the signatures for put and get. Even if you have pure functional type signatures, the signatures on their own convey no information about what they do with a key and value during put. For this…”

Old spring-cover clock with chain

A memory gotcha

Matthew Sackman wrote “A couple of weeks ago I was reading Juho Snellman’s blog on implementing a hierarchical timer wheel, and as usual, over on the morning paper, Adrian’s covered a paper on various approaches to timer structures. What I found most interesting though is the final graph on Juho’s blog post where he does some performance testing…”

By Mboldfield at English Wikipedia [Public domain], via Wikimedia Commons

Call stack complexity

Matthew Sackman wrote “Over on the morning paper, Adrian’s recently covered a number of papers looking at trying to detect bugs in code using slightly unusual means (i.e. not the usual combination of lots of buggy tests and lots of static checks). So that’s been on my mind lately, at least when it gets a chance in between…”

By Nevinson, C R W [Public domain], via Wikimedia Commons

Pushing Back

Matthew Sackman wrote “Over the last year I’ve become more and more convinced that possibly the most important feature of any queuing system is the ability to take action immediately upon enqueuing of a new item, where the action can modify the queue, and is based on state of the queue itself. Most commonly, this is referred to…”

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

Practising Software Engineering

Matthew Sackman wrote “A tourist stops a musician on the streets of New York. “Excuse me, can you tell me how to get to Carnegie Hall?” “Of course”, answers the musician, “Practise, practise, practise!” In the book ‘Outliers: The Story of Success’, the author Malcolm Gladwell repeatedly mentions the “10,000-Hour Rule”, claiming that the key to achieving world…”

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…”

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…”

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…”