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 desktop/tablet/mobile 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.

Articles

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.

Highlights from JSConf.IS

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

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.

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...

Mondo Bank webhook to Pebble Watch Timeline using AWS Lambda functions

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...

d3-path - what is it good for?

This post introduces a new feature of D3 version 4: the d3-path package. 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

Deconstructing a tweet-sized D3 creation

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...

A Case for Hot-Reloading

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. Fundamentally it’s about improving...

Improving D3 Performance by Embracing the Flux

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...

An Adventure in SVG Filter Land

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… Once upon a time The story starts with Coinbase, a well-known(/funded)...

OAUTH2 Authentication with ADFS 3.0

A quick run through of the steps involved in integrating a Node.js client with Active Directory Federation Services for authentication using OAUTH2. I recently had the dubious pleasure of proving the feasibility of authenticating apps against ADFS using its OAUTH2 endpoints. In short, whilst it is possible to securely prove...

ELK - 3 things I wish I'd known

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. ELK

Arrow functions in Knockout.js

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. In this post, I’ll take a peek into the future by combining this plugin with the forthcoming ES6 arrow functions to produce some very terse and...

Knockout.js + Node.js = What.js?

Recently I contributed a change to Knockout which allows it to run without hacks in a non-browser JavaScript environment. My original intention was to allow Knockout.js to be used with Titanium for the...

Jekyll - A Developer's Wordpress?

Outrageous pun intentionally… hyde-n… 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. As all...

JSConf EU 2012

Hot on the heels of Reject.js was JSConf EU, a weekend conference about, well, JavaScript! It was my first time there so I was a little unsure what to expect, I was absolutely...

Reject.js

Last Thursday I headed to Berlin for Reject.js, a community JavaScript conference organised to coincide with JSConf.eu. I was very impressed by the professionalism with which the event was run, which in turn...

TypeScript versus Closure

How does Microsoft's TypeScript, the new kid on the block, compare to Google's Closure?

Converting an HTML5 App to a Native App with Titanium

In this post Colin Eberhardt's Property Finder app gets another outing, but this time with a native twist. Titanium is a popular open-source framework for building multi-platform native apps in JavaScript. Here I've...

Just what is the CSS 3D perspective property?

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. And somewhere along the way, you'll probably have...

Making the most out of JavaScript Intellisense in VS2012

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. Manually adding and then maintaining another set of dependency references just for Intellisense has just never seemed worth it. However, with the launch...

You can build feature-rich apps with HTML5, but should you?

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....

gum-cube

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...

Using PhoneGap Build with Maven

This post introduces a Maven plugin for easily building native PhoneGap apps for iOS, Android, WP7 (and more) from any WAR project, in any environment. It assumes that you are familiar with using...

Moving to the Web 2: Dark Territory

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. I say impossible because the web...

Explodz - A Webkit DOM Visualizer

A little while ago Colin showed me a tool for inspecting the visual tree of a Silverlight/WPF application (Snoop thanks Colin!). The bit I remember was a 3D view of the app, where an...

Does delete walk the prototype chain?

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...

Moving to the Web

This post is an attempt to do the impossible, to try and give desktop developers a brief introduction to developing on the web. I say impossible because the web is such a vast topic. On...

A TodoMVC Closure Example

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. TodoMVC is a GitHub project which aims to re-create the...

Movember Themed Bookmarklet

I recently came across the mustachify.me service. Inspired by Movember, I just had to spread the mo-ssage. One bookmarklet later, I can now man-up any page* I deem appropriate. I've picked some likely stooges from Scott Logic for you to test the link out on....

Full Frontal Conference 2011

Last Friday I headed down to Brighton for the annual Full Frontal conference. It was my first time there and I'm very glad I made the trip. The quality and breadth of the talks given far exceeded my expectations. Thanks to Remy Sharp for his organisational and timekeeping skills, and...

Dart - a few wildly speculative thoughts

Colin's post on Dart and the other fallout from Google's announcement across the web sparked a few thoughts in my mind, so I thought I'd share them. Firstly I think it's important to point out how much of what is currently being said is speculative. Most people's opinions...

Bezier demo

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 (another thoroughly recommended site!). The article itself was...

Scott Logic Newcastle Grand Prix

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!

A Webapp By Another Name II - The many pitfalls of using the application cache on mobile platforms

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. I covered the gotchas of developing with the cache, but stopped short of discussing the problems that come about when you wrap it up for...

A Webapp By Another Name - The many pitfalls of using the application cache on mobile platforms

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. Introduction The appcache is a new DOM feature added in the unholy bundle we call HTML5. It aims to allow your...

HTML5 Charts vs Flex Charts vs Silverlight Charts - a Test of Performance

This post follows on from the comparisons by Colin, of two Silverlight chart libraries, and Graham, of Flex and Silverlight chart libraries. In this post I add an HTML5 chart library into the mix. The results show that the HTML5 Charts perform easily as well as the others...

What is this?!

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. Let's start with a definition - The value of this is determined at the point at...