54 Chess Games: Kasparov vs Karpov

Sometimes it's good to imagine something a little exotic and then try and realize it using the tools to hand. So here we have a simultaneous chess tournament featuring 54 random games from the great Kasparov vs Karpov series of the 80s and 90s. Using D3, THREE.js, CSS3D and a few helpers they are superimposed on a giant rotating cube because, why not?

See demo

Colorbars: Building a D3 Plugin

Some thoughts on best-practice for building a D3-plugin, using a colorbar example. The aim is to limit boilerplate code, increasing resusability and a general ease-of-use. Very much a work-in-progress.

Read more

D3 Gothic Window Generator

A rainy bank-holiday Monday was a good excuse to try and indulge my aesthetic whims. Something to overload the frontal cortex with colors and symmetries, something a little like a Gothic Rose Window in fact. Once one begins to get D3, rolling this kind of stuff together gets a lot easier and faster. I liked the effect so much I added the ability to change number of segments and number of triangular elements in each.

See demo

D3+Angular+Bootstrap Active-data Console

A recent client wanted a way to filter a large dataset of objects while seeing any changes immediately reflected by data-selective charts. Using Angular directives for two-way data-binding and Bootstrap for placement and dimensions, a few lines of XHTML is all it takes to build a console.

See demo

D3 Chess Viewer

I needed a chess-viewer for a larger data-viz project I'm working on and D3 seemed like the perfect tool for the job. The viewer takes lists of moves (SAN format) and creates an animated play. It could be a nice base for something more full-featured. Once again I was impressed by how easy D3 makes this kind of project.

See demo

Warped England: Why Young People Can't Buy Houses Anymore

A D3 maps visualization of the change in the ratio of English house-prices to household incomes over the period 1997-2012. By warping the map of England to reflect the increase in this ratio and reciprocal decrease in households' house-buying power, we see the dramatic economic disempowerment of current and future English generations.

See demo

Tech4Good Awards Glowstick Voting

The estimable Paul Hayes and myself raced against the clock to provide a glossy new take on the art of glowstick voting. Using a decent webcam, Python's computer vision fu (SimpleCV channeling OpenCV), the wonders of web-socketry, courtesy of Flask and SocketIO, and some rather gorgeous Javascripted GPU-shader wizardy we were able to turn a bunch of vertical glowsticks into a vote (Huzzah!).

Tell me more

Visualizing Smartphone Accelerometers with D3

The phone in your pocket isn't just recording your position by satellite and wifi signal (and sending it on to who knows where?), it also has little accelerometers which monitor the way the phone moves. This visualization takes data from an academic study, showing that phone users can be distinguished by their unique walking 'signature'.

See demo

Getting Your Python Data onto a Browser

A short, practical guide to making the leap from OS-based visualizations to something you can share with the world at the click of a button. Starring Python, Javascript and D3.

See talk

D3 Bespoke Histogram

A bespoke D3 histogram, with synchronizing axes. The variable radius and color of the plotted circles allows the representation of four dimensions, the x and y axes and two other counts.

See demo

D3 Generated Menu

A recent job required a menu that lets one progressively filter a packet of row-column data, drilling down to items of interest. It was refreshing to use D3 outside of charting and it dealt with the necessary DOM manipulations with ease.

See Demo

Historical UK Weather

I used Python and D3, the Javascript visualization behemoth, to transform some old pages of row-columnar data provided by the UK Meteorological into an animated coloured map, showing hours of monthly sunshine, millimetres of rain and maximum temperature.

See demo

Python, Javascript and Web-visualizations

A recent talk I gave at Pydata London 2014, which covered the various ways in which Python's data-analytical skills can compliment Javascript's burgeoning power web-side.

See talk

Braitenburg's Vehicles

One of the very few great books to come out of Cybernetics, Cognitive Behavioural Studies, Neuroethology etc., is Valentino Braitenberg's Vehicles. Probably the best known vehicle is the light-loving photovore and the demo shown scratches a personal itch - what happens when a group of photovores, each carrying a light source, are let loose. Play around with the parameters on the left to alter the characteristics of the ensuing mayhem.

See demo

Swarming boid's

Craig Reynold's original Boids demonstrated how natural looking animal flocking and swarming could be produced by applying very simple rules to each 'animat', governing things like distance to neighbours, centre of mass of neighbouring animats, avoidence and convergence tendencies. This demo lets you play with the parameters while the boids fly around - changing the quality of the swarming.

See demo

3D Diigo Tag Networks

I made a 3D force-directed-graph to visualize clustering in a connected graph. This demo shows the connections between my Diigo social bookmarks, currently 10,000 odd and their tags

See demo

Wikipedia networks

At a recent hackathon I used my 3D force-directed-graph to try and understand the way in which Wikipedia has presented the 2007 Financial Crash, starting with the crash page and examining the network formed by outlinks

See demo

Great LIBOR bank robbery

At a recent Brighton Digital Hackathon the topic was the Financial Crash 2007. I produced this animated D3 chart to show the extent to which LIBOR, the inter-bank lending rate, was manipulated by bankers, a multi-billion dollar fraud.

See demo

WebGL fireworks

I built a little programmatic fireworks display for a talk I gave on THREE.js, my favourite WebGL Javascript library. Such mini-projects are a great way to pick up skills - getting the THREE.js skymap down proved a little tricky (hint: you need two cameras).

See demo