Genuary 2021

In January 2021, Alex Russell took part in Genuary 2021. Described by its co-ordinators as “build[ing] code that makes beautiful things”, the participants were invited to use a daily prompt to code some generative art and then post it on Instagram. You can see examples of the work Alex made below. In addition, you can read the text from each day’s post.

Day 01

To kick off Genuary 2021, here’s a version of some code that uses today’s prompt, Triple Nested Loop. The loop places pre-drawn images into a 3D grid (it looks 2D because it’s viewed from above). That makes it sound like it should have been easy to do… At the rate I made it, I will finish in January 2031. I’m going to attempt to use Genuary to develop a new ApeiroPattern collection.

Happy New Year!

ApeiroPattern generative art Genuary 2021 Day 01 by Alex Russell (full image)
Genuary 2021 Day 01

ApeiroPattern generative art Genuary 2021 Day 02 by Alex Russell (full image)
Genuary 2021 Day 02

Day 02

Today’s Genuary prompt is Steven Wolfram’s Rule 30 elementary cellular automata. The code takes a square section of cells at (psuedo-)random from the full CA, putting a hand-drawn grid into each of the live cells. The first and third images show the CA output on its own with different numbers of cells and overlaps. Today’s code is combined with yesterday’s to create a new output.

Normally when I code, I start with an idea of how some images might be put together to build an artwork. I then try to devise algorithms that will model the often-quite-abstract idea. Genuary is making me work in a different way, starting with a bit of code and pointing it at some images to see what happens. It’s good to have the chance to experiment. The plan is to use the month to help develop a new ApeiroPattern collection.

Day 03

Prompt: Make something human.

Humans make mistakes. If a human is making a drawing and makes a mistake, the human can choose to rub it out. So I thought some generative art that erases a bit of itself if it decides it’s wrong might be vaguely human. I’ve added a new bit of code to the combination from Day 1 and Day 2 that draws on a method used in printed textiles and surface pattern to balance a design. The code erases the part of the output it determines unbalances its composition.

I really like the concept of developing generative processes that remove stuff from an image. My first idea for today was to use the banding patterns in a karyotype of human chromosomes as the basis to make some stripes. This turned out to be a, er, mistake, but it is a good example of a thing at the heart of my creative output: inventing needlessly over-complex ways of doing colouring-in.

ApeiroPattern generative art Genuary 2021 Day 03 by Alex Russell (full image)
Genuary 2021 Day 03

ApeiroPattern generative art Genuary 2021 Day 04 by Alex Russell (full image)
Genuary 2021 Day 04

Day 04

Prompt: Small areas of symmetry.

Yesterday’s code erased part of the output generated by Day 1 and 2’s code. Today’s addition starts by sort-of-repeating yesterday’s: removing a second section, determining which is the second-most unbalancing part and collaging over it with (a scan of) a piece of paper. The code then adds a small area of symmetry to both. The symmetrical area is a dot or stripe pattern, delving further into the world of printed textile and surface pattern design. Technically, the pattern is not exactly symmetrical as it’s hand-drawn, chosen by the code from a library of pre-prepared scans.

There’s a sort of rhythm emerging in the way the code is getting rid of things to replace them with others. I didn’t plan this consciously, but it does reflect some of the methods I use when working entirely by hand. In essence, I try to coax an image into telling me what to do. On the not-by-hand front, I’m working in the ExtendScript for Photoshop® extension of Javascript, building each new day’s code into that of the previous days. For those of you that know what tomorrow’s prompt is, my code is already over 900 lines long… Is it the highest score in golf that wins?

Day 05

Prompt: Do some code golf.

9 holes. (Less code than 18.)

I’m adding each day’s code to the previous ones. One other tweak from yesterday: the outputs now have much larger pixel dimensions (these images would be about 40 cm x 40 cm at 300 ppi).

ApeiroPattern generative art Genuary 2021 Day 05 by Alex Russell (full image)
Genuary 2021 Day 05

ApeiroPattern generative art Genuary 2021 Day 06 by Alex Russell (full image)
Genuary 2021 Day 06

