The Treachery of Image Files

I have recently come into possession of a series of exquisite miniatures which I pray are worthy of your esteemed attention. While my employers are familiar with your unusual tastes, they also appreciate your desire for privacy- this showing was arranged with the utmost discretion, I assure you.

To the untrained eye, the pieces might appear remarkably similar. Each canvas is a digitally-reproduced composition measuring ten pixels in height and ten pixels in width, illuminated in a strikingly intense blue.

To an, ahem, avid collector such as yourself, it is no doubt obvious that each print possesses unique qualia, as expounded upon by the artist’s extensive footnotes. Please, take as long as you need…

Becoming and Unbecoming. Macintosh Operating System 10.14.6, Preview.App 10.1
Becoming and Unbecoming. Macintosh Operating System 10.14.6, Preview.App 10.1

In this piece, the artist used a carefully selected vintage of the Macintosh operating system. The desktop wallpaper color was customized to consist entirely of the desired blue, and then the Preview application was employed to take a screenshot and perform the necessary trimming. Tragically, Preview cannot save files in the Graphics Interchange Format (GIF).

Pointillism I. Sublime Text 3.2.2, ImageMagick 7.0.8-59
Pointillism I. Sublime Text 3.2.2, ImageMagick 7.0.8–59

In this piece, the artist manually constructed the image in the Portable PixMap (PPM) format using the Sublime text editor, as follows:

P3
# width, height, depth
10 10 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1

The ImageMagick application was then used to convert it into a GIF file:

$ convert ii.ppm ii.gif
Pointillism II. Vim 8.0.1365, FFmpeg 4.1.4
Pointillism II. Vim 8.0.1365, FFmpeg 4.1.4

For this piece, the artist once again created a PPM image, this time using the Vi, Improved text editor, giving the source code a subtly crisper affect:

P3
# horizontal, vertical, perchannel
10 10 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1
0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1  0 0 1

The Fast Forward Moving Pictures Expert Group application was then used to generate a GIF:

$ ffmpeg -i iii.ppm iii.gif
Searing Light. Nano 2.0.6, POV-Ray 3.7.0
Searing Light. Nano 2.0.6, POV-Ray 3.7.0

The artist composed this piece using the Persistence of Vision Raytracer language, composing the following script in the Nano’s Another text editor:

background { rgb <0, 0, 1> }

The scene was then raytraced as follows:

$ povray +Iiv.pov +W10 +H10 +Oiv

As with Preview above, the Persistence of Vision Raytracer is intentionally designed not to support the creation of GIF files; output is a Portable Network Graphics file instead.

The Cobbler. Sublime Text 3.2.2, as 10.0.1
The Cobbler. Sublime Text 3.2.2, as 10.0.1

This image was composed by the Macintosh Operating System X Mach-O Gnu’s Not Unix-based assembler, a utility for the creation of binary files. The Sublime text editor was once again employed for its neutral tone:

.ascii "GIF89a" # magic number
.short 10       # width
.short 10       # height
.byte  0xF0     # 2-entry global color table
.byte  0        # background color index
.byte  0        # 1:1 pixel aspect ratio

.byte  0x00     # color 0: blue
.byte  0x00
.byte  0xFF
.byte  0x00     # color 1: black
.byte  0x00
.byte  0x00

.ascii ","      # image descriptor
.long  0        # x/y offsets
.short 10       # width
.short 10       # height
.byte  0        # no local colortable
.byte  0        # minimum LZW code size
.byte  0        # end of frame

.ascii ";"      # finish

Curiously, the output of this assembler is prefaced with an entirely useless header, which must then be trimmed. (Hopefully future revisions of the tool will correct this obvious usability gaffe!) The composition was thus carried out as follows:

$ as v.s -o assembled.o
$ dd bs=1 skip=208 if=assembled.o of=v.gif
Camera Obscura. oK, iKe, Safari 12.1.2
Camera Obscura. oK, iKe, Safari 12.1.2

Here, the artist employed the Interactive K Environment (iKe), a tool based around the unfathomably esoteric programming language K. The tool can be used to save animated GIF images of program output; in this case, a single frame as indicated by fc:1. Note that iKe automatically doubles the size of pixels within images when rendering.

w:h:5
fc:1
draw:{,(;,"blue";5 5#0)}
Mu. English, Homo Sapiens
Mu. English, Homo Sapiens

For this work, the artist composed an electronic mail message to a colleague as follows:

Dear [REDACTED],
I pray this letter finds you well.

I am in grave need of your assistance. I require an opaque image file in the .GIF format,
measuring precisely 10 pixels square, consisting entirely of the hexadecimal RGB color #0000FF.
If you could provide me with such a file as an attachment, I would be immensely grateful.

Warmest Regards,
[REDACTED]

(P.S. This will make more sense later.)

Some time later, the artist used their electronic mail client to save the final print.

A Desperate Agony. VirtualBox 6.0.6, Ubuntu 19.04, GIMP 2.10.20, Shouting
A Desperate Agony. VirtualBox 6.0.6, Ubuntu 19.04, GIMP 2.10.20, Shouting

Here, the artist constructed a virtual machine- a sort of computing matryoshka, if you will- running the Ubuntu distribution of the Linux operating system. They then proceeded to install the GIMP application. Despite frequent threats by the developers to remove them, the GIMP application had (at time of composition) some obscure and infrequently-used features permitting the creation and manipulation of image files. After its painstaking creation, the file was then transferred between the virtual machine and its host by way of a physical Universal Serial Bus mass-storage device. The mass-storage device was prepared in advance by formatting it with the 32-bit File Allocation Table filesystem and labeling it Charon, in recognition of its role in transporting the soul of the artwork between worlds.

Composition in Blue and Blue. Gnuplot 5.2, Sublime Text 3.2.2
Composition in Blue and Blue. Gnuplot 5.2, Sublime Text 3.2.2

The artist generated this work using the Gnu’s Not Unix Plotter, based on the following description:

set terminal gif size 10,10
set output 'ix.gif'
set margins 0,0,0,0
unset key
unset tics
unset border
unset label
set style rectangle fs border lc rgb 'blue'
set object 1 rectangle from screen 0,0 to screen 1,1 fillcolor rgb 'blue' behind
plot 1 lt rgb 'blue'

Note in particular how easily a user of the Gnu’s Not Unix Plotter may customize the background color of a plot. The plot description may then be rendered as follows:

$ gnuplot ix.gp 

back