Learning Haskell messily

Ceri Storey wrote “So, over the past year or so, a few of us at work have been meeting weekly1 to read the book Haskell Programming from first principles, so having finally having finished it, I thought I’d give writing something non-trivial another go. I say another, as I’ve made a whole bunch of attempts before, but for one reason…”

How software systems learn

Ceri Storey wrote “As part of a recent LShift tech meet­ing, we watched the first episode of Stewart Brand’s series How Build­ings Learn, as a way to prompt dis­cus­sion on what it means for soft­ware sys­tems to be ‘liv­able’.”

Grant Hollingworth Attribution-ShareAlike 2.0 Generic (CC BY-SA 2.0)

Choosing the right scaffold

Ceri Storey wrote “One thing I’ve come to realise as I’ve matured as a developer, is that it turns out I’m merely human. That is somewhat obvious, but you often hear people opine on various discussion boards that their particular tools (that other people feel are error prone) are actually just fine; as long as you remember to…”

Anne Worner Points in the Right Direction (CC BY-SA 2.0)

Making the dockers work

Ceri Storey wrote “Over the past few weeks I’ve been fo­cusing mostly on build and de­ploy­ment tooling around docker and Kuber­netes. One par­tic­ular down­side of the cur­rent sys­tem, is our ap­plic­a­tions have a fair number of ser­vice de­pend­en­cies. Up until now, we’ve taken to run­ning everything in­side docker using dock­er­-­com­pose, but this feels to me more like a way…”

Supposedly a property test library

Ceri Storey wrote “Over the past few weeks, I’ve been in­spired to create a new prop­erty testing lib­rary for rust, very much in­spired by the work in hy­po­thesis. Why use sup­pos­i­tions over say, quickcheck? For one, this takes in­spir­a­tion from hy­po­thesis and theft. While it’s still in it’s early days, the gen­er­ator system (in­spired by hy­po­thesis’ gen­er­ators means…”

A quick tour of LLVM’s Sanitizer coverage

Ceri Storey wrote “After reading about the new coverage features in hy­po­thesis, I’ve become in­t­erested in how guided fuzzing (as im­ple­mented by Amer­ican Fuzzy Lop or LLVM’s lib­Fuzzer works in­tern­ally with Rust and LLVM. The first step is to un­der­stand how cov­erage works. Clang’s San­it­izer Cov­erage doc­u­ment­a­tion ex­plains the func­tion­ality very well, so I’ll not re­peat too much of that. First of all, I started…”

Automagical port allocation for tests

Ceri Storey wrote “It’s quite common to want to test a net­work ser­vice from the out­side, as if it was being ac­cessed from a cli­ent. Quite of­ten, people will pick a “well-­known” port to use, eg: port 8080 or 8888 for a HTTP ser­vice. But that means that if you leave a stray service process lying around, you’ll need to hunt it…”

By Ron Armstrong from Helena, MT, USA (HMKC Spring 2007 Agility Trial) [CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons

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