Day 06

Prompt: Triangle subdivision

Today’s addition to the code divides the main area of the image diagonally in half, then further subdivides it into six triangles. Alternate triangles are filled with abstract hand-made textures, with (as usual) the code written so that every run gives a unique output.

I’d originally planned to have the new code from today on top of everything else and use a much more delicate pencil-drawn pattern. While looking for something else, I found the textures I’ve ended up using tucked away on a hard-drive. I made a mistake with the code and put the subdivided triangles of texture at the bottom of the pile. After a bit of tinkering, I decided that the chance find and the stacking accident looked better than the intended plan. I plan pretty much all the code I write to have scope for things to happen unexpectedly; it’s good if the accident changes the plan itself.

Day 07

Prompt: Generate some rules, then follow them by hand on paper.

Something different/new today. The, er, rules as pseudocode:
open sketchbook;
random = (graph paper, lined paper);
stick random to paper;
for (i = 0; i < 3; i ++) {
if (i == 0) { media = pencil;
} else if (i == 1) { media = fine pen;
} else { media = thick pen; }
draw some vertical lines with media;
draw some horizontal lines with media;
if (think it won’t look good) { don’t draw all lines; }
}

I’m planning to get tomorrow’s code to do something to today’s outputs; not sure yet whether I’ll come back to the outputs made with the first 6 days’ code.

ApeiroPattern generative art Genuary 2021 Day 07 by Alex Russell (full image)
Genuary 2021 Day 07

ApeiroPattern generative art Genuary 2021 Day 08 by Alex Russell (full image)
Genuary 2021 Day 08

Day 08

Prompt: Curve only.

After an abandoned attempt to do something with vector curves, I did a bit of digging into fractal curves. I vaguely knew about dragon curves, but not that you can make them by repeatedly folding a stripe of paper in half. This appealed after yesterday’s hand-made output. In a very rare foray into three dimensions, I made some simple dragon curves and photographed them.

The code builds a collage out of the hand-made images from yesterday and then uses the dragon curve photographs to remove sections of them. Today’s soundtrack was Brian Eno’s “Lux”, which may have had a subliminal effect on the subtlety of the outputs.

Day 09

Prompt: Interference patterns.

Today’s code adds a spot pattern of interference patterns to the code from days 07 and 08. An image of hand-drawn lines is cropped to a circle, then copied and pasted over itself, with a slight rotation to get (intentional) interference patterns. Depending on where they go, some of the circles also produce (unintentional) interference patterns with the drawings from Day 07 beneath.

For all the Genuary stuff I’m making, I’m anticipating that the final outputs could be printed on paper, so the originals are quite big (today’s outputs are about 39 cm square at 300 ppi). I have got slight misgivings about how well they reproduce on social media as I’m not sure that what I’m seeing as “subtle”, the rest of the world will see as “boring”. (So if you are thinking “boring”, it’s social media’s fault.)
[Note: This text originally appreared on Instagram with a much smaller image.]

Today’s subliminal reference point is the work of Agnes Martin.

ApeiroPattern generative art Genuary 2021 Day 09 by Alex Russell (full image)
Genuary 2021 Day 09

ApeiroPattern generative art Genuary 2021 Day 10 by Alex Russell (full image)
Genuary 2021 Day 10

Day 10

Prompt: // TREE

I think today’s prompt was meant to be about fractal geometry and probably not taking some photographic tree silhouettes, mapping a pencil-shaded texture onto them and putting them over the past few day’s code…

Day 11

Prompt: Use something other than a computer as an autonomous process (or use a non-computer random source).

A circle, a square and a triangle cut out of black paper are randomly dropped onto white paper. A right-angle of white paper is randomly dropped onto them. A second right angle is then placed to form a square with the first. The resulting composition is photographed and digitally edited to 2 colours (black or white).

Channeling: Hans Arp.

ApeiroPattern generative art Genuary 2021 Day 11 by Alex Russell (full image)
Genuary 2021 Day 11

ApeiroPattern generative art Genuary 2021 Day 12 by Alex Russell (full image)
Genuary 2021 Day 12

