May 15, 2018 - Dumb home automation

The internet of things is becoming common place, with a lot of people putting “smart” devices from google or apple in their homes to allow voice control of media systems, heating and lighting. Most of them also allow you to control these devices from a phone app when you are away from home.However there are a growing number of concerns with these devices:

  • Are they secure?
  • What are they doing with my personal information?
  • What happens if the company providing them goes out of business or decides to stop supporting them?

In this post, I’m going to go into some details about my own dumb home projects which avoid using the most popular products on the market and instead opt for less well known devices to try and solve the concerns above.

There's more...

Aug 28, 2017 - Personal project hosting with docker

Docker has become one of the most popular technologies of the past couple of years, with a lot of companies investing in using it for some or all of their development work, with many now using it for their production infrastructure as well.

The convenience provided by docker for deploying applications makes it attractive to use for personal projects, but there is a lot of complexity you need to manage a docker cluster, I’ve been steadily working on this and this post is the first of many documenting my work.

There's more...

Jul 12, 2017 - Communication patterns in event driven architecture

I am a huge advocate of using events as the primary means of sharing state between different services in a microservice architecture - an event driven architecture. In such a setup, each service emits important events and other services listen to events which they are interested in. Each services will then use the events to build projections and drive process managers, maintaining their own world view.

This is a good overall pattern for inter service communication, however there is a problem with this approach, if applied blindly all the time: you can end up leaking domain knowledge between services and inadvertently coupling the services together.

There's more...