Blog

Chris Price

My name is Chris Price, I'm based in Newcastle upon Tyne and work as a Software Engineer at Scott Logic. I spend my days developing web apps for financial services companies (unfortunately mostly hidden behind paywalls). I do like to blog about things when I can and do some interesting stuff on GitHub.

Tech
Mobiumata (a concatenation of Möbius strip and cellular automata) is a small interactive art piece that allows folk to play god to 1,500 LED cells wrapped into a Möbius strip.
Artificial Intelligence
When we couldn't find a tool to meet our prompt engineering needs, we decided to create a universal tool that allows anyone to build their own – all within the familiar spreadsheet environment. An Excel add-in that lets you use OpenAI models in Excel formulas.
Tech · Video
We've all now seen the apparently creative outputs of Generative AI, with astonishing results that seem to border on human creativity. How does GPT-3 achieve this? In this short talk, I lift the lid to reveal the probabilistic elements that allow an otherwise deterministic model to give all the appearances of creativity.
Artificial Intelligence
It’s been over a year since I last blogged about OpenAI. Whilst DALL-E 2, ChatGPT and GPT4 have grabbed all of the headlines, there were a lot of other interesting things showing up on their blog in the background. This post runs through just over six months of progress from Sept 2021 - March 2022.
Podcast
In this episode, I’m joined by colleagues Oliver Cronk, Peter Chamberlin and Chris Price for a lively discussion about blockchain, including the mechanics of bitcoin, the proof of work consensus, and technologies which are blockchain-like, but prefer not to use that term. Finally, we ask ourselves the question, is blockchain just hype?
Tech
A Vim clutch is typically a repurposed keyboard/guitar pedal that enters insert mode when you press down on it and leaves it when you release it. This can and has been accomplished in a great many weird and wonderful ways. This post adds yet another to that list.
Podcast
In this episode, Simon Martin, Chris Price and Rob Pilling share their interest and insights into Rust. This relatively new programming language has caught the attention of the development community, being voted the ‘most-loved’ language seven years in a row in the StackOverflow survey.
Artificial Intelligence · Video
I talk about GPT3, one of the massive and very impressive AI models to come out of OpenAI. I quickly cover off the basics of how it works and where its creativity comes from, before accidentally delving into existentialism.
Tech
In a previous blog post, Colin focused on rendering massive numbers of points using D3. In this post I'll consider how you can efficiently load that data using Apache Arrow.
Artificial Intelligence
The OpenAI Codex JavaScript Sandbox and the API which backs it, have (rightly!) generated a lot of interest and comment in the development community. When faced with something so different to what we expect, it's easy to assume it's all magic. In this post I'll peel back some of the layers and try to describe what's going on.
Artificial Intelligence
...or what I should have known before I jumped in and started playing around. In this post I cover few shot learning and fine-tuning.
Tech
...or what I should have known before I jumped in and started playing around. In this post I cover logprobs and the "creativity" controls.
Artificial Intelligence
...or what I should have known before I jumped in and started playing around. In this post I cover the basics of tokens, the model and prompt design.
Tech
d3-zoom is incredibly robust, powerful and flexible. However, its flexibility means it can be quite complex to configure and use correctly. This post covers one way of wrapping it up, reducing its flexibility but vastly simplifying its use for my use-case.
Tech · Video
There's a standard approach to migrating legacy applications into desktop containers: the desktop equivalent of the strangler pattern – but this has its drawbacks. Is there another way? In this webinar, I shed light on an alternative that addresses these drawbacks and opens up new opportunities for old tech. And I explain what on earth rollercoasters have to do with it.
Tech
WebGL presents you with a blank canvas (literally!) and leaves you with what feels like an overwhelming set of decisions to make before you can render your idea on screen. This post introduces a quick reference guide to picking the right draw call for those trying to decipher the difference between drawArrays, drawElements and their oddly-ANGLE'd instanced equivalents.
Tech
Rendering charts can be a very intensive operation for the browser, especially multiple charting widgets in the context of a wider application. OffscreenCanvas is growing in browser support and allows canvas rendering to be delegated to a WebWorker. This post looks at what performance improvements we can realistically expect and some gotchas that can crop up along the way.
Resources
WebAssembly is a new runtime for the web; a fast and efficient compilation target for a wide range of languages that could have a far-reaching impact on the web as we know it. This paper looks at at the performance limits of JavaScript and how WebAssembly was designed to tackle them.
Tech · Video
This talk will introduce the recently launched TensorFlow.js library, demonstrate what’s possible right now (with some audience participation!) and ponder on the future directions this technology might take us.
Tech
In highly-visual, rapidly-updating, multi-window, buzzword-laden apps performance is a big concern. With WebWorkers, SharedWorkers and ServiceWorkers we have a number of options for moving complex scripting tasks off the critical path. However, rendering can be more of a dark art. In this post I'll dig into how one browser (Chromium) uses renderer processes and how you can use this knowledge to your advantage.
Tech
This post demonstrates one way to add Selenium e2e tests to a `create-react-app` generated app. It uses Jest as the test runner, embraces modern JavaScript features (including async/await, modules, fat-arrow functions, templated strings, etc.) and attempts to ensure that modern editors are able to provide useful auto-complete suggestions when authoring tests.
Tech
When creating d3 visualisations it's common to want some form of responsive layout. However, SVG and canvas don't provide a native way to do this. Most examples found online either use fixed dimensions or resort to some form of manual layout to achieve the required effect. This post introduces an alternative approach using CSS and custom elements.
Tech · Video
Pull up a comfy seat and listen to Chris Price tell a story about the Tortoise and the Hare, the App Store and Progressive Web Apps.
Tech
My highlights from the inaugural JSConf.IS 2016 hosted at Harpa, Reykjavik.
Tech
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.
Tech
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.
Tech
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.
Cloud
Inspired by Colin's article on building an expenses app with the Mondo API, I wanted to create something to make use of the webhook API which fires in real-time (ish) whenever a transaction happens. In this post I'll cover subscribing to the Mondo webhook, creating the glue code as an AWS Lambda and pushing pins into the Pebble Timeline REST API.
Tech
d3-path is an abstraction over SVG path creation which uses the canvas element's Context2D interface. Previously creating path generation code involved a lot of concatenating SVG path commands like M0,0 or L2,2, and the somewhat more cryptic C70 20,120 20,120 10. Even with ES6 string interpolation such code can be incredibly hard to read (and write!).
Tech
I recently created a site which I'm proud to say now hosts an impressive collection of tweet-sized D3 creations from the hugely creative people of the internet. In this post I'll talk through deconstructing one or two of those creations with the aim of giving any aspiring artists a starting point.
Tech
Hot-reloading UI is a **hot** topic at the moment. I want to take some time to explain why, in the class of applications I typically work on, I believe it to be such an important feature for future UI frameworks to have.
Tech
While d3fc (a toolkit of charting components built in the d3 style) embraces the philosophy of simplicity over performance, there's no point in creating a chart with lousy performance. In this post I'll run through some of the tips and tricks for squeezing the best performance out of d3fc without compromising on its flexibility.
Tech
I've been working on an open-source charting library called d3fc. And following Colin's lead, was looking for a creative example to replicate. I think I found it...
Tech
A quick run through of the steps involved in integrating a Node.js client with Active Directory Federation Services for authentication using OAUTH2.
Tech
I’ve recently completed an ELK (Elasticsearch, Logstash & Kibana) real-time log processing implementation for an HTML5 FX trading platform. Along the way I’ve learnt a few things I wish I’d known beforehand. This post shares some more details of the project and hopefully some time saving tips.
Tech
Recently, Knockout's original author Steve Sanderson released a plugin called knockout-projections which optimises the performance of the observable array methods filter and map.
Tech
Recently I contributed a change to Knockout which allows it to run without hacks in a non-browser JavaScript environment.
Tech
We're very soon to launch a site documenting an open source project we've been hard at work producing. As the project is hosted on github, we'll be making use of the Github Pages hosting feature which itself is built on top of Jekyll.
Tech
Hot on the heels of Reject.js was JSConf EU, a weekend conference about, well, JavaScript!
Tech
Last Thursday I headed to Berlin for Reject.js, a community JavaScript conference organised to coincide with JSConf.eu.
Tech
How does Microsoft's TypeScript, the new kid on the block, compare to Google's Closure?
Tech
In this post Colin Eberhardt's Property Finder app gets another outing, but this time with a native twist.
Tech
Most of us have had a play with CSS3 3D transforms, stacked a few elements, rotated them, maybe even made a cube out of them.
Tech
Intellisense for JavaScript has always felt to me like an unfinished addition to Visual Studio, something that promises so much but doesn't deliver for larger projects.
Tech
HTML5 versus native (iOS:Obj-C, Android:Java) mobile development is a hot topic at the moment, with Facebook's ditching of a hybrid HTML5/Obj-C app in favour of an Obj-C-only app the latest blow to land.
Tech
Captured webcam frames arranged in a 3D rotate-able cube for your viewing pleasure. A simple tech demo trying out the new getUserMedia API in Chrome 21, with some 3D transforms and canvas based pixel manipulation thrown in for good measure.
Tech
PhoneGap Build is a hosted service which wraps HTML5 applications into native applications. The plugin connects to the service, uploads the exploded WAR directory, waits for the builds to complete and then downloads the native binaries installing/deploying them as attached artifacts.
Tech
This series of posts (part 1) are attempting to do the impossible, to try and give desktop developers a brief introduction to developing on the web.
Tech
A little while ago Colin showed me a tool for inspecting the visual tree of a Silverlight/WPF application.
Tech
This is a quick post relating to a Rhino bug I've just fallen foul of. This probably isn't very interesting for most folk, but if you've come here from Google then hopefully I can help you out!
Tech
This post is an attempt to do the impossible, to try and give desktop developers a brief introduction to developing on the web.
Tech
I recently had a need to create a demonstration application showcasing some of the features of the Closure toolkit. Whilst I was trying to think of a suitable example to implement, I remembered coming across a project called TodoMVC.
Tech
I recently came across the mustachify.me service. Inspired by Movember, I just had to spread the mo-ssage.
Tech
Last Friday I headed down to Brighton for the annual Full Frontal conference.
Tech
Colin's post on Dart and the other fallout from Google's announcement across the web sparked a few thoughts in my mind.
Tech
I was reading over one of the tutorials over at html5rocks.com (if you haven't had a look through them before I'd thoroughly recommend it!) and came across an article by Ilmari Heikkinen on creating a "kiosk-mode" for chromeexperiments.com.
People
Last Thursday night saw a tense battle for the podium at the inaugural Scott Logic Newcastle grand prix. The race was held south of the river at Karting North East in Sunderland, but most people didn't let that, or the afternoon of torrential rain put them off!
Tech
In part one I discussed my objective to create a "web-less webapp" which could masquerade as a native application on all modern mobile platforms.
Tech
In this first installment, I'll introduce the appcache, talk about some gotchas of using the appcache and hopefully give some helpful hints for debugging it based on my experience.
Resources
When meeting current and prospective clients the subject of web technology choice often arises. There has been a great deal of confusion and uncertainty out there, even before Microsoft's perceived change of stance with respect to Silverlight emerged.
Tech
This post follows on from the comparisons by Colin, of two Silverlight chart libraries, and Graham, of Flex and Silverlight chart libraries.
Tech
This post discusses the this keyword, what it represents, how it can catch you out and how to avoid those problems. It also introduces the functions call and apply from the Function prototype.

Talks

Build IT Right 2019
04 April 2019
An Evening of Tech Talks
26 September 2018
An Evening of Tech talks
27 June 2018
FinJS – NYC
15 March 2017
FinJS – London
07 December 2016
Frontend NE
07 July 2016
Tech Talk
23 May 2016
Bristol JS
30 March 2016
London d3js
16 February 2016
BrisTech
15 October 2015
RBS Tech Stock
21 June 2015
JS Monthly
21 June 2015
Danske Bank Conference
04 June 2015
Scotland JS
07 May 2015
Supermondays
16 September 2013
Reasons To Be Creative
02 September 2013
HTML5 It Just Got Real
14 May 2013