Day 12

Prompt: Use an API.

Simple explanation: today’s code is an attempt to turn David Bowie’s “Sound And Vision” from sound into, er, vision.

Geek explanation: the code takes the data from the FFT analysis of randomly selected frames of David Bowie’s “Sound And Vision” and converts it to hexadecimal colour values. These are used to fill a series of layers. Each layer is a coded version of yesterday’s output, “dropping” scans of paper shapes onto a ground. I might have used two API’s… Processing does the FFT analysis on the song and writes it to a .txt file, which Extendscript reads and makes into the outputs here.

I’m going to lie down now. Also, apparently, there’s little or no yellow in “Sound And Vision”.

Day 13

Prompt: Do not repeat.

When I first read all the prompts, today’s one immediately caught my eye. Most of my current creative output is built around making patterns that do not repeat, designing artwork I collectively call ApeiroPattern.

The distance and angle between each identical element within a repeating pattern created for mass production using mechanical printing processes (such as screen printing) is always exactly the same. This is the characteristic that makes it a repeat design and makes it suitable for printing. The print process transfers the same image again and again to the paper, fabric or other surface, filling it with the pattern. Generative systems and digital printers can shift this paradigm. Code can create something that is a pattern, but that never does the same thing, and digital printers can print it. This is what I spend a lot of time working on.

Today’s code takes the squares, circles and triangles I’ve been using for the last couple of days and makes a relatively simple non-repeating pattern out of them. I’ve created a system from scratch today and it’s been a good challenge to do this in a couple of hours. It’s also given me an excuse to integrate a generative method of making a colour palette.

Channeling: Russian Constructivist textile design.

ApeiroPattern generative art Genuary 2021 Day 13 by Alex Russell (full image)
Genuary 2021 Day 13

ApeiroPattern generative art Genuary 2021 Day 14 by Alex Russell (full image)
Genuary 2021 Day 14

Day 14

Prompt: // SUBDIVISION

Today’s code takes the circle shapes I’ve been working with for the last few days and uses some new-to-Genuary hand-drawn patterns to subdivide them. In a change from yesterday, all the outputs repeat (as in, they tile together to form a seamless pattern).

Channeling: block repeats

Day 15

Prompt: Let someone else decide the general rules of your piece.

I asked my kids. After a short discussion about the feasibility of writing a video game in a couple of hours, they said (unpromted) “blur” and “colourful”. For “blur”, I’ve modelled a depth-of-field effect, For “colourful”, I’ve written a new method of generating a colour palette, based on the idea of colour triads.

Channeling: out-of-focus photography, colour theory

ApeiroPattern generative art Genuary 2021 Day 15 by Alex Russell (full image)
Genuary 2021 Day 15

ApeiroPattern generative art Genuary 2021 Day 16 by Alex Russell (full image)
Genuary 2021 Day 16

Day 16

Prompt: Circles only

Today’s code replaces the hand-drawn patterns I’ve used for the past couple of days (to cut into the solid shapes) with some of the abstract circular pencil drawings that featured in the first few days of my Genuary efforts. The colour and scale of each circle has more influence on how it appears when added to the image. The repeat structure has also changed; it’s now a half-drop (or half-step if you prefer). There’s a few other tweaks to the colour, composition and depth-of-field effect.

This week, it’s been hard making something every day. The building has always been interesting, but I’m not sure about all the results. For the first time since Monday, I’m quite pleased with the outcome today.

Channeling: repeat structures

Day 17

Prompt: Draw a line, pick a new colour, move a bit.

The code draws a line from the middle of one circle to the middle of another, then onto the middle of the next. This process is repeated once for every circle until the line comes back to where it started. Each line is a different colour, using a system based around triads. The circles are essentially the same as yesterday’s, only without the depth-of-field effect and in a block repeat rather than a half-drop (step).

Channeling: Sol Lewitt.

ApeiroPattern generative art Genuary 2021 Day 17 by Alex Russell (full image)
Genuary 2021 Day 17

