Aesthetics Art Art Computing Free Software Generative Art Projects

Streaming Aesthetics: Shape

Streaming Aesthetics: Shapes
Here’s the code for Streaming Aesthectics: Shape . You can compile and run it in Processing.

It follows Twitter to see when people tweet shape names and then draws those shapes, packing them inside each other.

There’s some unused code for more complex shapes, but “star” and “cross” appear in the Twitter firehose more often than geometric shape names.

Next is Streaming Aesthetics: Pattern .

Aesthetics Free Software Howto Projects


Forepaw Electronics

This is the electronics for the Forepaw, my North Paw clone. It consists of a compass module, an Arduino microcontroller, a shift register, and eight vibration motors (such as you would find in a mobile phone). And a battery connector, battery case, some veroboard, some ribbon cable and some bell wire. You may just be able to see that the fifth vibration motor from the end of the ribbon cable is vibrating.

Next I need to add a case for the circuit boards and add velcro and fabric to the ribbon cable.

You can find the source code and some construction notes on Gitorious . A big thank you to Eric Boyd from Sensebridge who gave me some insight into the construction of the original North Paw when we met at the Quantified Self conference.

Free Software Howto


irc is an old text-based internet chat system that still gets used by many projects.

irssi is a good client for irc. You can find out how to set it up, including how to configure it to automatically connect to servers and channels here .

It’s best to run irssi in a GNU screen session on a remote server and then connect to that when you want to chat. This allows you to keep track of conversations in channels even when you are not online. Here’s a script to do this. Save it as irc somewhere on your PATH (e.g. in the bin directory in your HOME), chmod +x it, and then it’s easy.

ssh -t ${SSH_HOST} "screen -dr ${IRSSI_SESSION} || \
screen -S ${IRSSI_SESSION} irssi"
Aesthetics Art Computing Art Open Data Free Software Howto Projects

Logging Colours To ThingSpeak

ThingSpeak is a Free Software-based web service for publishing (geolocated) data. This makes it better than proprietary services for publishing data.

Using it is very easy, as this tutorial demonstrates. here’s some code I’ve written in the Python programming language to grab a palette of 8 colours from a webcam image of my studio every 10 minutes and publish it to a ThingSpeak “Channel”:


And here’s the resulting data, in JSON format:

Update [17th April 2011]

Thanks to ThingSpeak suggesting it, here’s a jQuery display of the colours:


It starts with the 100 most recent palettes, and adds them every 10 minutes as more are uploaded.

Art Open Data Free Culture Free Software

Art Open Data 2

How To Use Art Open Data

Interface With APIs

Web APIs provide read access to data and may allow data to be written back to share as well.

This allows data to be accessed and published more quickly than with downloadable datasets, often instantaneously.

Load Datasets

Datasets can be loaded into applications and programming environments directly.

This makes social network analysis and statistical analysis much more efficient.

Perform Statistical Analysis

Datasets can be analysed to find statistical features such as averages and outliers. This can direct further analysis or suggest subjects for critical consideration.

Perform Knowledge Discovery

Text and images can be processed to discover patterns, similarities between different works, relationships between subjects, and even limited kinds of aesthetic and affective qualities.

Perform Social Network Analysis

The interactions of individuals in the artworld over time can be analysed to model relationships and the relative importance or position of individuals within their social cliques.

Create Data Visualisations

Static or interactive graphical presentations data can be useful for finding interesting properties of a dataset or for better understanding the features or relationships within a dataset. It can also be art in its own right.

Where To Find Data Sources And Tools


CKAN is a directory of datasets. is an online media repository. It contains scans of many important and useful art historical primary documents. is an online library of electronic texts. It includes books and lectures by John Ruskin, William Morris, and many others.

freebase is an online database that extracts information from Wikipedia and makes it available for download. It has datasets on artworks, artists, and other art-related subjects.


Culture24 provides and API to access data about exhibitions and other current events at UK galleries and museums.

The Culture Grid API provides access to aggregated information from UK museum websites.

flickr commons provides images from museum collections tagged by volunteers, searchable and taggable through an API.

Wikimedia Commons provides images uploaded by volunteers, searchable through an API.


Wordle is an online service that creates “word clouds” from text. This can be useful for visually getting the feel for a text quickly.

Many Eyes is an online data repository and graphing service. It can be a convenient way of sharing data and visualisations.

SocNetV is a social network analysis application. It allows social network data to be analysed and visualised in various useful ways.

GNUPlot is a data graphing utility. It supports many different kinds of graphs and can be a useful tool for plotting data.

Programming Environments

R is a statistical analysis programming language. It is useful for statistical analysis, machine learning, and for drawing high-quality graphs of the results.

Python is a general-purpose programming language. It is useful for accessing APIs, text processing, machine learning, and data visualisation.

Processing is a simple data visualisation programming language. It can easily be extended to use more advanced facilities and is useful for creating interactive information graphics.

