Solving computer problems with indirection

There's a pattern that crops up a lot in computing - indirection. It's sometimes a little bit disguised, but it's used to solve many kinds of problem. To introduce it I'll first use an example from outside computing, that I like for many reasons. Five freedoms for animal welfare  It might be a bit odd … Continue reading Solving computer problems with indirection

The world’s greatest music?

I sometimes listen to the UK radio station Classic FM.  Its strapline is “The world’s greatest music”. Leaving aside the difficulty of defining what great music is, let alone the greatest, I was curious as to the “world” bit.  I scraped the playlist for one day, did some gentle analysis on it and the charts that … Continue reading The world’s greatest music?

Comparing and aligning data models

Sometimes you are trying to bring two worlds together - two bits of code, each with its own data model. The two worlds could be a computer system you work on and the system from a partner you're trying to integrate with. The data models can be the most prominent bits of this integration, but … Continue reading Comparing and aligning data models

Modelling a river lock

In this article I will model a lock on a river or canal. As well as going into the specifics of the model, I’ll touch on more general topics about modelling. These are things like diagrams to represent the model, tools, models as conversation starters, iterating models etc.  A lock has a model that is … Continue reading Modelling a river lock

Representing numbers

I’ve recently been doing more maths than usual using Roman numerals, which has got me thinking about the relationship between how numbers are represented and how easy it is for them to do different jobs for us. I’ll go into a few representations below, and their good and bad points. I won’t talk about floating … Continue reading Representing numbers

Multiplying using halving, doubling and summing

I was introduced to an interesting way of multiplying two numbers (integers greater than 0) recently, at a Tudor re-enactment at Kentwell Hall. It took me a while to realise what was going on behind the scenes, at least in terms of things I already understood. As it also made me think in a new … Continue reading Multiplying using halving, doubling and summing

Feedback loops for quality

This is the second part of my response to the Ministry of Testing’s latest blog challenge: What three things have helped you in your testing career? As I’m not a tester, I’m choosing to re-word this as: What three things have helped you in the quality aspects of your career as a programmer?  Culture and … Continue reading Feedback loops for quality

Culture and people for quality

This article and the next are my response to the Ministry of Testing’s latest blog challenge: What three things have helped you in your testing career? As I’m not a tester, I’m choosing to re-word this as: What three things have helped you in the quality aspects of your career as a programmer?  It was … Continue reading Culture and people for quality

Computer science while doing the laundry 2: Bin sort

This is part of a short series of articles about computer science while doing the laundry: Merge sortBin sort In the previous article I used doing a lot of laundry to illustrate merge sort, which is probably an impractical way of doing the laundry. In this article I will suggest a way that might actually … Continue reading Computer science while doing the laundry 2: Bin sort

Computer science while doing the laundry 1: Merge sort

This is part of a short series of computer science involving laundry: Merge sortBin sort  In this article I will explain merge sort, which is a way of sorting things when there are so many of them it’s awkward or impossible to use other approaches. I’ll use doing the laundry as a way of explaining … Continue reading Computer science while doing the laundry 1: Merge sort