ApeiroPattern generative art Genuary 2021 Day 18 by Alex Russell (full image)
Genuary 2021 Day 18

Day 18

Prompt: One process grows, another process prunes.

I’ve wanted to experiment with three dimensional cellular automata for ages. (I’m sure lots of you have been feeling the very self-same way.) Today’s code cycles through a 3D grid of cells, “growing” (adding) new cells or “pruning” (removing) old ones depending on the pattern of live and dead cells around them. Each shape in the final output corresponds to a live cell in the grid. I’ve used the same visual library as the last few days, tinkering more with the relationship each shape has to colour, scale and transparency.

Channeling: gardening, Conway’s “Game of life”

Day 19

Prompt: Increase the randomness along the y-axis

Today’s code uses a new set of library imagery, inspired by mid-twentieth century Modern textile design (in particular, Lucienne Day). The system behind the colour and placement is built on yesterday’s 3D cellular automata. Responding to the prompt, everything gets a bit more random the nearer to the bottom of the image it is.

Channeling: Lucienne Day

ApeiroPattern generative art Genuary 2021 Day 19 by Alex Russell (full image)
Genuary 2021 Day 19

ApeiroPattern generative art Genuary 2021 Day 20 by Alex Russell (full image)
Genuary 2021 Day 20

Day 20

Prompt: No loops.

Rather than writing some code without loops, I’ve used the prompt to re-work yesterday’s code to create outputs with no loops. In other words, they never do the same thing. The image shows the state of the output after 12 cycles of the cellular automata.

Every cycle re-works the design, as the CA rules grow or prune content. Looped indefinitely, this code would produce a never-ending, ever-changing artwork.

Day 21

Prompt: (A recursive function involving 1/4, 2/4 and 3/4 of x).

I’ve never worked with recursive functions before and I’m still not entirely sure how what I’ve written today actually works. However, I am secretly quite pleased with the results, so maybe my dimwittedness gives the code more autonomy…

Channeling: The recursion example page on processing.org

ApeiroPattern generative art Genuary 2021 Day 21 by Alex Russell (full image)
Genuary 2021 Day 21

ApeiroPattern generative art Genuary 2021 Day 22 by Alex Russell (full image)
Genuary 2021 Day 22

Day 22

Prompt: Draw a line. Wrong answers only.

Following on from yesterday’s outputs, today’s code varies the composition of the image, making some areas really busy and others much more empty. It does this by applying different recursive depths to different areas of the output. There’s a few slight tweaks to the colour engine too.

Oh, and this is a wrong answer because I’ve not drawn a line.

Day 23

Prompt: #264653 #2a9d8f #e9c46a #f4a261 #e76f51, no gradients. Optionally, you can use a black or white background.

Having played a bit fast and loose with yesterday’s prompt to essentially do what the heck I wanted, I’ve been more obedient today… The outputs are yesterday’s code re-worked to randomly assign each shape one of the five hex numbers as an RGB colour, with a black or white background (also randomly assigned).

Channeling: Limited colour palettes.

ApeiroPattern generative art Genuary 2021 Day 23 by Alex Russell (full image)
Genuary 2021 Day 23

ApeiroPattern generative art Genuary 2021 Day 24 by Alex Russell (full image)
Genuary 2021 Day 24

Day 24

Prompt: 500 lines.

After a bit of experimentation at the start of today’s coding with muted colour palettes, the lines in today’s outputs are hand-drawn with pencil in the (grey) colours they started life as.

There may be a couple more than 500 lines involved…

Channeling: Giorgio Morandi.

Day 25

Prompt: Make a grid of all the permutations of something.

Today’s code arranges three images. There are six different permutations of how they can end up; these are tiled into a 3 x 2 grid. Four runs here, four in the story. The images in each grid are all different, but feature similar content that is all-photographic for the first time in my #genuary.

These are just sketches, but are the first-ish steps of working on a concept I’ve been wanting to try for ages, based around blurring the future and the past. Great to have an excuse to start playing with it.

Channeling: Mark Fisher.

ApeiroPattern generative art Genuary 2021 Day 25 by Alex Russell (full image)
Genuary 2021 Day 25

