stela version 2

Dream Freely

 

 

This is a picture of the moon.

Please humor me for ten seconds, and be silent. Look at the moon and think about the art that we will make in the future. Ten seconds.

(one thousand)

(two thousand)

(three thousand)

(four thousand)

(five thousand)

(six thousand)

(seven thousand)

(eight thousand)

(nine thousand)

(ten thousand)

Ten.

Fifty.

This year is the fiftieth anniversary of the free speech movement. That’s both a historical event that has special significance for Berkeley, Palo Alto, San Francisco, and the wider Bay Area. And it’s something that set up a chain of events that gave citizens of the US special privileges with respect to media and rights in the public sphere.

Related to the free speech movement is free software. This is the idea that every human being should be able to interact with computers without any shackles of commercial control. Free software can be thought of as a social movement that started when one guy wanted to print, and couldn’t use the printer software. Part of my art practice is being a free software diplomat.

Related to free software is free culture. Culture is what we make as artists. Freedom of expression is important, and a vital tool in making art.

This fall, in honor of the free speech movement, I’m dedicating myself to free culture. As part of this I’m looking for allies, artists, and accomplices. My first project is to turn any unused computers in the Graduate Computer lab into a free-software based rendering grid during the weekend midnight hours. I’ll keep this to un-used workstations on the weekends, between the hours of midnight to 7am, and choose to think of it as these machines dreaming freely.

Notes on the software/hardware configuration.

libabigail aka C++ Instrumentation and Analysis


Background

Libabigail is shorthand for the alternative, which just so happens to be a bit of a mouthful: “GNU Application Binary Interface Generic Analysis and Instrumentation Library.”

This is a current compiler/language research topic to provide a serialized XML form of C++11 sources as compiled by GNU g++, and a way of looking at the data produced. This data can be parsed to more accurately determine ABI compatibility, to better understand code additions and changes and how these change the exported interface, to examine and prototype how C++11 language usage determines linkage, etc.

Discussions about this functionality started at the “C++ ABI BOF” at the GNU Tools Cauldron 2012 Prague. This work was created at Red Hat, by Benjamin Kosnik, Jason Merrill, and Dodji Seketeli. Some updates at 2013 Cauldron. See “Cauldron 2013 GCC ABI BOF.”

Development sources are written in mixed C++2003/C++11, hosted in git, based on GCC trunk, and tracking what will to be gcc-4.9.0. The branch is administered by Dodji Seketeli.

Please feel free to try it out, but know that the state is experimental and quite raw.

Feedback and assistance is welcome.

Starting from a git working tree as described in GitMirror, add the libabigail repository as follows:

git checkout -b libabigail origin/libabigail

To stay up to date, use:

git pull


Overview

How is this expected to be used? First, a libabigail top-level directory is either added to the GCC sources or compiled as a first step and put into some PREFIX directory. The GNU C++ compiler, g++, is configured to use this new library with:

configure .. --with-abigail=$PREFIX

Thus configured, the C++ front end is built, installed, and used as the primary compiler. All sources are compiled with an additional flag, -fdump-abi.

So, this command:

g++ -c -fdump-abi somefile.cc

Creates two files:

  • somefile.o

    The object file

  • somefile.cc.bi

    The XML instrumentation file


API/ABI

basics

Toplevel namespace is abigail.

The interface header files in libabigail:

abg-ir.h
abg-corpus.h

Doxgen is used to document the sources: try make html to generate, and look in libabigail-build-dir/doc/api/html/index.html to read it.

And then the binary interface is in libabigail.so.

notes

Each object file is compiled to a translation_unit. The sum of all translation_units is a corpus.

Compiler-generated files are read as serialized input to a translation_unit and de-serialized. And any modified form is written to an output file in serialized form.

The interface to the C++ intermediate representation is best viewed in the class documentation.

Opinions and Wild Guesses

1. Some formatting tips.

– classes “read” as types, data, members functions. In that order.

– doxygen gives feedback on the state of the doxygen parse in the form of a log, as you run “make html.” Read this log: doxygen is a fuzzy parse. There are formatting things you can do to make it better. Do them. It’s easier to fix up these errors then figure out why the generated HTML is poor.

2. Use of shared_ptr is intriguing.

There are not really a lot of existing usage patterns for std::shared_ptr in libstdc++ (in C++11 , , ). If you look at the page of boost idioms for shared_ptr usage:

http://www.boost.org/doc/libs/1_54_0/libs/smart_ptr/sp_techniques.html

One notices that there’s not a lot of use of shared_ptrs in interfaces. Yet in libabigail, that is very common. I’m curious about this style question.

And most usage is up for debate, see this stack overthow discussion about using shared_ptrs as function arguments. Should the parameters be const reference or just shared_ptr? And another.

Some interesting thinking from microsoft on shared_ptr usage.

3. Use of virtual binary operators is odd.

The old adage is that operators cause havoc in overload resolution. These are binary operators, but the stigma lingers. A vague feeling is not the same as something definite that’s a hard no. It’s more like the pirate code than a strict coding convention or hard rule. I would say that if you ever start to see strange bugs due to overloading, consider making these (non-operator) functions.

