Bitstrings

A “bit” is a basic unit of information entropy. It’s binary, either on or off, present or absent, one or zero.

A “string” in computer programming is a sequence of items of a particular length. They may be fixed or variable length. Eight, sixteen, thirty-two and sixty-four bit numbers are fixed length. A text string is variable length.

A byte is a series of eight bits that’s used as a standard representation for typographic characters, colour values and many other things. Up until IBM’s OS/360 project in the late 1960s there was no real standard for this – computers might be decimal, or alphabetic, or have “words” of sizes from four to twenty-four bits. Some Soviet computers of the same period used ternary logic rather than binary. Alan Turing used a logarithmic measure of information entropy called a “ban“. So be wary of naturalising the bit and the eight-bit byte, but when you see bits grouped together in strings of lengths that divide neatly into eight, recognise that this is related to the reality of how most modern computer sytems divide up their memory.)

Bitstrings can be used to represent the presence or absence of properties. A fixed-length bitstring is a bitfield, but we’re going to stick with the more general name. Integer numbers represented in binary use bits to represent the presence or absence of quantities of increasing sizes within the number. 0110 is six in a four bit “nibble”. UNIX filesystems represent the permissions that the owner and other users of a file have to access and manipulate it as a sequence of bits.

Such bitfields can be found throughout computing. The satirical proposal for an “evil bit” to be set on Internet messages that have evil intent, shows both the prevalence of bitstrings and their users awareness of the limitations of binary thinking and computational representation.

As with their use to represent integer numbers using binary, bits can represent doubling or halving of quantities. It takes 33 bits of entropy to uniquely identify an individual among seven billion on Earth. Cryptographic hashes, which produce compact unique “names” for any input file of any length, often output 128, 160 or 256 bit values. Each bit doubles the possible size, quantity, or uniqueness of the thing it represents. It also doubles the size of the space in which it can hide.

Contemporary cryptographic encoding and signing systems use keys several thousand bits in length. They would take a conventional computer an infeasable amount of time to break. This property is used in Bitcoin mining to create cryptographic puzzles that require capital outlay to solve.

A proposal for “vectored signatures” for the “V” version control system uses features of these different strings of bits. It represents assertions about an individual’s relationship to and opinion of a piece of code using a bitstring. It asserts the identity of that individual using cryptographic signatures. This combination is a generalization of cryptographic “keysigning” as recognition of identity, and the fact that Bitcoin transactions involve cryptographic signatures of communications between individuals about single-dimensional (monetary) quantities.

The bitstring representation of logical operators developed by the Logical Geometry project provides a compact and information-rich notation for various logics. Each bit represents a fact about an operator such as “true in all possible worlds”, and relates to geometric and trellis representations of the same operators. Bitwise operations on these representations are meaningful – for example bitwise NOT on p (1100) gives ¬p (0011).

The combination of logically manipulable bitstring representations (as with Logical Geometry) asserted through cryptographic signatures (as with vectored signatures) seems like a possibly fruitful area of investigation.

Posted in Crypto, Philosophy, Uncategorized

Geneses

Geneses

A poem consisting of the genesis block hashes from the hundred cryptocurrencies with the highest market capitalization on January the Second, 2016 encoded as BIP-0039 mnemonics.

It begins:

abandon abandon abandon ability output crowd ice area thumb clown sibling charge youth range ribbon stairs plug argue provide toddler gaze edit meadow update

Details on how to order the book can be found here:

http://robmyers.org/geneses/

Posted in Art, Crypto, Generative Art, Projects

Simple Blockchain Art Diagram

Simple Blockchain Art Diagram

Simple Blockchain Art Diagram, 2016, digital media. After MTAA ca. 1997.

Very obviously adapted from MTAA’s “Simple Net Art Diagram“.

Proofs of existence stored in Bitcoin block 422422 and 422423.

More details on the project page.

Posted in Art, Crypto, Projects

Using The Palette

palette-chooser

The “Democratic Palette” contract provides 12 colours to use. What happens if griefers set the palette to 12 colours that are almost exactly the same? What happens if you need colours with more or less contrast or hue difference? What if you need more or fewer colours? The only guarantee about them is that they will all be different by at least one point.

To fetch the current palette:

var withPalette = function (callback) {
  var democratic_palette = Democratic_palette.deployed();
  var requests = [];
  for (var i = 0; i < 12; i++) { requests.push(democratic_palette.palette(i) .then(function(colour) { return {index: i, colour: colour}; }); } Promise.all(requests).then(colours => {
      var palette = [];
      colours.foreach(function(colour) {
        palette[colour.index] = colour.colour;
      });
      callback(palette);
    });
  }
};

We can then get from one to twelve colours simply by truncating the array, e.g.:

var my_3_colours = palette.slice(0, 3);

Or we can get the bluest colour using a simple comparison:

var bluest_colour = palette.sort(function(a, b){
  return a.blue - b.blue;
})[0];

Or we can take the average of the colours, which will probably represent the triumph of statistics over aesthetics.

More complex orderings and comparisons can be achieved using a colour library that allows us to work in HSV space. In particular we can use a version of the algorithm that Harold Cohen used for one version of his program AARON’s colouring system (see figure 15 here), effectively ordering the colours in the palette by brightness then distributing them evenly across a brightness range sufficient to ensure that each is distinct from its neighbours.

What about more colours, or more structured relationships between colours where we are concerned that those relationships may not be present in the colours voted for within the palette? In the first case we can interpolate between existing colours, producing colours in-between those in the palette. Or in both cases we can use colour theory to produce related colours: complements, split-complements, tints and tones, etc. There are libraries to do this in Javascript, for example color-scheme-js will produce entire colour schemes from individual colours.

“Democratic Palette” is intended to provide the equivalent of an aesthetic or colour symbology backed by Blockchain democracy rather than any other ideology or iconography, so it is intended to be easy and significant to us it as-is. But it’s also possible to maintain a direct relationship to the palette while using colours that are not themselves present within it.

Posted in Aesthetics, Ethereum, Projects

Democratic Palette

palette-spots

Democratic Palette, 2016, Ethereum Contract and HTML/JavaScript/CSS.

A palette of twelve colours that anyone can set on the Ethereum blockchain. Every vote for every colour is tracked and the top twelve make up the palette.

palette-vote

palette-representations

palette-squares

palette-stripes

The images above show various different visual applications of the palette and the use of the GUI to vote for a colour (the GUI appears if you click in the window displaying the canvas).

Note that the above images are from test runs. The current palette on the live Ethereum blockchain looks like this, ready for people to vote on:

live-palette

You can download the interface code here, it’s in the dapps/democratic-palette directory.

To use it you’ll need an Ethereum node running locally, and to vote for colours you’ll need some Ether.

Posted in Aesthetics, Art, Crypto, Ethereum, Projects

Blank Canvas

Blank Canvas 1

Blank Canvas 2

Blank Canvas 3

Blank Canvas 4

Blank Canvas, 2016, Ethereum Contract and HTML/JavaScript/CSS.

A blank canvas that anyone can set the colour of on the Ethereum blockchain.

The images above show use of the GUI to change the colour (the GUI appears if you click in the window displaying the canvas).

You can download the interface code here, it’s in the dapps/blank-canvas directory.

To use it you’ll need an Ethereum node running locally, and to change the colour you’ll need some Ether.

Posted in Art, Ethereum, Projects

Oculus Rift CV1 Support in OpenHMD

Bad Camera Image of Rift CV1

OpenHMD has added support for the Oculus Rift Consumer version 1 (CV1) in the dev-oculus-cv1 branch.

It tracks the headset and turns the video and sound on. Above is a blurry image taken on my phone showing openglexample running on-screen and in the rift display.

I’ve found a few minor issues:

  • You’ll need a strong enough graphics card to power the CV1. An X200 laptop’s built-in graphics won’t cut it.
  • openglexample crashed the Gnome window manager on my under-powered laptop. Other window managers were fine.
  • The rendering in opengexample is intended for the DK1 so it isn’t quite right for the CV1, the resulting viewpoints are slightly too far apart.

But, as I say, these are minor issues. The Rift CV1 works on GNU/Linux! Next to find a good (Web)GL example of rendering for the CV1.

(A big thank you to Oculus for sending Kickstarter backers a CV1! o_O )

Posted in Virtual Reality

nom

 

$ ./nom --help
Usage: nom [OPTIONS]
       Defaults to using 32 bytes of entropy.
  -rep string
    	hash representation - hex, base58, bip39 or proquint (default "hex")
  -seed string
    	read the bytes to hash as the parameter of this argument
  -stdin
    	read the bytes to hash from stdin rather than as an argument
$ ./nom --rep hex
331151629ed17389c079aa3ecdd9828d52cde9c8411b4fd591f7a18dcda6be2a
$ ./nom --rep base58
anAa9gRLWMn3BhLSb2TQNfEoVBhLBbZnDeGnMhqnthkj
$ ./nom --rep proquint
pisil-tufag-zanir-didin-ruzaz-rutop-kakip-zatir-vutig-gavaf-nuzuf-sibuh-zilur-sakim-mimut-soziz
$ ./nom --rep bip39
sheriff core resemble talent service sword warfare offer boil vibrant uncover leisure circle pupil cattle prize cherry joke social daring media nurse primary chuckle

nom is a command line tool to generate names (identifiers).

It’s written in go. You can grab the source here:

https://gitlab.com/robmyers/nom

Posted in Crypto, Projects

Left Universal Basic Income

The Universal Basic Income proposed by the Left is different from that proposed by the Right. Rather than replacing the welfare state it is a supplement to it.

As Srnicek & Williams note in “Inventing The Future”, 2015 (p.297):

The conservative argument for a basic income – which must be avoided at all costs – is that it should simply replace the welfare state by providing a lump sum of money to every individual. In this scenario, the UBI would just become a vector of increased marketisation, transforming social services into private markets. Rather than being some aberration of neoliberalism, it would simply extend its essential gesture by creating new markets. By contrast, the demand made here is for UBI as a supplement to a revived welfare state.

In the footnote to this, they quote Alyssa Battistoni, “Alive in the Sunshine”, Jacobin 13, 2014 (p.4):

A UBI programme would ideally involve a transformation of the welfare state. Programmes that provide services must be kept and expanded – for example, healthcare, childcare, housing, public transport and internet access. All of these should be immediate goals of the left, not only for their inherent good but also because expanding public services is necessary for reducing overall energy consumption.

And in response to the question of why the rich should be given money as well as the poor, they respond (p.296):

As there would be no means-testing or other measures required to receive the UBI, it would break free of the disciplinary nature of welfare capitalism.

It is perfectly possible to disagree with any or all of this. That does however first require acknowledging it. And there’s a lot more where this came from…

Posted in Accelerationism, Politics

Problems to be Isolated, Described and Discussed

A & L developed slowly and untidily around a consensus that there were historical and objective problems which could be isolated and described, and thus discussed. This is what distinguished and distinguishes A & L from other artists or artistic formations. A & L saw these problems as matters to be articulated by work, rather than as professional aspects of their social lives to be adopted only once they had left the studio. Conversation, discussion, and conceptualisation became their primary practice, as art.

– p22, “A Provisional History of Art & Language”, Charles Harrison & Fred Orton.

Posted in Art, Art History, Notebook