Art Art Computing Generative Art Politics Projects Satire


Facecoin, 2014, HTML5 and JavaScript.


Click here to run a visualization in your web browser.

Cryptocurrencies such as Bitcoin use a “proof of work” system to prevent abuse.

Artworks are proofs of aesthetic work.

Facecoin uses machine pareidolia as its proof of work. This is implemented by applying CCV’s JavaScript face detection algorithm to SHA-256 digests represented as greyscale pixel maps. An industrial-strength version would use OpenCV. Due to the limitations of face detection as implemented by these libraries, the digest pixel map is upscaled and blurred to produce images of the size and kind that they can find faces in.

The difficulty can be varied by altering the size and blur of the pixmap. Or by only allowing particular detected face bounds rectangles to be used a set number of times.

Art Art Computing Generative Art Projects Satire

Working on Facecoin


Facecoin is an aesthetics-based cryptocurrency. It uses a face recognition algorithm on the output of its cryptographic hashing represented as a bitmap as its proof of work. Animated demo to follow.

LambdaMOO Satire

MOO Memeing

@verb me:lick this none none
@program me:lick

if (this.location != player.location)
lickfail = “You must be in the same location as %t to lick %[dpo].”;
elseif (this == player)
lick = “You lick yourself. Mmm! You taste just like raisins.”;
licks = “%N % %r. Mmm! %[dpsc] % just like raisins.”;
player.location:announce_all_but({player}, $string_utils:pronoun_sub(licks));
lick = “You lick %t. Mmm! %[dpsc] % just like raisins.”;
licks = “%N % %t. Mmm! %[dpsc] % just like raisins.”;
but = {this, player};
player.location:announce_all_but(but, $string_utils:pronoun_sub(licks));
licked = “%N % you. Mmm! You taste just like raisins.”;

3D Printing Art Free Culture Projects Satire


“Pipe” is a 3D printable model of a classic smoking pipe. It is the latest in a series that began with Urinal and continued with Balloon Dog

Commissioned by me and modelled by the ultra-talented Chris Webber. Chris retains the copyright on it and has placed it under the Creative Commons Attribution Sharealike 3.0 Licence.

You can download the files from Gitorious.

Or you can download them from Thingiverse and share images of your own prints and remixes there.

For images and more links see the project page:


Art Free Culture Free Software Generative Art Projects Satire

Composition Generators



Free Brit Art! [description+slogan] by Rob Myers

– Ruth Catlow.

