Getting Sieves Right

James Uther wrote “The great thing about being wrong is that you get to learn something. In a previous post I went on at length about the the sieve of eratosthenes. Now that I have been enlightened by Melissa O'Neill I must make corrections.”

By Shamsuddin Muhammad from Fort Hood, TX, USA (Jack Swagger) [CC-BY-2.0 (], via Wikimedia Commons

Documenting an HTTP API with Swagger

Sam Carr wrote “I recently tried out Swagger, for documenting an HTTP API. The big win with Swagger is that it provides a sweet HTML UI to browse your API docs and experiment with sending requests and viewing responses, which is a great experience for other developers that are trying to get to grips with your API. Try…”

By StromBer (Own work) [CC BY 3.0 (], via Wikimedia Commons

Optimizing loops in C for higher numerical throughput and for fun

Jarek Siembida wrote “We had here, in LShift, this typical C-vs-Fortran discussion which prompted me to follow up on it. In this holy war I stand by C and believe that a lot of opinions supporting the alleged superiority of Fortran in numerical throughput come from poor understanding of what actually can be done on the C side.…”

Small shouldn’t mean primitive

David Ireland wrote “The internet of things seems to be coming any day now, but the state of embedded development seems to be deplorable. Almost everything is written in C or C++. Device drivers are written over and over, once for each RTOS, or worse. When high level languages are available, they seem to be implemented directly on…”

Tell don’t ask with Sinatra handlers

Ceri Storey wrote “In Bigwig, in order to keep our code neat and well factored, we’ve tried to adhere to the principle of tell, don’t ask as much as we can. However, one place this can be difficult is within a handler for an HTTP request (we’re using Sinatra for that).”

Going m(on)ad with parser combinators

Frank Shearar wrote “It’s about time someone started talking about Go again around here, so I picked up the old editor, and (painlessly!) installed Go. Maybe 5 minutes later I had the world’s faster compiler, a test framework, a coverage analyzer and a bunch of stuff besides available on my machine. But what to do? Hello World is…”

Zabbix security incidents

David Ireland wrote “Someone discovered a vulnerability in Zabbix recently, and there’s this lovely, detailed description of an exploit based in it on Corelan Team. It’s lovely because it contains all the information I need to tell if my site is vulnerable, and to what extent. There’s also a really useless advisory on Packet Storm Security. Why is…”

CPU cache collisions in the context of performance

Jarek Siembida wrote “This article discusses some potential performance issues caused by CPU cache collisions. In normal scenarios cache collisions don’t pose a problem, it usually is only in specific, high speed applications that they may incur noticeable performance penalties, and as such, things described here should be considered “the last mile effort”. As an example, I will…”

By David Ingham from Bury, Lancashire, England (P2204757 Uploaded by oxyman) [CC-BY-SA-2.0 (], via Wikimedia Commons

Changing the Primary Key Type in Ruby on Rails Models

Yong Wen Chua wrote “Ruby on Rails (RoR) likes to emphasise the concept of convention over configuration. Therefore, it seeks to minimialise the amount of configuration by resorting to some defaults. These defaults are sometimes not desirable, and RoR does not always make it easy to deviate from these defaults.”

My little Backpressure: Flow Control is magic

Ceri Storey wrote “When we’re designing systems that are designed to be robust against failure, it’s important to know how behaviour at your Integration points (a term borrowed from Michael Nygard’s book Relase It!) impacts the rest of the system. For example, if your database or a remote API is running slowly, then in Synchronous systems, because you…”

Precise scheduling with RabbitMQ

Ceri Storey wrote “On a project recently, we needed to be able to process jobs asynchronously, but we also needed to be able to specify that they should be run at a certain point in the future. We also needed to be able to implement exponential backoff on failure. We initially tried to integrate Sidekiq, but unfortunately it…”

The great GC vs reference counting debate

David Ireland wrote “I read a blog post post recently to the effect that GC is too expensive in mobile devices, Steve Jobs was right, reference counting is the way. It’s titled ‘why mobile web apps are slow’. I’m inclined to take issue with this: It’s a long since resolved dispute, and GC won. I don’t want Steve…”

Controlling fast producers in a Rabbit-as-a-Service

Frank Shearar wrote “Offering a RabbitMQ server on the public internet poses a few challenges. Today we’ll look at the problem of controlling fast producers.”

POSIX Threads and fork(2): on not crossing the streams

Ceri Storey wrote “You’ve maybe heard that with C and C++, it’s rarely a good idea to mix usage of the POSIX threading library, and fork(2) based concurrency. I’d heard this myself, but to be honest, I never quite understood why.”

Hybrid apps

Martin Eden wrote “We recently developed an iPad app. It’s requirements were very simple: Essentially, the app was to be a brochure that a salesperson could use to demonstrate and talk about products with a customer. It needed to be able to display text and videos, and provide links to further online web resources and PDFs. iOS development…”

Emptying the depths of your database with Sequel.

Ceri Storey wrote “When writing tests for an application which involves a database, one of the first things you need to do is ensure sure that all of database integration tests start from a known state. Now, understandably, there are already libraries that can do this for us, such as the Database Cleaner gem. However, when we started the project,…”