Despite its scarily maths-sounding name, I suspect that you have already come across modulo arithmetic, even though it probably didn't have that name. In this article I'll go into a few examples of modulo arithmetic in the everyday world, and how the practical limitations faced by computers cause modulo arithmetic to crop up when you … Continue reading Modulo arithmetic in everyday life and code
Author: Bob
Tests to hold code securely in place
If you have automated tests for your code, you are doing better than some programmers. However, how good are those tests? In this article I'll explore how tests can be good (or not). Cable clip analogy Before I get into tests, I want to introduce something that will be useful as an analogy for them. … Continue reading Tests to hold code securely in place
Balanced trees
In a previous article on complexity, i.e. performance trends in code, I said that trees can be useful ways of storing data, but they only work if they’re reasonably well balanced. In this context, balanced means that no path from the root node of the tree to a leaf node is much longer than any … Continue reading Balanced trees
Building computer systems via problems rather than solutions
When it comes to building computer computer system, even something as simple as storing the name and address of universities can be surprisingly complicated and messy. While the mess and complication often can’t be avoided, knowing what the end user needs are can help you come up with the best way of tackling them. “Just” … Continue reading Building computer systems via problems rather than solutions
Reviewing requirements
Ministry of Testing kindly published an article I wrote for them on reviewing requirements. It gives some tips for doing it, and also looks a bit at the human side of things. I hope it's useful for non-testers as well as testers, whether your requirements are big documents full of UML or something much briefer … Continue reading Reviewing requirements
When a failing test might be OK
Usually, a failing test is a problem. In this article I will cover three cases where this might not always be true: performance tests, testing a data science model such as a classifier, and testing in quantum computing. In all these cases, a definitive answer about passing or failing is given by a set of … Continue reading When a failing test might be OK
Fuzzy matching – context and testing
This is the third article in a short series on fuzzy matching: Introduction Example algorithms Testing and context In this article I will consider the difference between context-dependent and context-independent fuzziness, and think about how fuzzy matching systems can be tested. Context-dependent and context-independent fuzziness If you are trying to do fuzzy matching of strings, … Continue reading Fuzzy matching – context and testing
Fuzzy matching – example algorithms
This is the second article in a short series on fuzzy matching: Introduction Example algorithms Testing and context In this article I will go into three algorithms that are examples of fuzzy matching – Levenshtein distance, Dynamic Time Warping (DTW) and Hidden Markov Models (HMMs). Levenshtein distance The Levenshtein distance is a way to do … Continue reading Fuzzy matching – example algorithms
Fuzzy matching – introduction
This is the first article in a short series on fuzzy matching: Introduction Example algorithms Testing and context In this article I’ll describe how fuzzy matching is different from non-fuzzy or conventional matching, why you might want to use it, and some of what makes it hard. Conventional matching In conventional matching, when you compare … Continue reading Fuzzy matching – introduction
Debugging how conversations go at work
This article is trying to help programmers and people like them, when they have conversations at work that are about understanding, explaining, deciding etc. It’s not so much about persuasion or selling, or mentoring or coaching. These are all important kinds of conversations, but I’m not the person to help you with them. It might … Continue reading Debugging how conversations go at work