The making of “PM2.5”

PM2.5 is part of the Amsterdam Data Project — a series of massive public data sculptures on all the giant LED media screens around Amsterdam.

The Netherlands is a leader in public open data and I’ve been lucky enough to be supported by and collaborate with the folks at Ngage Media in the Netherlands, to take part of a year long exploration into the wonderful world of open data in the Netherlands.

Air pollution is the single largest environmental cause of premature death in urban Europe.

More than 80% of people in European cities live in air quality below World…

Data Visualisation | Installation

Ambient air pollution is the largest environmental health problem in the United States and in the world more generally. You’re more likely to die from air pollution, from which 200,000 Americans die every year, than from diabetes, influenza, kidney disease or suicide.

Fine particulate matter smaller than 2.5 millionths of a meter, known as PM2.5, was the fifth-leading cause of death in the world. Around seven million people die each year from air pollution.

Exposure to PM2.5 has been linked to several health conditions, including psychiatric disorders, mental health disorders (including depression), dementia, emphysema and…

Learn how to dynamically inject JavaScript into webpages

from radarboy3000 on Instagram

For years I’ve been using the browser for my performances and installations using my own simple homegrown VJ engine. And now, after you learn a few simple tricks, you can too…

A quick intro

Firstly, what is a VJ engine? you might ask. And maybe even: what is a VJ? Wikipedia defines the characteristics of VJing as:

The creation or manipulation of imagery in realtime through technological mediation and for an audience, in synchronization to music.

And a VJ engine is simply the software used for VJing.

But why would I build my own when there are so many VJ engines out there?

The making of “Counting to a Million”

Counting to a Million is a public data sculpture tracking and predicting 50 years of Amsterdam population growth. Exploring births, deaths and changes in each suburb’s population count as the city heads towards a million residents. The sculpture blurs the lines between suburbs, crosses boundaries, and merges together in a constant push and pull, ebb and flow, as life happens, people move, die, get married and new residents arrive and are born.

I’ve always been fascinated with big public data, as an input and source to create artworks, so was super excited to be able to create Amsterdam Data Project

Making computers see

Part of an ongoing series of learning creative coding in pure javascript. See more here. And get the files here.

There are a bunch of techniques and libraries out there for to detect and play with your camera’s motion data. But most often a simple solution is more than you need. And I’ve found that rolling my own motion detection code gives me better performance, flexibility and understanding. 95% of the time, this simple method is all you’re gonna need. So let’s get going…

The technique we going to use is simple. We compare the previous frame‘s…

Pixelating Stevie, because she’s awesome

Welcome to the next installment of Creative Coding Basics. You can see previous tutorials here.

And as always the full code is available on my github:

A pixelation filter is quite easy to create, and the sampling technique and formula is useful to know in creative coding, especially in computer vision, which I’ll be covering soon.

The essence of the pixelate filter is simply dividing the screen into blocks and then sampling blocks for their colours. We sample as blocks and not every pixel, for the sake of performance. …

An irregular round-up of inspirations and disruptions in advertising, social, urban play and human computer interaction.

Joe Hellerstein, a computer scientist at the University of California in Berkeley, calls it “the industrial revolution of data”. Data is everywhere. And it is beautiful.

Data is changing our lives, re-inventing online storytelling and influencing pretty much every industry — business, art, entertainment, music, technology.

Here’s some faves…

Information Journalism:

An irregular round-up of creative coding inspirations and disruptions in advertising, social, urban play and human computer interaction.

Device art is a playful subversion of product design, born out of Japan at the end of the last century. A way of taking everyday objects and subverting their use for artistic pleasure.

It’s an exciting and brilliant space, that innovates and subverts, without take technology or itself too seriously. A growing discipline that will become only more prevalent in art as technology enables artists to express themselves like never before.

No conversation on device art would be complete without first mentioning first Professor Hiroo Iwata, who not only heavily influenced most of the artists in the scene, but also…

Tricks on using sound to make generative artworks

Welcome to the next installment of Creative Coding Basics. You can see previous tutorials here.

And as always the full code is available on my github:

Setting up a microphone object is pretty basic, even though it might at first seem complicated. Don’t stress. Even if you don’t understand it properly, you don’t really need to. Because once it’s up and running, you never have to write it again… There are plenty of tutorials out there that can explain it more in-depth. But what I haven’t really seen are tips to move from the basic hello world to the…

Objects are a great way to encapsulate code, have cleaner code and make you code faster.

Let’s look at building a simple colourPool object — because making things look nice in Creative Coding has a lot to do with colour. And because we and. And because it’s a great way to see how to build objects, which are really just fancy functions.

Using the Javascript API we can build colours like so:

// using hex values
ctx.fillColor = “#ff0000”;
// using a colour name
ctx.fillColor = “red”;
//using a RGB value
ctx.fillColor = "rgb(255, 0, 0)";
//using a RGBA value
ctx.fillColor = "rgb(255, 0, 0, 1)";
//using a HSL value
ctx.fillColor = "hsl(0, 100, 100)";


George Galanakis

Media artist, tinkerer, dreamer. Generative motion, sound and visualizations. Data sculpture and Code Art.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store