Retrospective: Richard Bolam at 50. It’s all over bar the shouting. #bolamat50

Screen shot 2015-05-12 at 09.38.46

I was 50 in real life and the passport photo was taken when I was 19 or 20.

However, it feels as though there is still a lot of shouting yet to do. Here are a few photos from the closing event at Access Space and the Rutland Arms.

My year of being 50 is over and the project has been an extremely varied and qualified success.

With hindsight, it was a mistake to start the project so much earlier than the year itself – after the launch event in April 2014, I was so burned out that I couldn’t maintain the energy levels that I had done for the previous two years. As a result, the middle few months of the actual 2014/15 fiftieth year was when the anti-climax hit. It was no surprise to me to have a dip, but the timing could not have been worse.

Screen shot 2015-05-12 at 09.39.27

Making Bolam masks for the free goodie bags that I gave out at the closing event.

However, I never really thought I would be able to achieve everything that I had planned, but the biggest failure is not getting the 12 issues of “Catalogue” finished within the year. This part-work magazine is the central piece of the project but I got distracted with other things. What’s more, I spent far too much time making new work, rather than cataloguing and presenting existing work.

Screen shot 2015-05-02 at 09.00.42

Wife #2 and backup wife #2 at the Rutland Arms, with “HYPE!” in the background.

None of those failures matter, of course, and the project has been a huge success in many ways, but not in terms of global fame, obscene wealth or critical adulation.

Screen shot 2015-05-02 at 08.58.01

One rather perverse pay-off is, thanks to the almost universal indifference to my work, I now feel completely disenfranchised from the art “world”. Not from art, but from the world of art, or the establishment at least.

This is not a good thing if you want to be successful in that world, but I have little respect for it because I refuse to do the artspeak and do not base my work upon the theoretical conceits that seem to be de rigeur these days.

Screen shot 2015-05-02 at 08.57.42

That’s me on the left.

Anyway, I currently have two exhibitions open, “Casualty” at Access Space (limited opening times) and “HYPE!” & BOLM•ART™ at the Rutland Arms, both in Sheffield, UK.

I will aim to get the remaining 11 issues of “Catalogue” finished over the coming year, and I will be continuing the project as Bolamat50+1.

Advertisements

Armistice Day 2014 – Casualty 14-18 #casualty1418 #WW1 #ArmisticeDay

Screen shot 2014-11-11 at 16.46.52

I have ambivalent feelings about wearing a poppy at this time of year. It’s not that I do not want to remember the dead, quite the opposite, and my work Casualty 14-18 is all about remembering the dead, but not just the British and Commonwealth dead and not in a way that might be associated with an establishment that still refuses to condemn war as political or commercial prudence.

I know some people wear a white poppy, although I also have mixed feelings about that.

However, ambiguity, ambivalence, conflict and contradiction are all potent effects in art, and the lack of resolution can be what keeps a work interesting, unlike much of the punchline-art that we see today.

Vote pleb graphics v2.128

Today is Armistice Day 2014 and my project has four more years to run. Each day it publishes 30 generatively created pages of 340 figures, one figure for each of the estimated 16 million dead – men, women and children – of all nationalities killed during the First World War. That is an average of 10,200 casualties per day for the duration of the war.

This is day 107 of 1,568.

http://casualty1418.net

Casualty 14-18 ~ The making of a generative artwork by Richard Bolam – Part 11 #bolamat50 #casualty1418 #WW1

Screen shot 2014-10-21 at 11.35.19

My project started on the 28th June 2014 and Armistice Day of the same year will be 107 days into it out of 1,568 in total. That’s 1,091,400 lives lost so far (as a daily average) and there is still more than four years to go.

I have started to organise the Bash script a bit more by separating some of it into functions that can be passed parameters and called in a proper structured manner. The code is still very dirty and will probably remain so for while as I experiment with other variations.

This function is used to either colourise or remove a few individual figures from the blocks.

function UNITSTAMP {
#add/remove some individual figures

echo $MAXCOUNT
for e in $( gseq $MAXCOUNT )
do
echo $e”/”$MAXCOUNT
convert casualtytiled.png  -region 20×38+$[($[RANDOM % 20]) * 20]+$[($[RANDOM % 17]) * 38] -fill  “rgba($UNITSTAMPCOL)” -colorize $COLORIZ$
convert casualtytiled.png -transparent white casualtytiled.png
done
}

It’s hardly a huge program but what has become very apparent about Bash is how irregular the syntax is. I guess this is a product of open source development, the commands and structures do not comply to a reliably reproducible structure, and this is where other programming regimes such as Python really come into their own.

