Adding flexibility to build processes

Ceri Storey wrote “Or “Knowing where to break the (build) chains” One of the ways we can im­prove a build, re­lease and de­ploy pro­cess is chan­ging where in the chain we make use of de­pend­en­cies.”

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

Die-hard Statefully

Ceri Storey wrote “After reading Solving the Water Jug Problem from Die Hard 3 with TLA+ and Hy­po­thesis, I figured it’d be amusing to re­pro­duce it in Rust as diehard-rs, along with its quickcheck lib­rary.”

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

A taste of CloudFormation

Ceri Storey wrote “So, we’ve recently had cause to move one of our internal applications to the cloud; which has largely been an excuse for me to get some experience in some relatively modern operations technologies. Amazon’s CloudFormation is designed so that you can declaratively specify the infrastructure resources (eg: virtual machines, load balancers, container configuration, &c) that…”

Sturmfront auf Doppler-Radar-Schirm, public domain, von www.noaa.gov

Adventures in TCP latency measurement

Ceri Storey wrote “Re­cently, Google have pub­lished an art­icle on BRR, an al­gorithm that ex­pli­citly meas­ures the round-trip latency and band­width ca­pa­city of the link between two ma­chines (be it in a data­center, or a mo­bile phone) to avoid sending more traffic than is use­ful, causing queues to build up in the net­work that need­lessly in­crease latency. So…”

By John Ficara (This image is from the FEMA Photo Library.) [Public domain], via Wikimedia Commons

Testing as question asking or Hypothesis Driven Development

Ceri Storey wrote “So, my co-worker Ian asks the question “Why bother testing?”. I think that an under-considered question is how we think about testing. I would wager, that a sizable majority of programmers (myself included) will usually learn one or two techniques for testing, and then gravitated towards those same set of answers for most problems. As…”

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

It’s all happened before

Ceri Storey wrote “It’s all happened before Coming from an operations background, I’ve found that one of the best ways to understand a system’s behaviour is to trace the messages between components. Now, most languages go have a log library, that will at minimum, allow developers to log when an event occurred with a description. However, if we…”

Rules-based Network programming with Mio and Rust

Ceri Storey wrote “One thing that you notice after spending most of your time looking at the insides of a program, is that it’s very easy to get bogged down in implementation detail, and end up with rather an optimistic view of how well the world outside of your application works. This is an especially common theme in…”

By David Ingham from Bury, Lancashire, England (P2204757 Uploaded by oxyman) [CC-BY-SA-2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons

More Clojure component patterns

Ceri Storey wrote “Like the proper nerd that I am, I’ve been recently playing around with the National Rail data feeds, with a view to drawing some pretty pictures of quite how differently timely our train services are. So, when you’re developing at the REPL, it’s convenient to be able to cleanly shutdown and restart a n service.…”

(defn reloaded/-main [] …)

Ceri Storey wrote “I’ve been using Stuart Sierra’s reloaded pattern on a few Clojure projects recently, and I hit upon the problem of how best to use Stuart Sierra’s reloaded with a typical long running application. So, I thought I’d share one possible solution. Most of the code should be self explanatory, but there are a few things…”

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).”