PD is a graphical programming language popular with digital artists. Using it with art open data helps to include artists in the analysis and visualisation of that data.

How To Proceed

Locate And Index Data

Find new APIs and new sources of data, and explore existing sources to find new datasets, then add them to CKAN.

Digitise Primary Sources

If you have physical access to an out-of-copyright primary source, photograph or scan it and upload the results to

Extract Data From Primary Sources

Once primary sources have been scanned, more structured data can be extracted from them. Text scans can be cleaned up and converted to machine readable formats using Optical Character Recognition (OCR). Artwork scans can be cleaned up, be tagged or categorized or otherwise have metadata added, or be processed algorithmically to find features or extract aesthetic information such as palettes.

Produce Interfaces To APIs

Web APIs are no good if people can’t use them. Creating libraries of code in a programming language you use to access an art open data API opens that API up to all the users of that language.

Combine Datasets

Combining multiple datasets can add information that is missing from a main dataset or extend its coverage of dates or regions.

Add Non-Art Open Data

Using geodata from OpenStreetMap, bibliographic data from the British Museum, economic data from OpenEconomics, and other sources of Open Data can complement Art Open Data. Combining data from diverse fields can provide context and reveal or explain unexpected features of the original dataset.

Analyse Data

Having got all this data, it’s time to explore it and to find interesting things that are hidden in it. Theories can be suggested, supported or undermined by the data, and it’s here that the traditional skills of art history or art theory can come into play.

Visualise Data

Data visualisation of art data is where art and data truly join together. Whether a simple chart or a complex interactive animation, making data about art visual can provide inspiration to both the study and production of art.

Art Open Data Free Software Projects

Culture Hack Days

I’d like to organize an Art Open Data Hack Day next year.

I’ve been looking for similar events, and there are good precedents, but nothing exactly like what I have in mind:

Art Computing Art History Art Open Data Free Software Howto

Exploring Art Data 4

Let’s draw some more graphs.

Here’s the matrix of form and genre rendered graphically:

## Load the tab separated values for the table of artworks
# Get rows with both genre and form
## This loses most of the data :-/
art<-artwork[artwork$art_genre != "" & artwork$art_form != "",
c("art_genre", "art_form")]
## Drop unused factors
## Get table
art.table<-table(art) ##as.table(ftable(art))
## Strip rows and columns where max < tolerance
art.table.cropped<-art.table[rowSums(art.table) >= tolerance,
colSums(art.table) >=tolerance]
## Print levelplot
## Levelplot is in the "lattice" library
## Rotate x labels, and set colour scale to white/blue to improve readablity
levelplot(art.table.cropped, xlab="Genre", ylab="Form",
col.regions=colorRampPalette(c("white", "blue")))

levelplot.pngThe highest frequencies leap out of the graph. We should do a version without painting to look for subtleties in the rest of the data.

And here’s some of the basic frequencies from the data:

## Load the tab separated values for the table of artworks artwork<-read.delim("./visual_art/artwork.tsv") ## Function to plot a summary of the most frequent values topValuePlot<-function(values, numValues){ ## Get a count of the number of times each value name appears in the list values.summary<-summary(values) ## Draw a graph, allowing enough room for the rotated labels par(mar=c(10,4,1,1)) barplot(values.summary[1:numValues], las=2) } ## Artists topValuePlot(artwork$artist[artwork$artist != ""], 20) ## Subject topValuePlot(artwork$art_subject[artwork$art_subject != ""], 20)


The dataset is clearly dominated by Western art.
Aesthetics Art Computing Art History Art Open Data Free Software Howto

Exploring Art History Data 2

Let’s see how art form and genre relate in the Freebase “Visual Art” dataset of artworks.

# read the artwork data
# Get rows with both genre and form
# This loses most of the data :-/
art<-artwork[artwork$art_genre != "" & artwork$art_form != "", c("art_genre", "art_form")]
# Drop unused factors
# Get table
art.table<-table(art) ##as.table(ftable(art))
# Strip rows and columns where max < tolerance
art.table.cropped<-art.table[rowSums(art.table) >= tolerance,colSums(art.table) >=tolerance]
# Print wide table (make sure you resize your terminal window)