On the plus side, it is very convenient to be able to call a load of add-on commands and functions, as and when I need them.

However, in the future I might rewrite the software to use something more structured, such as PHP or Python, if they can do the graphic manipulations.

Screen shot 2014-10-21 at 11.45.15

To my eye, this has too many blanks.

Screen shot 2014-10-21 at 11.47.26

This is much more satisfying.

The blanks seem to work best when they are only occasional and only one or a small number on the same page. Here is the call from the main program loop.

#remove a few figures
if [ $[RANDOM % 10] -eq 0 ] ; then
MAXCOUNT=$[RANDOM % 5]
UNITSTAMPCOL=”255,255,255″
COLORIZE3=’100%’
echo ‘COLORIZE3 = ‘$COLORIZE3
UNITSTAMP
fi

I included this because it adds an element of mystery about the individuality of the highlighted or removed figures. A friend asked me what the blanks mean. My reply was – exactly, what do the blanks mean?

http://casualty1418.net

Casualty 14-18 ~ The making of a generative artwork by Richard Bolam – Part 10 #bolamat50 #casualty1418 #WW1

Untitled 3

This time I have added a similar routine to fill from the bottom-right to top-left. The next iteration might be to create a contiguous group in the middle that could have a ragged edge on the top and on the bottom (see below).

Code fragment:

UNITCOUNT=$[RANDOM % 340]

UNITROWS=$[$UNITCOUNT / 20]
UNITCOLUMNS=$[$UNITCOUNT % 20]
echo $”UNITCOUNT = “$UNITCOUNT#” – “$UNITROWS” rows, “$UNITCOLUMNS” columns”

UNITCOL1=”$[RANDOM % 255],$[RANDOM % 255],$[RANDOM % 255]”

# create top-left to bottom-right flow of figures using colourised blocks
echo “bottom “$[$UNITROWS * 38]
if [ $UNITROWS -ne 0 ] ; then
convert casualtytiled.png -region 400x$[$UNITROWS * 38]+0+0 -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi
if [ $UNITCOLUMNS -ne 0 ] ; then
convert casualtytiled.png -region $[$UNITCOLUMNS * 20]x38+0+$[$UNITROWS * 38] -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi

UNITCOUNT=$[RANDOM % 340]
UNITROWS=$[$UNITCOUNT / 20]
UNITCOLUMNS=$[$UNITCOUNT % 20]
echo $”UNITCOUNT = “$UNITCOUNT#” – “$UNITROWS” rows, “$UNITCOLUMNS” columns”

UNITCOL1=”$[RANDOM % 255],$[RANDOM % 255],$[RANDOM % 255]”

# create bottom-right to top-left flow of figures using colourised blocks
echo “rows from bottom “$[$UNITROWS * 38]
if [ $UNITROWS -ne 0 ] ; then
convert casualtytiled.png -region 400x$[$UNITROWS * 38]+0+$[646 – $[$UNITROWS * 38]] -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi
if [ $UNITCOLUMNS -ne 0 ] ; then
convert casualtytiled.png -region $[$UNITCOLUMNS * 20]x38+$[400 – $[$UNITCOLUMNS * 20]]+$[608 – $[$UNITROWS * 38]] -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi

Untitled 2

I have started to organise the routines into functions so that I can call them in a more structured way. More soon…

Casualty 14-18 ~ The making of a generative artwork by Richard Bolam – Part 9 #bolamat50 #casualty1418 #WW1

Screen shot 2014-08-10 at 18.49.00

In the parlance of modern coders:

BOOM!

I have implemented the batch creation of images and the automated posting of multiple, scheduled blog posts. It’s spam technology, basically, and I am rather pleased with myself.

I hasten to add that the code, although reliable, is quite klunky so far, with no error-checking, no error-correction, no subroutines or functions and no audit-logging. The software echoes some info to the console for me to keep an eye on it, but am still checking each blog individually post for errors.

However, it’s only a development version of the software, but it works! The important part of this is that what I have done so far is a successful proof of concept of the workflow; creating the images, batch emailing them and automatically scheduling the posts over consecutive days. I am just doing batches of three days initially, but when I have checked the software more I will extend the period as there is no way I can attend this project every day for more than four years.

http://casualty1418.net

As I have said before, I am not an expert programmer, but I have done a lot of programming over the years, all the way back to 1980. However, I must say Bash is very odd, although it can do, well pretty much anything although some achievements with it require an almost religious devotion and a huge leap of faith. It’s not for the faint-hearted or the easily diverted.

