Knowledge: Tech Blog

Where we share our thoughts on technology and design.

Latest Articles

James Dunkerley

Highlights from the Inspire Europe Conference

My highlights from attending the Alteryx Inspire Europe conference, hosted in London.

William Ferguson

Creating a Pebble Watchface with JavaScript

In this article, I take a look at writing a watchface for Pebble using their newly released JavaScript SDK.

Jon Harris

Why does no one agree on a definition of MVC?

If you look up the MVC pattern on the web you can easily find definitions that differ and contradict each other. In this post I'll look at some definitions of MVC and consider what the differences mean for applying the pattern in practice.

Nick Soper

Hosting .NET Core on Linux with Docker - A Noob's guide

This blog describes my experience of upgrading a basic RESTful API from .NET Core RC1 to .NET Core 1.0, and using Docker to host it on Linux. Docker is completely new to me so I'll give my thoughts as a noob.

Graham Odds

Do You Need A Conversational UI?

Despite all the excitement around chatbots, conversational UIs and conversational commerce, you need to take a step back and consider whether they could be appropriate for your services. This post weighs up the potential against the current reality and highlights aspects to consider.

Drew Miley

Reading the Riot Act: Exploring a Lightweight React Alternative

Migrating a Knockout project to a webpack redux application using Riot, and why I didn't use React.

Chris Price

Using d3-force to control a massive tiny display

This post describes my entry into one of the hack events at JSConf.IS which challenged us to take control of the Northern Lights. It hopefully also serves as a nice introduction to creating visualisations with d3-force.

Chris Price

Highlights from JSConf.IS

My highlights from the inaugural JSConf.IS 2016 hosted at Harpa, Reykjavik.

Chris Smith

Docker 1.12 swarm mode - round robin inside and out

This post demonstrates how Docker 1.12 swarm mode round robins the containers in a service both for incoming connections (ingress) and DNS within the swarm.

James Friel

Interview Questions Explorer - Edinburgh Interns 2016

An overview of the Edinburgh Interns summer project: A react application to filter and search interview questions stored on Google Drive

Chris Price

Building Components with D3 Data Join

This post quickly introduces data join before moving on to some of the edge cases we've run into when building components on top of data join. It covers how you can solve them with vanilla D3 and why you might find our d3fc-data-join component useful.

Rosie Hamilton

Exploring Data - Creating Reactive Web Apps with R and Shiny

I developed a web application to enable exploration of the data collected by a survey of software testers. I explain how R and Shiny can be used to create reactive web applications which make data accessible to a wider audience.

Bartosz Jedrzejewski

Java Enums - how to use them smarter

A short introduction to Java enum capabilities followed by concrete examples of good use. How enums help with implementing lazy loaded singleton, following open/closed principle and using strategy pattern.

William Ferguson

Web Audio API Part 2: Moving to Electron

Back in January, I blogged about using the Web Audio API with D3, creating an app using Knockout and RequireJS. I’ve since expanded on that application, migrating it to Electron and adding new functionality along the way – like MP3 tag extraction and recursive folder searching. Migrating to Electron In...

Rosie Hamilton

A snapshot of software testers in 2016

Continuing my research into Software Testers I examine how and why people are getting into testing careers and present a snapshot of testers in 2016

Chris Price

ES6 Iterators, RxJS, IxJS and the Async Iterators proposal

A quick walk through ES6 iterators and iterables. It covers extending d3fc’s random data component to implement the required protocols and how this can lead to greater interoperability with utility libraries like RxJS/IxJS. The d3fc-random-data stochastic generator d3fc contains a component for generating random data series based on stochastic processes....

Colin Eberhardt

Recursive Pattern Matching and Transformation of JavaScript AST

I’ve recently been playing around with the JavaScript Abstract Syntax Trees (AST), with the aim of transforming some JavaScript code into various other languages (Java, C#, Objective-C). As part of my research, I looked at how Babel performs AST transforms. If you’re not familiar with Babel, and the plugins which...

Chris Smith

Declarative CI / CD with Concourse

This post describes the Concourse build system and explains why declarative CI / CD is so compelling. No more pet build servers!

Rhianna Rahim

UX Scotland 2016

Last week I attended the UX Scotland conference held at the impressive setting of Our Dynamic Earth in Edinburgh. The 3-day conference, sponsored by Scott Logic, contained a selection of interesting case studies, workshops, hackathons and other social events. Graham Odds, Head of UX Design at Scott Logic presented two...

David Wybourn

Service discovery with Docker Swarm

For the last few months we’ve been working on a very DevOps focused project. As such we’ve used AWS, infrastructure as code, Docker and microservices. The different microservices were initially running all on one box, each with a different port. This solution wasn’t scalable or very practical. We couldn’t have...