Crafter Coder

Serverless with AWS and Typescript

8 min read

This blog post is an introduction level explanation of the Serverless Framework (or just Serverless) using AWS as the cloud provider and typescript as the language of choice. There are many examples and templates of Serverless in node.js but not so…

Continuous Integration with CircleCI

6 min read

Over the last week, myself and my fellow apprentices at Codurance have been working on delivering a product as part of our final project. To do this we have been applying Agile methodologies, specifically Scrum processeses and XP practices. One of…

Low Coupling and High Cohesion

7 min read

I have known, for almost as long as I've been coding (two years), that coupling and cohesion are two very important concepts in software design. To be specific, low coupling and high cohesion *. I've known this, and yet, I don't think I really…

Tell, don't ask

3 min read

During my time as an apprentice at Codurance I've come across the software design principle of 'Tell, don't ask'. I believe it's something that my budding code smell radar was already aware of but only now do I feel able to explain it. Put as simply…

Using a seam to test legacy code

4 min read

This post is about working with legacy code and specifically creating a seam as a technique to more easily test that code. I encountered the technique during the refactoring week of the Codurance Apprenticeship program. So what is legacy code? Ask…

Dependency Inversion Principle

4 min read

This blog entry is the fifth and final in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software. The Dependency Inversion Principle (DIP), as it is known, is primarily concerned with decoupling…

Interface Segregation Principle

4 min read

This blog entry is the fourth in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software. Robert C. Martin (Uncle Bob) defined the interface-segregation principle (ISP) whilst working with Xerox…

Liskov Substitution Principle

4 min read

This blog entry is the third in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software. First introduced by Barbara Liskov, in a 1987 conference keynote address titled Data abstraction and…

Open/Closed Principle

4 min read

This blog entry is the second in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software. The Open/Closed Principle was first defined by Robert C. Martin, and was built on top of the work done by…

Single Responsibility Principle

2 min read

This blog entry will be the first in a series of lightning posts about each of the SOLID Design Principles for object-oriented software. First identified by Robert C. Martin (Uncle Bob) in a 2000 paper, these designs, if applied, produce a more…

TDD with Object Calisthenics

8 min read

Following on from last weeks post about the Transformation Priority Premise this post is about another constraint that we used whilst learning Test Driven Development at Codurance. Originally proposed by Jeff Bay in the ThoughtWorks Anthology…

TDD with the Transformation Priority Premise

4 min read

Test-Driven Development is an easy concept that is much harder to do than it seems on the surface. The difficulty lies in it's simplicity. Only through intentional practice, application and experience can we, as developers, come to recognize the…

🎉 Hello World 🎉

4 min read

This being my first post I thought it prudent to begin with a short introduction of who the heck am I and what do I think I know about Software Engineering. Well, to answer the first question, I am David Halewood and I am currently a day away from…