Lazy developer captured in the act by Marcus Aurelius from Pexels

Humans are lazy. Evolutionarily it’s an adaptive trait, helping us to get the most value with the least effort. It’s also what led us to innovate and create tools, which let us do more with less work.

Laziness is a double edged sword though. Innovations that can help us out greatly in the long run often come with an upfront cost requiring lots of thinking, experimenting, and good decision making. However, as lazy humans, we’re likely to want to take the path of least resistance.

Software engineering is quite possibly the pinnacle of laziness, allowing us to do vast amounts…


A few weeks ago I spent a week writing implementations of the Bank tech test, to demonstrate high code quality, test driven development process and object oriented design principles.

I ended up writing four separate implementations in three languages:
Ruby, JavaScript for the browser, Node.js and Python.

Let’s compare and contrast the tools they offer.

The Requirements

The requirements are the same for each implementation.

  • You should be able to interact with your code via a REPL like IRB or the JavaScript console. (You don’t need to implement a command line interface that takes input from STDIN.)
  • Deposits, withdrawal.
  • Account statement (date…


A couple of weeks ago I graduated from Makers Academy. The bootcamp culminated with a two-week project. Our team created a game to learn VSCode shortcuts. You can play it here!

The next cohort are about to start their final projects, so here are some lessons I learned that hopefully might be of use to them (or indeed anyone).

A simple UI concept implemented well looks better than a snazzy UI concept implemented not so well

We had very ambitious plans for the UI. Just take a look at our look and feel section of our Miro board:

A lot of thought on design.

I had even created assets for a rocket ship that would take off from some Cape Canaveral style launch…


As I’ve been making little apps, I’ve been thinking about User Experience (UX), User Interfaces (UI), and their implementation, but as I’ve done all three myself I haven’t really had to think too hard about making clear cut lines between them.

  • What is a UX design decision?
  • What’s a UI design decision?
  • Where does a UX design decision overlap with a UI design decision?
  • Should it overlap?
  • What are the differences between the two?

I turned to this blog article for some answers. UI/UX are briefly compared and contrasted, and then 6 UI/UX experts give different opinions as to what…


Today’s work on the MySpace revival project was interrupted by an urgent message from our “client”:

The business has recently bought a competing social media platform and has made the decision to consolidate the platforms - but keep the look and identity of each site. The decision reached is to use your current backend, but expose it as a Rails API for front-end apps to consume. The CTO feels React.js is a good choice but recommends you discuss it as a team.

Our work on our fully rails site needed to pivot to an API only service, that would be…


Photo by David von Diemar on Unsplash

You’re probably familiar with Google, and other search engines, and have used these powerful tools to look for probably literally anything you want to find out, even just to check how to spell something (I checked how to spell Lamborghini just now).

But there’s a lot more that Google and other search engines can do, especially when it comes to using them to solve programming problems.

Good search engine technique is like driving a Lambo: it’s possible to get somewhere just in first gear, but it’s much faster to use all the gears.

So let’s start our engines!

(Our search…


JavaScript isn’t very good at multi tasking, it can only do one thing at a time. But, you can tell it to put something aside for later and do something else in the meantime, with asynchronous functions.

This fridge needs an upgrade! By Ernest Brillo on Unsplash

To illustrate this concept, it is time for another contrived, kitchen related (see previous post involving toasters), analogy.

Imagine you have some chores to do.

  1. There is some grocery shopping to be done.
  2. Curry’s are delivering your new fridge today (other retailers are available).

You create a detailed todo list to plan out your day (in Markdown, because you are of course a…


This cutie captured on film by Dušan Smetana on Unsplash

Recently I’ve been developing small web apps in Ruby, using Sinatra as a back end, testing with RSpec and Capybara. This has gone well, however I have noticed that there are certain scenarios in which Sinatra’s helpful 404 and 500 error pages can cause false positives in your tests.

An (incredibly contrived) example

Let’s say we want a simple web app that you can enter a phrase into and it will echo it back to you. The Capybara feature test for this looks like:

So in order to pass this test, add a route to the controller for get '/' that returns the…


Let’s learn a little bit about Object Oriented Programming! Dependency injection, polymorphism, and forwarding.

Lovely shot of what I believe is South Kensington Tube station by Tomas Anton Escobar on Unsplash

I’m using GitHub gists for these example to try it out.

Let’s say we had some Ruby code for a Journey class that let’s us pass in a destination, and start and finish the journey, returning a relevant string with the destination interpolated:

This is all very well and good, but at the moment it’s hard coded that we will walk all journeys. What if we want to go via a different mode of transport?

This could be done by passing in a mode of…


Week 1 of the Makers programming academy has been all about Test Driven Development and Object Oriented Programming. And what better to show that off with a toaster app.

Lovely shiny toasters by Daniel Salgado on Unsplash

What is Test Driven Development?

TDD is a process by which requirements for a program inform tests that test those requirements. In order to pass a test only the most basic production code needs to be written, Then another test is set, and more production code, and so on and so forth, incrementing the form of the program until it satisfies all the requirements. …

Harry Turnbull

Improviser with Gamez Improv, Improbotics, The Nursery Theatre and Hoopla Impro. Learning to program properly with Makers Academy.

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