React and MVC

React is improving the way we build frontends, but I find common patterns are making our apps more complex to write and manage, and more difficult to understand.

Read more

The Best and Worst Times To Pair Program

“Pair Programming” is two developers focussing on one task and taking turns to “drive” the development. Normally this means sitting down together and passing a keyboard back and forth in ten or fifteen minute intervals, but can also mean screen-sharing remotely.

Read more

Continuous Delivery: Keeping Quality High

Practicing Continuous Delivery is worthless if it’s not to facilitate the delivery of high-quality code. In this article I am going to cover some techniques, tools and best practices we employ at Made Tech to keep our pipelines moving, and how you can compel developers to push quality code often by rewarding them for attention to detail, rather than punishing them for making mistakes.

Read more

Componentisation and the Single Responsibility Principle

Keeping a good separation of concerns means writing code that only handles as much as it needs to. It’s a concept that should affect every piece of code you write, from class definitions to database tables. Only store the data which is relevant. Only encapsulate the logic which is covered by the responsibility of your class. My colleague wrote about this recently when discussing Inheritance and Composition.

Read more

Javascript of the Future

The history of Javascript, formally known as ECMAScript and originally Mocha, is a strange one. Originally developed by Brendan Eich at Netscape in ten days with the intention of creating a scripting language for the Web which could be picked up by new programmers, it has been praised and maligned in every corner of the Internet, by the same people in equal measure. The little language that could, or could at least try its hardest, has now spread past the browser to runtime environments like Node.js, game engines like Unity and “hybrid” mobile apps. This ubiquity is forcing the language to grow in scope and style dramatically.

Read more

The Pros and Cons of React + Redux

React is a JavaScript library which brings a declarative class driven approach to defining UI components. Redux is a state management layer which allows you to write events as simple ‘action’ objects, and centralises their storage and all change processing. Action objects which look like the following are dispatched in a fire-and-forget fashion and trigger an efficient re-render if necessary.

Read more

Canary Releases

Continuous Delivery is an approach to software delivery which promotes small incremental releases rather than huge iterations. Every push to master which passes its test suite is considered to be production ready, and as a result our deployment pipeline is optimised to get it out to production websites as quickly as possible, without sacrificing security and safety. This benefits us as developers and our customers in the same ways. New features and bug fixes are deployed rapidly, and code is safer by virtue of having smaller changes. How much can you break in a day or two? We are all spared the anxiety of large, lengthy deploys where weeks of work can be released to production at once.

Read more

Stream Everything

‘Streams’ and ‘pipes’ have been an essential part of *nix systems since the 1970s, when Doug McIlroy introduced them into the first version of Unix. The story goes that he threatened to leave the project if they weren’t implemented, he felt so strongly that they were a cornerstone of an effective modular operating system, and key to interoperability. They facilitate the Unix philosophies of ‘do one thing and one thing well’ and ‘write programs that speak to other programs.’ A small Unix program like ‘cat’, which concatenates the contents of one or more files and prints out the buffer, is able to communicate with other programs through piping. You could ‘cat’ a file containing a list of words, pipe that to a sorting program, and then finally to a text file. You could write this complex operation more simply than you could explain it.

Read more

Scary New Code

I’ve been writing software on my own for years, but one of my biggest challenges since starting at Made has been learning how to work in a team and get up to speed with huge, alien codebases in a short amount of time.

Read more