Otherwise, do it.

Conceptual Forms, Conceptual Cocktails

Le Classique, 2010

Photogravure, black ink on Somerset paper with plate mark and tone. 13 x 19″ (329 x 483mm).  Composition includes crop marks for A6 fill-in-the-blanks invitation, located at center-top of the plate.

This invitation reads:

CONCEPTUAL COCKTAIL PARTY

Yes there will be booze.

Details Marked Below.

HOURS

12   11   10   9   8   7   6   5   4   3   2   1

to

12   11   10   9   8   7   6   5   4   3   2   1

LOCATION

——————————————

On the roof ____

With projection _____

C++

San Francisco, CA

USA

Also present in the composition, are registration lines and fades. As part of the registration, centered on the text for the invitation, is the following production metadata:

PRINT THIS FOR FREE ON WHATEVER PRINTER WHEREVER YOU WANT!

Ask me how. Email printer@gnu.org and cc bkoz@gnu.org.

Underneath this in very small type there appears to be a mis-print, or type overlay. It is repeated, with some overprints, and says:

Then tell me how you did it!

—–

This is the first part of what was assumed to be a triptych composed of three etchings, all the same size. These were done half-way through the July 2010 Photogravure workshop at Crown Point Press, and etched and printed later in the summer and early autumn by Emily York. The workshop instructor was Emily York, with Asa Muir-Harmony. Attendees were Benjamin De Kosnik, Chayo de Chavez, Jay Dee Dearness, and Carolyn Dodds.

The three etchings are: Le Classique, Conceptual Cocktail, and a yet-unfinished piece that I call List Form. Plus one idea for another form, called SHOUT! All these engravings are arranged somehow on a wall, and also some kind of archival media that contains all the digital files used in the production of the plates is either attached to the back of the prints or otherwise incorporated into the display. In the summer of 2010, the archive consisted of a data DVD with outlines in Inkscape SVG files and TIFF files for photos, along with detailed system documentation for a linux print production workstation.  I did some cool drips on the DVDs with metallic ink to signify that they were ART, not DATA. That was what was attempted, at least. Now this part would probably be a folder on Dropbox and some links.

This is how I’d been looking at it for most of last year:

Le Classique, 2010

Conceptual Cocktail, 2010

List Form Plans, 2010

SHOUT! Idea, 2011

Production files for the third conceptual form, List Form, exist but have not yet been printed. This is in collaboration with Tomiyoshi Tsukada and is photogravure, guilloche, scanner-art with a three-layer silver overlay of text and fades.

There was another version of these prints conceptualized. It involved engraving a version of this with kif ink, presenting said version to John Gilmore in collaboration with Roland McGrath, and getting invited to James Turrell‘s Roden Crater. I’d like to think this version is still in development, but is admittedly a long shot.

These prints are very dear to me. But have largely defied any coherent explanation. Below is my latest attempt. Hopefully the passing of time has made it easier to explain what I was going for here.

This project is an investigation into printing forms and methodologies.

For the form experiments, I thought of printed matter, and tried to categorize them into distinct types or forms.

The first two etchings, Le Classique and Conceptual Cocktail, are examples of one of the most endearing and essential forms of printed communication, the invitation. This invitation is to an imaginary party. The third etching, List Form, is an example of another classic form of printed communication, the list. Grocery lists, to-do-lists, etc. The forth etching, SHOUT!, is an example of protest communication, the classic form for getting attention.

For the methodology experiments, I was trying to get at the essence of printed matter through the centuries, and the specialized knowledge and tools necessary to produce fine works on paper. Often, this knowledge is lost. Exact descriptions of some of the early photographic processes are lost forever. Hot type, ditched. Film pre-press, gone. Distressingly, digital files used in the production of works less than ten years old can become obsolete and rendered useless by proprietary format, abandoned products, and the inability to transfer/convert to newer production methods.

Influenced by the production methodologies of the free software movement, (started by Richard Stallman trying to freely communicate with a printer), I created a reference platform for the archiving of print production, based on the free/open source linux operating system and applicable tools, transforming proprietary curves used in the production of photogravure with free intellectual property. And a documentation system for production notes. Then, I used these files to create a reference print. The final step was to then attempt to dethrone this canonized static object, by inviting other participating printers to use these files to create this or altered works, and send me a copy, with documentation on how they got the print so that I could incorporate any new techniques.

Chayo Chavez indicated that this is a way to explain the free-software movement to art people, using their terminology. I considered this a pleasant by-product of the experiment.

As such, I expect this project to be ever-unfinished. But always worthwhile.

As Shown

Conceptual Cocktail, as above but in a swank frame, will be shown as part of “Traces, Marks, Fragments” at the San Luis Obispo Museum of Art (SLOMA) January 20th-February 26, 2012. This is a show juried by Sandow Birk.

Of Interest

Hiroshi Sugimoto, Conceptual Forms, as seen at Altalier Brancusi, Paris, 2006
Man Ray, Objet Mathematique, 1934-36
Edward Ruscha, Stains, 1971-75
Richard Stallman, The GNU Manifesto, 1985