This blog is a collection of tips, pointers and general thoughts about
Enterprise IT Architecture. It contains discussion of techniques, proof of
concepts, and some more general points. If you are interested in DevOps, API
Management, Microservices, Frontend Development then you should find something
of interest here.
A Clojurescript API Server in Docker using ExpressJS
Wednesday, 11 October 2017
A CD Pipeline in Amazon Web Services
Friday, 1 September 2017
In a previous article, I described serving a website from an S3 bucket, with CloudFront allowing us to apply SSL. This article looks at the other side of the process — how we populate the S3 bucket in the first place. I would typically use Jenkins to set up a build and deploy pipeline for this, but here I look at using the build tools AWS provides.
Building a Stopwatch using only HTML and CSS
Tuesday, 22 August 2017
Secure hosting using SSL and AWS CloudFront
Tuesday, 15 August 2017
In a previous article, I looked at how we can use Let’s Encrypt to automatically create and manage SSL certificates for us. This article follows on in a similar vein, and shows how Amazon Web Services (AWS) also let us create free SSL certificates. This is an example with a static site hosted in an AWS S3 bucket, but can also be applied to any AWS website hosting mechanism (e.g. EC2 instances).
[SUPERCEDED] Using Traefik Proxy with Docker Compose and LetsEncrypt (version 1.3)
Wednesday, 2 August 2017
This blog entry is deprecated, since it refers to an older version of _traefik_ (version 1.3). Please see [the newer version](../traefik-proxy-docker-lets-encrypt) of this article for up to date details (using version 1.7 of _traefik_). Traefik Proxy is a fairly recent entry into the reverse proxy space, alongside more established applications such as nginx and Apache httpd. The thing which differentiates traefik is that it was created in a post-Docker world and integrates with Docker to reduce the manual configuration needed.
This article looks at how we can use traefik as a reverse proxy across a docker-compose managed suite of containers and then use let’s encrypt to add SSL certificates for https access.
Reducing Docker Image Size
Thursday, 22 June 2017
There is more attention being paid these days to the size of Docker images, with a desire among many developers to reduce the size as much as possible.
Why is this important? It comes down to the usual points of download and storage needed. A simple example is when your website is experiencing an unusually high demand and you want to spin up some more hosts to handle it. For each new host, you need to download your Docker image to it. If your image is 200MB, it takes 10 times as long to download it as is your image is 20MB.
So, how do we make smaller Docker images? Here are some techniques.
Letter to my Younger Self
Friday, 9 June 2017
You are sitting there uncertain about your future direction, trying to decide
what your next step should be. You have doubts about what you should be doing
and whether you are able to do it. Just remember that there is no single path
to follow, you will have a variety of different jobs through your career and
things will usually work out okay.
To help you as you go, here is some advice I (and therefore you) have picked up
along the way …
Cross Framework Messaging
Wednesday, 20 January 2016
situation where I needed two different UI elements — built with two different
Rather than choosing to migrate one onto a different framework, I looked at a
way of allowing them to send messages to each other using the Mediator Design
Using this pattern, I have an example of an Angular app, a React app, and a
Tuesday, 24 November 2015
I recently needed to put together a quick proof of concept for a small project
and decided to use this as an opportunity to try out a lighter than light
Whilst frameworks like Bootstrap are already quite light, I wanted to see if I
could remove even more. With all the Angular 2 kerfuffle, I wanted to look
for another framework which I can use instead. I also wanted to drop gulp
and just try using npm instead.
Monday, 14 September 2015
One area this applies to is in the large number of function calls resulting from this approach — particularly when we are writing recursive code.
We will give an example of this problem — calculating Fibonacci numbers — and then look at a technique known as memoization as a way of improving performance.