art_genre                          Drawing Fresco Installation art Metalworking Painting Photography Relief Sculpture Tapestry
Abstract art                           2      0                6            0       36           0      0         5        0
Allegory                               0      0                0            0        7           0      0         0        0
Animal Painting                        0      0                0            0       14           0      0         0        0
Christian art                          0      0                0            0        1           0      0         1        0
Christian art,History painting         0      0                0            0        2           0      0         0        0
Decorative art                         0      0                0            6        0           0      3         0        4
Fantastic art                          0      0                0            0        4           0      0         0        0
Genre painting                         0      0                0            0      120           0      0         0        0
Genre painting,Landscape art           0      0                0            0        4           0      0         0        0
History painting                       0     10                0            0      207           0      0         0        0
History painting,Landscape art         0      0                0            0        3           0      0         0        0
History painting,Religious image       0      0                0            0        3           0      0         0        0
Landscape art                          0      0                0            0      169           1      0         0        0
Landscape art,Genre painting           0      0                0            0        7           0      0         0        0
Landscape art,Marine art               0      0                0            0        3           0      0         0        0
Marine art                             0      0                0            0       34           1      0         0        0
Marine art,History painting            0      0                0            0        4           0      0         0        0
Marine art,Landscape art               0      0                0            0        3           0      0         0        0
Monument                               0      0                0            0        0           0      0         8        0
Portrait                               2      1                0            0      230           5      0         0        0
Religious image                        0      0                0            0        4           0      0         0        0
Religious image,History painting       0      0                0            0        4           0      0         0        0
Still life                             0      0                0            0       35           0      0         0        0

This time painting rather than photography has suspiciously more entries than any other medium, as more paintings than any other medium have genre information in the dataset.

Art Art Computing Art History Art Open Data Free Software Howto Projects

Exploring Art History Data 1

Freebase have a section of visual art data: here.

You can download an archive of the data: here.

Expanding the archive gives you the data as tab-separated files:

$ ls visual_art
art_acquisition_method.tsv artwork.tsv
art_owner.tsv color.tsv
art_period_movement.tsv visual_art_form.tsv
art_series.tsv visual_art_genre.tsv
art_subject.tsv visual_artist.tsv
artwork_location_relationship.tsv visual_art_medium.tsv

Loading up R, we can parse the files and check some of the features of the data:

$ R --quiet
> artwork<-read.delim("./visual_art/artwork.tsv")

> artwork<-read.delim("./visual_art/artwork.tsv") > names(artwork) [1] "name" "id" "artist" [4] "date_begun" "date_completed" "art_form" [7] "media" "period_or_movement" "art_genre" [10] "dimensions_meters" "art_subject" "edition_of" [13] "editions" "locations" "owners" [16] "belongs_to_series" > artists<-artwork$artist[artwork$artist != ""] > summary(artists)[1:20] Henri Matisse John Gutmann Pablo Picasso 72 66 66 Ferdinando Ongania Vincent van Gogh Caravaggio 57 57 49 Raphael Claude Monet Dr. William J. Pierce 48 44 42 Alexander Girard Tina Modotti Martin Kippenberger 37 37 36 Alvin Langdon Coburn Thomas Annan Robert Adams 31 31 30 Paul Cézanne Edward Weston Martin Venezky 29 28 28 Paul Klee Willi Kunz 28 28 > media<-artwork$media[artwork$media != ""] > summary(media)[1:20] Gelatin silver print Oil paint Canvas,Oil paint 1110 897 429 Oil paint,Canvas offset lithograph Albumen print 429 221 185 Bronze Photogravure chromogenic print 138 127 104 Acrylic paint Synthetic polymer paint Ink 82 69 67 Graphite Screen-printing Wood 61 57 55 Daguerreotype Mixed Media Oil paint,Panel 39 39 37 Panel,Oil paint Marble 35 30 > gelatin_silver_print_artworks<-artwork[artwork$media == "Gelatin silver print" & artwork$artist != "",] > summary(gelatin_silver_print_artworks$artist)[1:20] Dr. William J. Pierce John Gutmann 78 41 34 Robert Adams Ilse Bing Edward Weston 30 27 26 Walker Evans Tina Modotti Dorothea Lange 20 19 18 Lee Friedlander Lewis Hine Garry Winogrand 16 16 14 Henry Wessel Nicholas Nixon Ansel Adams 13 13 12 Harry Callahan Pirkle Jones Arnold Genthe 11 11 10 Bill Brandt Lewis Baltz 10 10

A couple of quick checks of the data show that it has some biases relative to mainstream art history, with more photography and photographers than you might expect. And there are several different entries for oil painting, which have skewed the numbers. This is interesting data, but about the dataset rather than about art more generally at the moment. Perhaps art history data will be as useful for institutional critique as for historical research.

Art Art Computing Free Software Generative Art Projects

A GUI For draw-something

I’ve written a Gtk+ user interface for draw-something to help evaluate its output.

You’ll need the git repository for draw something, and cl-gtk2 installed:

(asdf:oos ‘asdf:load-op :asdf-install)
(asdf-install:install :cl-gtk2-gtk)
(asdf-install:install :cl-gtk2-cairo)

git clone http://OFFLINEZIP.wpsho/git/draw-soemthing.git

Then you can run the gtk.lisp script in src:

cd draw-something/src
sbcl –load gtk.lisp

And once you select “New Drawing” you can view the different stages of its development. Which is very useful. I must add a File menu so people can use this to save images as well.

draw-something gui 1

draw-something gui 2