Fortunately my heart is not faint and I am rediscovering something of the evangelical excitement I remember from those early days of programming.

Anyway, I think I might also start printing these out on actual paper. I had not intended to print this version of the work at all, but it might make a interesting adjunct to the online version.

Code fragment:

#!/bin/bash
#casualty make script v14

for d in {1..3}
do
CURRENTDATE=$(date -v+$d’d’ +”%y_%m_%d”)
CURRENTLABELDATE=$(date -v+$d’d’ +”%d/%m/%y”)
SCHEDULEDATE=$(date -v+$d’d’ +”%Y-%m-%d”)
echo $CURRENTDATE
echo $SCHEDULEDATE

mkdir ‘Casualty1418-‘$CURRENTDATE
PATHNAME=’Casualty1418-‘$CURRENTDATE’/’
echo $PATHNAME

#image creation code here…

#email images to blog
cd $PATHNAME
FILENAMES=*.png
FILENAMES2=’-a ‘`echo $FILENAMES | sed ‘s/ / -a /g’`
echo $FILENAMES2

echo ‘[delay ‘$SCHEDULEDATE’ 07:00:00 GMT][tags #casualty1418,#bolamat50,#WW1,Casualty,Casualty 14-18,#firstworldwar,First World War,generative,algorithmic,computational,art,Richard Bolam,Bolam Retrospective,#bolamat50][nogallery]’ | mutt $FILENAMES2 -s ‘Casualty 14-18 ~ ‘$CURRENTLABELDATE’ #WW1 #casualty1418′ youruniqueemailaddress@post.wordpress.com
cd ..

done

The next stage of development might include rewriting the code to be a bit cleaner and structured. It would be better to attend to that now, rather than later when there is a lot more sauce on the spaghetti.

Stay tuned…

Casualty 14-18 ~ The making of a generative artwork by Richard Bolam – Part 8 #bolamat50 #casualty1418 #WW1

Screen shot 2014-08-07 at 16.07.58

By the way, I am not an expert programmer and the code published here is experimental and comes with absolutely NO WARRANTY WHATSOEVER, so please USE AT YOUR OWN RISK.

Okay, pick the bones out of this one.

FILENAMES2=’-a ‘`echo $FILENAMES | sed ‘s/ / -a /g’`

Every space and flying ant is very specific and those “back-ticks” are not optional. This code fragment simultaneously illustrates what is both good and bad about linux / unix. Although I am still a bit of a noob with Bash, I can now reliably produce working code that actually does things I want. However, I am still regularly stumped by the unintuitive subtleties of the syntax.

Also, although there is a wealth of documentation online, much of it is incomplete and/or it does not necessarily work exactly the same on different implementations of Linux. I am not sure how much of this is due to my use of Mac OS X.

Anyway, it took a few hours of every combination of trial and error and a few leaps of faith to get this part of the script working. What I was trying to get working here is the automation of emailing the blog posts. I found a very helpful post on simplehelp.net:

http://www.simplehelp.net/2008/12/01/how-to-send-email-from-the-linux-command-line/

The Linux mail command does exactly what you would think, but it does not support attachments. However, there is an other command mutt which does the same but adds a lot more functionality. It’s deceptively simple to send an email from the command line, but for a while I could not work out how to add multiple attachments, and this is the bit that required a bit of head-banging.

If you google search sending multiple attachments you get lots of references to adding “-a” flag to each of the filenames, but I need to add a whole folder full and don’t want to have to list them verbosely.

I will not keep you guessing as long as it took me (and this might not be the best method) but just passing a list of file/path names after the first “-a” attachment flag does not work no matter what I tried. Anyway, with a bit of lateral thinking I wondered if I could programmatically format a list of file/pathnames as a string with a “-a” in front of each one.

This kind of preprocessing is where Bash programming really excels, and I found reference to the sed (stream editor) command to substitute the string” -a ” instead of the single spaces separating the derived list. That leaves the first file without a flag, hence the literal at the beginning of the calculation.

Code fragment:

#email images to a blog post
cd $PATHNAME
FILENAMES=*.png
FILENAMES2=’-a ‘`echo $FILENAMES | sed ‘s/ / -a /g’`
echo $FILENAMES2
echo ‘[tags #casualty1418,#bolamat50,#WW1,Casualty,Casualty 14-18,#firstworldwar,First World War,generative,algorithmic,art,Richard Bolam,Bolam Retrospective,#bolamat50][nogallery]’ | mutt $FILENAMES2 -s ‘Casualty 14-18 ~ ‘$(date +”%d/%m/%y”)’ #casualty1418 #WW1 – test post’ youremailaddress@post.wordpress.com

WordPress has a very full implementation of formatting options for emailing blog posts to your own blog. You have to create a unique email address and you can include various tags to add features to the post. The code here includes meta tags and an instruction to keep the images as a series of inline images rather than a gallery.
http://en.support.wordpress.com/post-by-email/

The next stage will be to add a tag to schedule the posts for a specific time and date. More soon…
http://casualty1418.net

 

 

Casualty1418-14_08_06-01

Casualty 14-18 ~ The making of a generative artwork by Richard Bolam – Part 7 #bolamat50 #casualty1418 #WW1

This is where it’s starting to get interesting. I decided to add a routine to colour figures from the top left to make it look more like a cumulative pictogram. This is merely a visual effect and not representing any real data, but it prompts the recognition of cumulative data based upon the Western top-left to bottom-right reading order.

Casualty1418-14_08_05-01

The first version of this bit of code stamps individual figures over the top of the already created array of black figures, one-by-one, along rows until it reaches a randomly derived limit. However, immediately after finishing this code, I realised that is a very inefficient way of colouring the existing figures, although it works fine.

If the code is going to colourise this new selection of figures the same colour, it is much more efficient to do it in a block rather than one figure at a time. Or should I say, in two blocks, one for the full rows and one for the partial final row.

Screen shot 2014-08-06 at 12.35.33

I have left in the one-by-one routine as I might use it later to alter figures one at a time but still in a cumulative order. I have commented it out for the time being.

I have also added a couple of variables to hold RGB colour values, rather than just generating them randomly on-the-fly, or literally.

Code fragment:

#pad figure
UNITCOL1=”$[RANDOM % 255],$[RANDOM % 255],$[RANDOM % 255]”
UNITCOL2=”$[RANDOM % 255],$[RANDOM % 255],$[RANDOM % 255]”
echo ‘UNITCOL1 ‘$UNITCOL1’ – UNITCOL2 ‘$UNITCOL2
convert casualty.png -gravity center -extent 20×38 casualtypad.png
convert casualtypad.png -transparent white casualtypad.png
convert casualtypad.png -fill “rgba($UNITCOL1)” -colorize 100% casualtycolour.png
convert casualtycolour.png -transparent white casualtycolour.png

#create tiled image of figures & make background transparent
convert -size 400×646 xc:white -composite tile:casualtypad.png casualtytiled.png
convert casualtytiled.png -transparent white casualtytiled.png

#create a top-left to bottom-right flow of figures row-by-row
UNITCOUNT=$[RANDOM % 340]
j=”1″
echo $”UNITCOUNT = “$UNITCOUNT” : j=”$j
UNITROWS=$[$UNITCOUNT / 20]
UNITCOLUMNS=$[$UNITCOUNT % 20]
echo $”UNITCOUNT = “$UNITCOUNT#” – “$UNITROWS” rows, “$UNITCOLUMNS” columns”
#
#for v in $( gseq $UNITROWS )
#do
# for h in {1..20}
# do
# composite -dissolve “50,100” -geometry +$[($h – 1) * 20]+$[($v – 1) * 38] casualtycolour.png casualtytiled.png casualtytiled.png
# echo $[$h * 20]”-“$[$v * 38]
# done
#done
#for h in $( gseq $UNITCOLUMNS )
#do
# composite -dissolve “50,100” -geometry +$[($h – 1) * 20]+$[($UNITROWS – 1) * 38] casualtycolour.png casualtytiled.png casualtytiled.png
#done

#j=$[$j+1]
#echo $j’/’$UNITCOUNT

# create top-left to bottom-right flow of figures using colourised blocks
echo “bottom “$[$UNITROWS * 38]
if [ $UNITROWS -ne 0 ] ; then
convert casualtytiled.png -region 400x$[$UNITROWS * 38]+0+0 -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi
if [ $UNITCOLUMNS -ne 0 ] ; then
convert casualtytiled.png -region $[$UNITCOLUMNS * 20]x38+0+$[$UNITROWS * 38] -fill “rgba($UNITCOL1)” -colorize 30% casualtytiled.png
fi

The results of the new additions bring much more subtlety and depth to the images. This new code will be implemented at the end of the week.

However, a more pressing addition is the automation of blog post creation and batch processing of multiple days. So far, I am still creating the pages manually.

Casualty1418-14_08_05-01