A reasonably common abuse I see is abusing exceptions as a form of control flow. If it’s inside a single method, it’s not too bad, but it’s easy to get to the point where exceptions get thrown or re-thrown and is dealt with elsewhere in the code.

Let’s look through an example.

interface PersonSerice { 
fun getPerson(id: Int): Person
class DbPersonService() : PersonService {
fun getPerson(id: Int): Person {
return db.fetchById(id)
fun getPersonRequest(id: Int) {
return try {
} catch (DbRecordNotFound: e) {

It is not complex code; you can easily understand what’s…

Everyone knows that micromanagement is bad; it’s “common sense” right. So why is it so common that developers who become team leaders fall into the trap of becoming micromanagers? And why is it especially prevalent for accidental team leads?

Let’s start by looking walking through a scenario and see what happens. You’re working on a project by yourself, things start to take off, and there is more work coming in. More than you can handle by yourself, you recognise that you need to get someone else to work with you.

Bug Fixes

You set your new hire to task on some simple…


Because blockchains are not centrally hosted, they offer a great way to facilitate communication between multiple parties. You can utilise the trusted distributed nature of blockchains to reduce costs and friction between parties.


To achieve inter-party communication, consortium members must agree what an api would look like. It requires standards to be written, published and accepted. The alternative is to have a central authority that dictates terms and charges for membership (e.g. payment gateway providers).


Every interaction that changes state on the blockchain needs to be verified and therefore trusted, they can be used as a system of always available…

When I first started writing software, a common practice was to use an emulator or a lightweight version of something for your development environment. The most common of these were in-memory databases, things like SQLite and H2. They are lightweight, easy to use and easy to segregate. You didn’t need to worry about licensing or having a lot of resources for it to run. As machines have got more powerful and FOSS databases have become more mature, the reasons for not having a real database running for development are diminishing. The problem now seems to be more about orchestration.


I wanted to be able to write tests against our Google Cloud Platforms PubSub implementation. Unfortunately, the way the SDK is written, it doesn’t exactly lend itself to easy testing. It’s incredibly verbose for something that is just sending a bunch of http requests!

For integration testing I considered a couple of options:

You could mock out the google cloud platform api. You can then write a bunch of assertions against what’s been called and stub out responses. The problem is that google is rather bad at supporting their apis; they have a tendency just to deprecate thing without much…

We tend to take for granted that blockchain networks are just there, but have you ever thought about who else your node is talking to? It’s all well having a node to connect to, but how do you know that your node is speaking with reliable sources? Although it’s easy to overlook this detail, the potential implications are serious.

How do you know what the right number of nodes is?


Ethereum is a decentralized application platform; it is a distributed unstructured peer to peer system built up of many nodes. Because it is unstructured, it means that every node must…

Antony Denyer

Software Cultivator medium@antonydenyer.co.uk

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store