a series of pipes …

No, no, this is for illustrating bandwidth, not a deranged description of the internet by a mad trapper. This week's problem Recently I was in a discussion of pipeline performance with a number of folks, ranging from a networking engineer, to a developer and to some dev/ops folks. We were trying to compare a bunch… Continue reading a series of pipes …


My submission to the CRTC re website blocking

I am a published author on technical subjects, and therefore a beneficiary of copyright. I  have also been a close follower of the debates around website blocking and de-listing that culminated in Google Inc. v. Equustek Solutions Inc., 2017 SCC 34 (CanLII). I would like to suggest that the CRTC not support an extra-legal mechanism for… Continue reading My submission to the CRTC re website blocking

Waterfall as a failure-hiding algorithm

Imagine that you've been handed a death-march project and you need time to arrange a transfer or a new job, before the project fails. If your company isn't natively committed to agile, you can use the argument of "adding rigor and planning" to justify switching to waterfall, and then use waterfall to hide the failure… Continue reading Waterfall as a failure-hiding algorithm


Other things to use a load generator for

Along with load testing, my projects use a generated load for: Profiling Where does the program spend it’s time when it’s actually doing a production load? That’s not the same as where it goes doing unit tests! Code coverage What part of the code is unreachable by paying customers? Why are we paying for code… Continue reading Other things to use a load generator for


To Continuous Integration / Deployment add Continuous Testing

I've had good experiences with BDD (behavior directed development) based on the "behave" python implementation, and wanted to try a go version. In the process of trying out tools, I discovered that the goConvey team had also provided a continuous-testing daemon that didn't wait until I did a git push, but instead did a test… Continue reading To Continuous Integration / Deployment add Continuous Testing


Getting the resources you just used

Everyone knows the Go idiom for getting the time taken to do something: initial := time.Now() resp, err := httpClient.Do(req) latency := time.Since(initial) But what if you want to know how much CPU that unit of work required, rather than how long it took in wall-clock time? For example, how many of these http requests… Continue reading Getting the resources you just used


Play it Again, Sam — a load testing tool

For many years, I've been working in capacity planning using a combination of mathematical models and one-off test tools. I'm keeping the models: they're what make the work predictive, but it's time for a reusable tool that's simple and easy to add options to. Record-replay testing The classic way to do load testing is to… Continue reading Play it Again, Sam — a load testing tool