Hacking Creative Composition at CADAF

I’ve a couple of pieces at CADAF in New York with Kate Vass Gallerie (above is one of the giclées, “Local Maxima: SFLT2, Square” (2019)):


Creative Crypto have a profile of me ahead of the event, from which I’ve stolen the title of this post:


Blockchain Aesthetics: Dogecoin and Ethereum

Two new sets of visualizations to complement the Bitcoin ones: Dogecoin and Ethereum.

You can get them via git, or view them on the Show section of this site.



This took a ridiculous amount of time to hack together, but here’s a Common Lisp function to decide the shortest angle between two other angles. It’s used in the example of seeking a point above. I can now add noise to this to make a more AARON-style pen.

(defun shortest-angle-difference (a1 a2)
  "Find the shortest positive or negative distance between two angles."
  ;; This was slowly assembled from various online sources, none of which worked
  ;; Normalize angles to 0..2pi
  (let ((from (mod a1 +radian+))
        (to (mod a2 +radian+)))
      ;; If from and to are equal (0 = 2pi radians) the angle is zero
      (if (or (= from to)
              (= (+ from to) +radian+))
          (let ((angle (- to from)))
            (if (> (abs angle) pi)
                ;; Please simplify me
                (* (- (signum angle)) (- +radian+ (abs angle)))
draw-something 2016

draw-something drawing February 2016

I’ve updated the Common Lisp version of draw-something to use modern technologies – Roswell, QuickLisp, ASDF 3, cl-cffi-gtk and the Plan testing library. The tests helped flush out bugs, changing my mis-uses of defmethod to defun silenced a lot of compiler warnings and that in turn helped find some more bugs. There’s now a bit of technical debt in the form of function and class names, I’ll address that later. Like the recent minara update, this is a bitrot update rather than a new feature release.

Running the code to test it reminded me of just how dissatisfied I was with the last version of draw-something. The image at the top of this post is one of the less bad results of running the code. This is an aesthetic / theoretic problem rather than a coding one. I need the same clarity that informed the earlier versions of the program (you can see a JavaScript version of one running on tumblr) in order to structure the code to output something you’d actually want to look at.

Minara 0.4.0


I’ve been making the regular (accidentally) six-yearly update to Minara, my vector graphics program.

The new version switches from GLUT to Gtk for the windowing system, from GLU to Cairo for the renderer, and from C to pure Scheme for the core application. It’s all written in The GNU project’s Guile Scheme system.

Minara is Lisp all the way down: the application, tools, and graphics files are all written in Scheme. It’s designed as an environment for 2D generative vector art hacking.

Art For Algorithms


My first article for Furtherfield as guest editor is now online:

Rob Myers takes a look at how we can subvert the operation of the algorithms that the Digital Humanities, corporations and governments use to read, see, and draw conclusions about human expression by treating them as the true audience for contemporary art and literature.


Easier Dogecode

I’ve added a Dogecode runner that uses dogepartychain.info‘s API rather than requiring a local dogepartyd instance to be running. You can get the runner as part of the Dogecode source code here: https://github.com/robmyers/dogecode And you use it like this:

dcrunw DFibwNZvuJaHM9bD6x1WA63urkHiE4tWzF

which will fetch the program encoded as Dogeparty tokens at the specified address (DFib…) and run it locally. Here’s some addresses to try:





Blockchain Aesthetics 2

Visualizing Bitcoin blockchain transactions – click on each image to run in your browser.

Each hash as instructions for a turtle graphics pen:


Life games with each hash as the starting board state:


A Chernoff Face of each hash:


Cellular automata with each hash as the initial row:


Quadratic curves with the bytes of each hash as the control point co-ordinates:


Blockchain Aesthetics


These images are examples of real-time generative patterns visualising Bitcoin transactions. I wrote them in html5 using blockchain.info’s WebSockets API to get notifications of the hash value of each new transaction.

You can click on each image to open a new window actually running that visualization.

Above, each row is a transaction with each byte of 32-byte hash rendered as a square of colour from a 256-colour palette.


Above, each sentence is a transaction rendered in a standard list of words.


Above, each bitmap is the 32-byte hash for each transaction hash rendered as a 16×16 1-bit bitmap (original Macintosh-style, 1 is black).


Above, each row is a transaction with each byte of 32-byte hash rendered as a spot of colour from a 256-colour palette.


Above, each transaction is rendered as a drawing of lines connecting x,y co-ordinate pairs taken from the low and high 4 bits in each 8-bit byte in the 32-byte transaction hash. Each transaction is joined to the next as part of the same continuous drawing.


Above, each bitmap is rendered as before and then blurred. A face recognition algorithm is used to find any collections of pixels that accidentally resemble faces, and these are outlined in red. This is machine pareidolia.

As well as clicking on the images to run each visualisation, you can view a list of them here (including both the block and transaction-based visualisations – the former run much slower):


You can get the code here:



“Art Is” Wordcloud (Streaming Aesthetics)

art_is wordcloud

Words used after the phrase “art is” on Twitter (minus some stopwords).

Processing code in the streaming-aesthetics repository.