Rob Myers does Damien Hirst (and Agnes Martin, and Ellsworth Kelly, and Barnett Newman, and Robert Ryman, and…
– Curt Cloninger.

Art Free Culture Projects Satire

The Mona Lisa Of Disapproval

Aesthetics Art Art Computing Art History Free Culture Free Software Generative Art Howto Projects Satire

Psychogeodata (3/3)

cemetary random walk

The examples of Psychogeodata given so far have used properties of the geodata graph and of street names to guide generation of Dérive. There are many more ways that Psychogeodata can be processed, some as simple as those already discussed, some much more complex.

General Strategies

There are some general strategies that most of the following techniques can be used as part of.

  • Joining the two highest or lowest examples of a particular measure.

  • Joining the longest run of the highest or lowest examples of a particular measure.

  • Joining a series of destination waypoints chosen using a particular measure.

The paths constructed using these strategies can also be forced to be non-intersecting, and/or the waypoints re-ordered to find the shortest journey between them.


Other mathematical properties of graphs can produce interesting walks. The length of edges or ways can be used to find sequences of long or short distances.

Machine learning techniques, such as clustering, can arrange nodes spatially or semantically.

Simple left/right choices and fixed or varying degrees can create zig-zag or spiral paths for set distances or until the path self-intersects.

Map Properties

Find long or short street names or street names with the most or fewest words or syllables and find runs of them or use them as waypoints.

Find all the street names on a particular theme (colours, saints’ names, trees) and use them as waypoints to be joined in a walk.

Streets that are particularly straight or crooked can be joined to create rough or smooth paths to follow.

If height information can be added to the geodata graph, node elevation can be used as a property for routing. Join high and low points, flow downhill like water, or find the longest runs of valleys or ridges.

Information about Named entities extracted from street, location and district names from services such as DBPedia or Freebase and used to connect them. Dates, historical locations, historical facts, biographical or scientific information and other properties are available from such services in a machine-readable form.

Routing between peaks and troughs in sociological information such as population, demographics, crime occurrence, ploitical affiliation, property prices can produce a journey through the social landscape.

Locations of Interest

Points of interest in OpenStreetMap’s data are represented by nodes tagged as “historic”, “amenity”, “leisure”, etc. . It is trivial to find these nodes to use as destinations for walks across the geodata graph. They can then be grouped and used as waypoints in a route that will visit every coffee shop in a town, or one of each kind of amenity in alphabetical order, in an open or closed path for example. Making a journey joining each location with a central base will produce a star shape.

Places of worship (or former Woolworth stores can be used to find using linear regression or the techniques discussed below in “Geometry and Computer Graphics”.


The words of poems or song lyrics (less stopwords), matched either directly or through hypernyms using Wordnet, can be searched for in street and location names to use as waypoints in a path. Likewise named entities extracted from stories, news items and historical accounts.

More abstract narratives can be constructed using concepts from The Hero’s Journey.

Nodes found using any other technique can be grouped or sequenced semantically as waypoints using Wordnet hypernym matching.


Renamed Tube maps, and journeys through one city navigated using a map of another, are examples of using isomorphism in Psychogeography.

Entire city graphs are very unlikely to be isomorphic, and the routes between famous locations will contain only a few streets anyway, so sub-graphs are both easier and more useful for matching. Better geographic correlations between locations can be made by scoring possible matches using the lengths of ways and the angles of junctions. Match accuracy can be varied by changing the tolerances used when scoring.

Simple isomorphism checking can be performed using The NetworkX library’s functions . Projecting points from a subgraph onto a target graph then brute-force searching for matches by varying the matrix used in the projection and scoring each attempt based on how closely the points match . Or Isomorphisms can be bred using genetic algorithms, using degree of isomorphism as the fitness function and proposed subgraphs as the population.

The Social Graph

Another key contemporary application of graph theory is Social Network Analysis. The techniques and tools from both the social science and web 2.0 can be applied directly to geodata graphs.

Or the graphs of people’s social relationships from Facebook, Twitter and other services can mapped onto their local geodata graph using the techniques from “Isomorphism” above, projecting their social space onto their geographic space for them to explore and experience anew.

Geometry and Computer Graphics

Computer geometry and computer graphics or computer vision techniques can be used on the nodes and edges of geodata to find forms.

Shapes can be matched by using them to cull nodes using an insideness test or to find the nearest points to the lines of the shape. Or line/edge intersection can be used. Such matching can be made fuzzy or accurate using the matching techniques in “Isomorphism”.

Simple geometric forms can be found – triangles, squares and quadrilaterals, stars. Cycle bases may be a good source of these. Simple shapes can be found – smiley faces, house shapes, arrows, magical symbols. Sequences of such forms can be joined based on their mathematical properties or on semantics.

For more complex forms, face recognition, object recognition, or OCR algorithms can be used on nodes or edges to find shapes and sequences of shapes.

Classic computer graphics methods such as L-sytems, turtle graphics, Conway’s Game of Life, or Voronoi diagrams can be applied to the Geodata graph in order to produce paths to follow.

Geometric animations or tweens created on or mapped onto the geodata graph can be walked on successive days.

Lived Experience

GPS traces generated by an individual or group can be used to create new journeys relating to personal or shared history and experience. So can individual or shared checkins from social networking services. Passenger level information for mass transport services is the equivalent for stations or airports.

Data streams of personal behaviour such as scrobbles, purchase histories, and tweets can be fetched and processed semantically in order to map them onto geodata. This overlaps with “Isomorphism”, “Semantics”, and “The Social Graph” above.

Sensor Data

Temperature, brightness, sound level, radio wave, radiation, gravity and entropy levels can all be measured or logged and used as weights for pathfinding. Ths brings Psychogeodata into the realm of Psychogeophysics.


This series of posts has made the case for the concept, practicality, and future potential of Psychogeodata. The existing code produces interesting results, and there’s much more that can be added and experienced.

(Part one of this series can be found here, part two can be found here . The source code for the Psychogeodata library can be found here .)

Aesthetics Art Art Computing Art Open Data Free Culture Free Software Generative Art Howto Projects Satire

Psychogeodata (2/3)


Geodata represents maps as graphs of nodes joined by edges (…as points joined by lines). This is a convenient representation for processing by computer software. Other data can be represented in this way, including words and their relationships.

We can map the names of streets into the semantic graph of WordNet using NLTK. We can then establish how similar words are by searching the semantic graph to find how far apart they are. This semantic distance can be used instead of geographic distance when deciding which nodes to choose when pathfinding.

Mapping between these two spaces (or two graphs) is a conceptual mapping, and searching lexicographic space using hypernyms allows abstraction and conceptual slippage to be introduced into what would otherwise be simple pathfinding. This defamiliarizes and conceptually enriches the constructed landscape, two key elements of Psychogeography.

The example above was created by the script derive_sem, which creates random walks between semantically related nodes. It’s easy to see the relationship between the streets it has chosen. You can see the html version of the generated file here, and the script is included with the Psychogeodata project at .

(Part one of this series can be found here, part three will cover potential future directions for Psychogeodata.)

Aesthetics Free Culture Generative Art Projects Satire

Psychogeodata (1/3)


tl;dr Psychogeographic Geodata using OpenStreetMap in Python. Download here.

Psychogeography is a set of techniques for defamiliarizing the landscape, particularly the urban landscape. It is a way of resisting and critiquing the historically, culturally and politically imposed reality of the built environment. Starting with Guy Debord, psychogeography has since followed the rest of the Situationist‘s techniques in being recuperated by society. But as Christine Harold points out in “Ourspace”, this can be redressed by intensifying the strategies of Situationism into new forms.

The town and tube maps used by previous psychogeographers have been replaced in modern experiences of the landscape by Geodata, a mesh of points joined by the lines of streets and accompanied by tagged information describing them for human and machine use. Combining Psychogeography and Geodata gives us Psychogeodata.


Geodata is tied to the logic of Googlization, of making the world rational and tractable for machines within the economy. Its positioning between commerce and consumer makes it ideal raw material for Situationist-inspired ironization. And Geodata, like other forms of information, can be made free. OpenStreetMap is a very successful project that does so.

Taking the inhuman logic of Geodata as the basis for Psychogeography allows us to use Graph Theory to examine the landscape mathematically. Graph Theory is also used in Social Network Analysis, and in discussions of the topology of the internet. It is a powerful mathematical abstraction.

The randomness, unfamiliarity and conceptual slippage that this provides us with can intensify historical strategies of Dérive. In order to do so we need Geodata (from OSM) and software to manipulate and present it. The software that I have written for Psychogeodata is in the Python programming language. It operates on graphs using the library. And the output is rendered using the OpenLayers Javascript library.


The first scripts written using the Psychogeodata library concentrate on the mathematics of graph theory. Click on the name of each script to open an example of its output in a new tab or window (which your browser’s popup blocker may warn you about):

(Disclaimer: This software currently generates paths that may or may not be safe or practical to actually follow. Use your discretion and common sense in choosing which ones to actually travel.)

derive – Generates random walks and non-self-intersecting random walks.

derive_degree – Generates journeys between high-and-low-connectivity nodes.

derive_loop – Generates circuitous journeys based on cycle bases

derive_tags – Generates paths between nodes with particular tags.


To download the software and for more information, see:

(Part two of this series will present some scripts based on semantics, part three will cover potential future directions for Psychogeodata.)

Free Software Satire

artbollocks-mode update

artbollocks-mode now calculates various text metrics: word and sentence count and several readability scores. You can access these through the mode’s keymap.

Download artbollocks-mode.el here: