“Hot Cold” on Homestead

cold-hot-live

Here’s “Hot Cold” live on the Ethereum “Homestead” network.

“Hot Cold” calls back to Art & Language’s 1960s Conceptual Art involving abstract aesthetic properties. It looks (and is implemented to be) twice as complex as “Is Art“, but it’s still really only one bit of information.

You can run the user interface locally in a web browser with an Ethereum node such as geth. Once geth is running, the user interface can get the contract’s state from the blochchain and, if you have Ether for gas, modify it. If someone else changes the contract’s state, you’ll see this updated.

If you want to change the contract’s status without using the user interface, you can do so using the contract’s address and ABI in EtherWallet.

The address:

0x53cd5d6bebff1eef892c191875e4d963875f50d7

The ABI:

[{"constant":true,"inputs":[],"name":"cold","outputs":[{"name":"","type
":"bytes4"}],"type":"function"},{"constant":false,"inputs":[],"name":"swap","out
puts":[],"type":"function"},{"constant":true,"inputs":[],"name":"hot","outputs":
[{"name":"","type":"bytes4"}],"type":"function"},{"inputs":[],"type":"constructo
r"},{"anonymous":false,"inputs":[{"indexed":false,"name":"hot","type":"bytes4"},
{"indexed":false,"name":"cold","type":"bytes4"}],"name":"Swap","type":"event"}]
Posted in Art, Crypto, Ethereum, Projects, Uncategorized

Art And The Blockchain

25603537893_3632ea1603_o

26206206275_2ae5c5a806_o

Facecoin is at the “Art and the Blockchain” show at Digital Catapult.

Here’s Ruth Catlows’ article about it –

https://www.digitalcatapultcentre.org.uk/art-and-the-blockchain/

Posted in Crypto, Projects, Shows

“Is Art” On Homestead

is1

Ethereum has been live for several months now and has progressed to the point where the network has been declared stable.

So I’m deploying my contract artworks to the Ethereum blockchain. First up is “Is Art“.

“Is Art” is an Ethereum contract that can be instructed to nominate itself as art (or not). Whoever toggles the contract’s state as art sets it unimpeded until the next person sends a transaction to change it. A more rational system should be used – bidding, voting, a prediction market. The Duchampian aesthetic transubstantiation of artistic nomination is long played out. It is an art historical found object, as basic as a contract with a single bit of state. Brough together, the art historical and the contemporarily technological (or their audiences) can mutually animate and interrogate each other.

You can run the user interface locally in a web browser with an Ethereum node such as geth. Once geth is running, the user interface can get the contract’s state from the blochchain and, if you have Ether for gas, modify it. If someone else changes the contract’s state, you’ll see this updated.

If you want to change the contract’s status without using the user interface, you can do so using the contract’s address and ABI in EtherWallet.

The address:

0xa95301a50551dfe16e180dec3fe0044e94d36f8c

The ABI:

[{"constant":true,"inputs":[],"name":"is_art","outputs":[{"name":"","ty
pe":"bytes6"}],"type":"function"},{"constant":false,"inputs":[],"name":"toggle",
"outputs":[],"type":"function"},{"inputs":[],"type":"constructor"},{"anonymous":
false,"inputs":[{"indexed":false,"name":"is_art","type":"bytes6"}],"name":"Statu
s","type":"event"}]

For instructions on how to do this, see the “Contracts” pane in EtherWallet.

Posted in Art, Crypto, Ethereum, Projects, Uncategorized

Causal Horns

Gabriel's Horn
3D illustration of Gabriel’s horn by RokerHRO – Public Domain.

Causal horns are the equivalent of light cones for the potential effect of an event on other events over time – promoting or inhibiting the probability of particular range of events.

They’re horns because they’re twistier than generalized cones (although they compose similarly toDavid Marr’s use of them). Anything from a simple cone via hooks and bulbs to corkscrews and nautilus shells.

A causal horn fits within slices of the light cones of a succession of information transmissions. It’s more information rich, slower, and multidirectional in comparison.

Posted in Philosophy

Rationally Irrational Aesthetics

By Headlessplatter at English Wikipedia - Transferred from en.wikipedia to Commons by Shashenka using CommonsHelper., Public Domain, https://commons.wikimedia.org/w/index.php?curid=19346512
Local Maximum by Headsplatter, Public Domain.

Rational aesthetics are an infinite improvement on vapid, asset-class aesthetics but (and this is identifying an opportunity, not an objection) Gödel. If we cast art’s reason as AI-style search (not to fundamentally describe it as such, but to make a hopefully useful comparison) then we encounter the problem of “local maxima“. This is where a direct search of a problem space finds only the closest highest value, not the globally highest one.

In human creativity we can rationally use irrationality to break free of local maxima. Whether creativity theory,surrealist techniques, or pure randomness. Beyond the details of any one technique, what is important is that to get further, we sometimes need to use irrationality (or arationality) for rational ends.

Mythology can be such a source of transformations (in the mathematical sense – we’re talking about search spaces here). Freed of the affective and significatory limits of fact, mythology can lead us to places and to lengths that we might not otherwise reach. This includes science fiction.

In guiding and constructing  new possibilities (or at least finally addressing old problems) through aesthetics, mythology becomes hyperstition (in a general rather than numogram-centred sense). Where we (for a social media value of “we”) believe it is not possible or practical to change anything (for the better), it is rational to construct hyperstitional entities to treat the local maxima of ideology as damage and route around them.

This is haunted by the Big Lie and The Republic, but we do not need to deceive or believe for non- (and a-) existent entities to be historical causes. Just ask Cthulhu. Or Katak. Hyperstitional engineering is accelerationist aesthetics, artistic reason, because of its irrational content not despite it.

Posted in Aesthetics, Hyperstition, Politics

Urinal At Cabaret Voltaire

dada-3d-drucke-live

(Image via http://www.3d-model.ch/3d-druck-dada/ )

Cabaret Voltaire hosted an event to celebrate the centenary of Dada led by McKenzie Wark.

It featuring 3D printing including the Urinal:

http://www.makery.info/en/2016/02/05/hacktion-dada-data/

Afterwards a print of the Urinal showed up in the gift shop:

https://www.facebook.com/photo.php?fbid=10207412269439235

Posted in 3D Printing, Art, Free Culture, Projects, Shows

Seeking

seeking

This took a ridiculous amount of time to hack together, but here’s a Common Lisp function to decide the shortest angle between two other angles. It’s used in the example of seeking a point above. I can now add noise to this to make a more AARON-style pen.

(defun shortest-angle-difference (a1 a2)
  "Find the shortest positive or negative distance between two angles."
  ;; This was slowly assembled from various online sources, none of which worked
  ;; Normalize angles to 0..2pi
  (let ((from (mod a1 +radian+))
        (to (mod a2 +radian+)))
      ;; If from and to are equal (0 = 2pi radians) the angle is zero
      (if (or (= from to)
              (= (+ from to) +radian+))
          0.0d0
          (let ((angle (- to from)))
            (if (> (abs angle) pi)
                ;; Please simplify me
                (* (- (signum angle)) (- +radian+ (abs angle)))
                angle)))))
Posted in Art Computing, Generative Art, Projects

draw-something 2016

draw-something drawing February 2016

I’ve updated the Common Lisp version of draw-something to use modern technologies – Roswell, QuickLisp, ASDF 3, cl-cffi-gtk and the Plan testing library. The tests helped flush out bugs, changing my mis-uses of defmethod to defun silenced a lot of compiler warnings and that in turn helped find some more bugs. There’s now a bit of technical debt in the form of function and class names, I’ll address that later. Like the recent minara update, this is a bitrot update rather than a new feature release.

Running the code to test it reminded me of just how dissatisfied I was with the last version of draw-something. The image at the top of this post is one of the less bad results of running the code. This is an aesthetic / theoretic problem rather than a coding one. I need the same clarity that informed the earlier versions of the program (you can see a JavaScript version of one running on tumblr) in order to structure the code to output something you’d actually want to look at.

Posted in Art Computing, Generative Art, Projects

Artworld Ethereum with Truffle & Meteor

Is Art

I’ve started moving my Ethereum projects to Truffle (Pudding) and Meteor, getting ready to deploy them to the live network.

https://gitlab.com/robmyers/artworld-ethereum

Posted in Art, Crypto, Projects

Ethereum: Truffle + Meteor

Meteor is the recommended development framework for Ethereum dApps. Truffle is Consensys’ development  system for Ethereum dApps. We cannot currently add a Meteor build phase to Truffle, but we can integrate them easily enough with a script.

Install Meteor, Truffle and testrpc:

curl https://install.meteor.com/ | sh
sudo npm install -g truffle
sudo npm install -g ethereumjs-testrpc

Then create a file called truffle-meteor-build, in ~/bin or somewhere else easily accessible and paste the following into it:

#!/bin/bash

# By Rob Myers <[email protected]>
# CC0 2016
# To the extent possible under law, the person who associated CC0 with this
# work has waived all copyright and related or neighboring rights to this work.

# We copy the .meteor/ dir from app/ into the specified environment's build/ dir
# then call meteor-build-client in there, building into a meteor/ directory
# next to build/ .

if [ "${1}" = "-h" ] || [ "${1}" = "--help" ]
then
    echo "Usage: truffle-meteor-build [environment]"
    echo "       Copies the .meteor directory from app into the truffle build,"
    echo "       then calls meteor-build-client."
    echo "ARGS:  [environment] - The truffle environment to use (default developmpment)."
    echo "       Make sure you have npm install -g meteor-build-client"
    echo "       and meteor init in the truffle app/ directory."
fi

environment="${1:-development}"
base_dir="$(pwd)"

if [ ! -f "${base_dir}/truffle.json" ]
then
    echo "Please call from within the top level of a Truffle project."
    exit 1
fi

app_dir="${base_dir}/app"
dot_metoer_dir="${app_dir}/.meteor"
environment_dir="${base_dir}/environments/${environment}"
truffle_build_dir="${environment_dir}/build"
meteor_build_dir="${environment_dir}/meteor"

if [ ! -d "${environment_dir}" ]
then
    echo "Cannot find directory for environment ${environment}."
    exit 1
fi

pushd "${base_dir}" > /dev/null
echo "Truffle: building ${environment} in ${truffle_build_dir}"
truffle build "${environment}"
cp -r "${app_dir}/.meteor" "${truffle_build_dir}"
pushd "${truffle_build_dir}" > /dev/null
echo "Meteor: building client in ${meteor_build_dir}"
meteor-build-client "${meteor_build_dir}" -p ''
popd > /dev/null
popd > /dev/null

And make it executable:

chmod +x truffle-meteor build

In one shell window start testrpc:

testrpc

In another shell window create the Truffle/Meteor project:

mkdir truffle-meteor
truffle init
cd truffle-meteor
cd app
rm -rf *
meteor create .
meteor add ethereum:elements

This will create files called app.html, app.js, and app.css . You can rename them to whatever you like. Open truffle-meteor/truffle.json in a text editor and make sure the filenames match those in app/, that the Javascript file has the requisite post-processing commands to add Truffle and the Contract code and that there are no post-process commands for the HTML files.

The results should look similar to this:

{
  "build": {
    "is-art.html": {
      "files": [
        "is-art.html"
      ],
      "post-process": []
    },
    "is-art.js": {
      "files": [
      "is-art.js"
      ],
      "post-process": [
        "bootstrap",
        "frontend-dependencies"
      ]
    },
    "app.css": [
      "is-art.css"
    ],
    "images/": "images/"
  },
  "deploy": [
    "IsArt"
  ],
  "rpc": {
    "host": "localhost",
    "port": 8545
  }
}

Edit the contract, HTML, CSS and JavaScript as needed.

Deploy the contract:

truffle deploy

Then build the meteor project:

truffle-meteor-build

You can now open the Meteor client in a web browser:

chromium environments/development/meteor/index.html

As you continue to develop the project you can reload the Meteor client in the web browser to see your changes. Make sure you keep testrpc running – if you stop and restart it you’ll need to deploy the contracts again.

Posted in Ethereum, Projects, Uncategorized

In Archive