ApeiroPattern generative art Genuary 2021 Day 26 by Alex Russell (full image)
Genuary 2021 Day 26

Day 26

Prompt: 2D perspective.

A geeky day… I’ve used the prompt as an excuse to play with isometric projection, another thing I’ve wanted to do for ages. The image library (developed from yesterday’s) is arranged using a more complex version of the cellular automata that first appeared on Day 18. Each image is transformed to be either the top, left or right face of an isometric cube. I’m trying to create a space that looks endlessly three-dimensional, yet only contains (screen-like) two dimensional content.

Channeling: Boards Of Canada

Day 27

Prompt: Gradients without lines.

For today, I’ve built some new things into yesterday’s code. Using the prompt, gradients in a range of single colours, fading from full opacity to zero opacity, are added to the image. These are interleaved between the different Z-axis levels of the 3D cellular automata that govern the photographic images. I’ve also increased the range of sizes that the images can be and made some tweaks to the colour.

Initially, I thought that the opaque sides of gradients should have the same feathered edges as the photographic images, but I like the way the harder edges reveal more of the isometric geometry. (There’s a sentence I didn’t know I was going to write when I got out of bed today.) If I say “harder edges” and not “lines”, I haven’t broken the terms of the prompt.

Channeling: The images (mainly adverts) in the cityscapes, interfaces or peripheral vision of films such as “Blade Runner”, “Ghost In The Shell” and “Minority Report”.

ApeiroPattern generative art Genuary 2021 Day 27 by Alex Russell (full image)
Genuary 2021 Day 27

ApeiroPattern generative art Genuary 2021 Day 28 by Alex Russell (full image)
Genuary 2021 Day 28

Day 28

Prompt: Use sound.

Today’s code uses a new set of images. These are either sound files edited in image software or image files edited in sound software. The sound files are set to a new colour palette, loosely based on the one I’ve used for the last couple of days. The image files have either echo or reverb applied, before being converted back to image files.

The code that arranges everything is a further development from Days 26 and 27. Some images have textures removed from them, using a further set of sound files. There’s also some new blur effects and a few other tweaks here and there.

Channeling: I thought this might look a bit vapourwave, but it’s ended up more ikat. (There’s two words you don’t see in the same sentence every day.)
The sound files are ideas recorded for another thing I do.

Day 29

Prompt: Any shape, none can touch.

Tried to do a thing. Couldn’t get it to work. Here’s another thing, with a shadow effect to suggest nothing is touching.

Channeling: Sisyphus.

ApeiroPattern generative art Genuary 2021 Day 29 by Alex Russell (full image)
Genuary 2021 Day 29

ApeiroPattern generative art Genuary 2021 Day 30 by Alex Russell (full image)
Genuary 2021 Day 30

Day 30

Prompt: Replicate a natural concept (e.g. gravity, flocking, path following).

The natural concept I’ve gone for is entropy. A tweaked version of yesterday’s code runs, then an area of the image is copied and degraded digitally. The entropied copy is pasted back into the main image, then a new area is copied, entropied and re-pasted. The process is repeated 10 times. There’s a sort-of-Droste effect thing going on, which I’m always fond of.

Channeling: Jan Misset.

Day 31

Prompt: One of Brian Eno and Peter Schmidt’s “Oblique Strategies”.

The random card I got was “Towards The Insignificant”. Using the Droste effect I experimented with yesterday, today’s code takes an increasingly insignificant (smaller) area of the image, copies it, transforms it into one face of an isometric cube and pastes it back in. The code creates five images with each one, increasing the steps towards insignificance each time.

Not entirely sure how, but I’ve managed all 31 days.

Thanks, everyone, especially Piter Pasma. It’s been significant.

ApeiroPattern generative art Genuary 2021 Day 31 by Alex Russell (full image)
Genuary 2021 Day 31

If you’d like to see a few more examples of different runs of the code, there are some posts on the News page. Firstly, Days 1 to 11. Secondly, Days 12 to 21. Finally, Days 22 to 31.