Artistic Research Platform Notes

Software configuration for commodity x86/86_64 linux art research platform.

Prerequisites

Assume Fedora 27.

Database Setup 1: server mysql

Both the wiki and wordpress require a database. So, pick the MySQL database, which is packaged as mariadb on Fedora.

dnf install -y mariadb-server php-mysqlnd phpMyAdmin

And enable and start it via

systemctl enable mariadb.service
systemctl start mariadb.service

Set the root password on the database

sudo mysqladmin -u root password

To use the web-ui to administer, go to

http://localhost/phpmyadmin/

Database Setup 2: per-user postgressql

For non-platform use, aka for individual users, pick the glom front-end for the postgres database. Some platform notes are here.

dnf install -y postgresql postgresql-server postgresql-libs postgresql-contrib phpPgAdmin

Initialize the database

postgresql-setup --initdb --unit postgresql

Then enable and start

systemctl enable postgresql
systemctl start postgresql

To use the web-ui to administer, go to

http://localhost/phppgadmin/

LOL, of course it is not that simple.

http://localhost:8080/phppgadmin

There is a graphical database called glom that is similar to FileMakerPro on the mac and Access on windows.

dnf install -y glom

Webserver Setup

Assume physical access to the server hardware, that there is a default install of the operating system, that the network is up, and that the static IP address of the server is 192.168.1.52. For any of the commands below, assume the root user or use of sudo.

Use the Apache httpd package. See the section of the Fedora System Administration Guide on Web Servers for background, and a quick install notes at Fedora magazine. After, read the getting started notes.

dnf install -y httpd mod_ssl

Then configure the webserver to start at boot via

systemctl enable httpd.service

And punch holes through the firewall to allow incoming traffic on port 80 and 443

 firewall-cmd --permanent --add-service=http --add-service=https 

Then, a bit of fun to enable the webserver for other computers, aka enabling access to web applications in Fedora-speak. The authorization file is /etc/httpd/conf.d/webapp.conf, so add a new config file that loads after this to broaden access. Say, /etc/httpd/conf.d/z-webapp-allow.conf with the following


    
        # Apache 2.4
        Require all granted
    
    
        # Apache 2.2
        Order Deny,Allow
        Allow from all
    

At this point, using either of the chrome or firefox browsers on the server’s desktop should show a default webserver welcome page when

http://localhost

is entered into the search bar. To check that the webserver is working for other computers, try to view it on another computer. For instance, try

http://192.168.1.52

on both computers. The generated page should look the same. If so, congratulations, the first of part of setup is completed.

Additional SELinux efforts:

setsebool -P httpd_graceful_shutdown 1;
setsebool -P httpd_can_network_connect 1;

Configure the webserver to allow mod_rewrite so that wordpress can make more legible permalinks.
Find the part of the main configuration file (as below) and change the directory block to have AllowOverride All.

To check the configuration of the webserver, post-hacking, use

apachectl configtest

Main configuration file is: /etc/httpd/conf/httpd.conf
Configuration file for the first page is: /etc/httpd/conf.d/welcome.conf
Apache site files are found: /var/www/html/

CMS Setup

Use wordpress packages.

dnf install -y wordpress wordpress-plugin-bad-behavior wordpress-plugin-defaults python3-wordpress-xmlrpc

Configure as per these Fedora-specific notes. Also, read these Centos-7 notes.

Recommended, but not essential packages:

dnf install -y php-pecl-imagick php-pecl-ssh2 php-opcache php-pecl-zendopcache php-pecl-apc

To import a pre-existing site, install the import plugin. See the importing content part of the wordpress codex.

For sites that have export files over the default 2M, a bit of tweaking is necessary to import the export file (WXR) in its entirety. First, find out where the active php.ini file is:

php -i | grep "Loaded Configuration File"
Loaded Configuration File => /etc/php.ini

So, edit this file to change the value of upload_max_filesize to 64M like so:

24c824
 upload_max_filesize = 64M

Configuration file for webserver-wordpress is: /etc/httpd/conf.d/wordpress.conf
Configuration file for wordpress is: /etc/wordpress/wp-config.php
Wordpress site files are:/usr/share/wordpress

Wiki Setup

Use mediawiki packages.

dnf install -y mediawiki mediawiki-wikicalendar php-pecl-apcu php-pecl-apcu-bc

Notes for the platform are here, and the file /usr/share/doc/mediawiki/README.RPM.

Use /var/www/mediawiki/parse as the installation directory.

mkdir /var/www/mediawiki/parse
mw-createinstance /var/www/mediawiki/parse
chown -R apache:apache /var/www/mediawiki/parse
chcon -R system_u:object_r:httpd_sys_content_t:s0 /var/www/mediawiki/parse

and then edit the /etc/httpd/conf.d/mediawiki.conf file as

DocumentRoot /var/www/mediawiki/parse
Alias /skins /usr/share/mediawiki/skins

Next, configure the wiki database, called parse_wiki_db.

mysqladmin create parse_wiki_db -u root -p

Make a system database user parsewiki, give it access to the wiki’s database.

sudo mysql -D mysql -u root -p;

GRANT ALL PRIVILEGES ON parse_wiki_db.* TO 'parsewiki'@'localhost' IDENTIFIED BY 'yer-password-here';

FLUSH PRIVILEGES;

QUIT;

This should be enough setup to start the web-based wiki installation. Go to

http://localhost

And finish the setup. Some of the remaining configuration: wiki administrator user name and password, license terms for the wiki content, open or private wiki access, etc.

Skin and theme the wiki.

Etherpad Setup

Etherpad is a collaborating system for writing. Some required packages: Node.js

dnf install -y nodejs

Next, create a system-level user to checkout the etherpad sources and run the etherpad application. For this, use parseepad. After this is done, clone the repository.

cd /var/www;
git clone https://github.com/ether/etherpad-lite.git;

This will checkout sources in the following directory, which doubles as the installation location for this package: /var/www/etherpad-lite

To start up the etherpads, run

/var/www/etherpad-lite/bin/run.sh

And then open the following in a browser, to bring up the etherpad main page:

http://localhost:9100

Close the terminal or otherwise exit the etherpad process to continue installation.

Next, conversion to mysql database. Configure the etherpad database, called parse_pad_db.

mysqladmin create parse_pad_db -u root -p

Make a system database user parsepad, give it access to the etherpads’s database.

sudo mysql -D mysql -u root -p;

GRANT ALL PRIVILEGES ON parse_pad_db.* TO 'parsepad'@'localhost' IDENTIFIED BY 'yer-password-here';

FLUSH PRIVILEGES;

QUIT;

Next, edit /var/www/etherpad-lite/settings.json to tie in the database above:

  /* An Example of MySQL Configuration   */
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "parsepad",
                    "host"    : "localhost",
                    "password": "your-password-here",
                    "database": "parse_pad_db",
                    "charset" : "utf8mb4"
                  },

Next, go to the admin page and install some plugins:

http://0.0.0.0:9001/admin/plugins

Add the following

adminpads, bookmark, small_list, themes, font_color, font_family, font_size, print, copy_paste_images, sketchspace

Finally, restart the etherpad application and start making pads!

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