[mattbot.euclid] now hosted at Github

December 8th, 2009 Mattbot No comments

[mattbot.euclid] is a Max external for spacing a number of ones over a range of zeros as evenly as possible using the Euclidean algorithm.

[mattbot.euclid] is now being hosted at Github: http://github.com/Mattbot/mattbot.euclid

The project includes a compiled Mac OS X Intel binary external and XCode project file.  I have yet to try to compile the euclid.c file for Windows; if you do, I’d like to know how that went for you.

Released under the MIT license.

Categories: Code Tags:

Fake From Start to Finish; Truth in Photography

October 1st, 2009 Mattbot No comments

On the first glance, Edward Steichen’s photograph Self-Portrait with Brush and Palette appears to be black and white reproduction of an oil painting portrait. Its style is recalls that of a Rembrandt; the details of background and clothing fade into a murk of darkness while across the subject’s face, hands and props, a soft chiaroscuro is at play. In the washes of light dappled across the dusky background, there is the appearance of vertical brushstrokes. The props the subject holds, a brush and palette, lend themselves to the interpretation of the image as a product of human hands. Yet the details of the ears, the hands, seem too real to for a handheld brush given the style of the preceding elements. Photo or painting? The truth lays somewhere in between.

Edward Steichen’s Self-Portrait with Brush and Palette

Edward Steichen’s Self-Portrait with Brush and Palette

Edward Steichen (born March 27, 1879 in Bivange, Luxembourg, died March 25, 1973, U.S.A) established his career as a painter in the early 20th century. Considering this background it is unsurprising that he is considered a master of the Pictorialist movement for his early photography work. Steichen would abandon this approach in the years just prior to the First World War, commenting, “Claims of art won’t do. Let the photographer make a perfect photograph. And if he happens to be a lover of perfection and a seer, the resulting photograph will be straight and beautiful – a true photograph.” He worked in fashion photography and propaganda later in his career, winning an Academy Award for Best Documentary for his 1945 war documentary, The Fighting Lady. His greatest posthumous recognition occurred in February 2006, when his 1904 Pictorialist photograph, The Pond-Moonlight, sold at action for $2.9 million USD. This early color photograph was created using hand brushed light sensitive gums. Ironically, while not a “true photograph” by Steichen’s later definition, it currently holds the record for the highest price ever paid for a photograph at an auction.
 Pictorialism is a multimedia photography that was greatly influenced by trends in painting and printing making technics of the time, employing heavy use of filters, hand tinted prints, specialized papers and other such processes made possible with the introduction of the dry-plate process. It hoped to legitimize art photography and establish itself along side the other arts by emulating them. It borrowed Impressionism’s self-consciously painterly approach to image-making, working, it would seem, in antithesis to photography’s inherit strength as a means of mechanically assisted objective image creation. It is of interest to note the objective of Pictorialism, as evidenced by the artifacts it generated, was of artistically rendered depiction rather than the personal artistic visions found later in Expressionism. One can’t help but imagine the awkward situation it’s practitioners felt themselves in and perhaps even their sense of shame in as they grappled with reconciling their value as artists in the new age of “perfect” reproduction represented by the still unassimilated technologies of photography, film and the photograph. As Steichen distanced himself from the movement he chided, “It is high time that the stupidity and sham in pictorial photography be struck a solarplexus blow.”

This uneasy relationship between artists, their tools and their social role slowly seemed settle out over the course of the 20th century and photography was incorporated into the collection of major museums worldwide. But just as the clockwork reproducibility Machine Age was brought to heel, Computer Age sprung upon us and combined perfect reproducibility with the mathmatical malleability of the binary digit. Seriously unstable positions and assumptions about the inherit objectivity of the camera eye quickly unraveled as the means of easy digital manipulation out-paced the intellectual (or at least imaginative) vigor of many of photography’s practitioners. Where did the “true photograph” go? Hopes that the “shams” committed early on by the Pictorialists would inoculate the public against the ephemeral truths of the photograph would seem to be in vain. Photo-journalism has been hit particularly hard with self-inflicted scandals of Photoshopery. John Long, current chairman of the ethics and standards committee of the National Press Photographers Association grieves, “The public is losing faith in us. Without credibility, we have nothing; we cannot survive.”

Later in his career, perhaps while producing photographs in service of vanity and governance, Steichen softened his earlier extreme æsthetic beliefs and had this to offer in regards to Photogrpahy’s truth:


“In the very beginning, when the operator controls and regulates his time of exposure, when in the dark room the developer is mixed for detail, breath, flatness or contrast, faking has been resorted to. In fact every photograph is a fake from start to finish, a purely impersonal, unmanipulated photograph being practically impossible. When all is said, it still remains entirely a matter of degree and ability.”

Jason Salavon’s Figure 1. (Every Playboy Centerfold, 1988-1997)

Jason Salavon’s Figure 1. (Every Playboy Centerfold, 1988-1997)

Jason Salavon’s Figure 1. (Every Playboy Centerfold, 1988-1997) 1998 resembles an unfinished painting by Francis Bacon. An amorphous fleshy mass dominates the top center of the work. Definition is lost toward the edges, breaking up into fractal splotches of dirty browns, cross-cut with ghost mirrored palimpsests of illegiable words, runes, glyphs. The mass gains plumpness and coherence, if not detail, moving toward the middle. The top, headlike and crowned with what could be a wreath of dirty blond hair. A Shroud of Turin for the Venus of Willendorf.

The image is the result of 120 Playboy magazine centerfolds digitally averaged one a top the other. Mathmathetical operators dutifully iterated over each “perfect” image, employing the laws of statistics to calculate the correct value of each pixel. Each appropriated image (courtesy the Digital Sample, that infamous spector/theif of the Computer Age) is free of Salvaton’s own æsthetic taint or auteurship. What could be more free of relative viewpoint? What could be more true than an abundance of photographic proof? Yet there is little doubt as to the news/credibility value a photo editor at Reuters or the AP would assign to the work. Still, one can not help but feel a depth inherit in the image; that its presence and its process reinforce each other.

Given time to adapt to the artistic and cultural developments of the 20th Century, one imagines a Pictorialist could appreciate such a work as Figure 1. (Every Playboy Centerfold, 1988-1997) as it provides the same experience of “high art” as a traditional painting. Validity issues with the tools envolved are entwined in the context of their times and the ability of culture to assimilate that technology . Time has allowed Steichen’s The Pond-Moonlight to escape its own initial context as an æstheticially crippled backward looking conceit and allowed it to simply be present as: beautiful; moving. To the practically inclined, it has captured the highest praise of the supreme authority of value in our own context: dollars on the open market. Perhaps the real problem is not the false attribution of truth to various artistic mediums, but the false attributions of truth to new technology and the myth of progress?

As Poet Steve McCaffery, wrote:

‘If the aim of philosophy is, as
Wittgenstein claims, to show the fly the
way out of the fly-bottle,then the aim of
poetry is to convince the bottle that
there is no fly’.

Bibliography

Douglas G. Severson, “Alfred Stieglitz’s Palladium Photographs and Their Treatment by Edward Steichen” Journal of the American Institute for Conservation, 1995, Volume 34, Number 1, Article 1 (pp. 1 to 10) http://aic.stanford.edu/jaic/articles/jaic34-01-001_4.html

Sherry Ricchiardi, “Distorted Picture” American Journalism Review, August/September 2007, http://www.ajr.org/Article.asp?id=4383

Hilton Kramer, “Steichen’s Sappy Photos Not Redeemed at Whitney” The New York Observer, November 19th 2000, http://www.observer.com/node/43653

Categories: Art Tags: ,

CodeKata; Practice for Programmers

September 19th, 2009 Mattbot 4 comments

The Pragmatic Programmers have set up a site called CodeKata with an interesting premiss:

“Code Kata is an attempt to bring this element of practice to software development. A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. I add a new kata every week or so. Invest some time in your craft and try them.”

I gave the first coding exercise a shot. I’ve decided to work though the kata in Ruby, my favorite language, to kick my skills up to the next level.  Or at least polish the chops I’ve got.

Here’s the specification:

Write a binary chop method that takes an integer search target and a sorted array of integers. It should return the integer index of the target in the array, or -1 if the target is not in the array. The signature will logically be:

chop(int, array_of_int) -> int

The going was a bit slower than I had hoped.  I decided to tackle it with a recursive function since recursion is still fresh on my mind from the Euclidean algorithm implementation I worked on for my [mattbot.euclid] Max/MSP external. I had the most trouble getting my head around having the results of the recursions trickle back through the layers of the recursions given the limitation of the specification.  (Never thought I’d miss C pointer manipulation…) I recently had to deal with something similar and things clicked once I made the connection.  (Maybe it was dealing with Ruby or Processing running within Max?  I forgot the situation, but remembered the technique. Eventually. :/ ) The off-by-one errors, ready sneak into the fertile ground of array mangling, never really showed up in force. I guess another thing I learned how to handle better from the Euclidean stuff.

I’m not really sure what I’m going to try for the next implementation of this exercise. My trick bag isn’t that deep. (But it’s recursive in its shallowness!) I’ll have to peek in one of my coding cookbooks to get some hints.

CodeKata, Kata Two:

Update: As Sharagoz points out in the comments, my code isn’t really doing a successful binary search. Let the code below be a warning for others! My next iterations will fix this problem. Thanks, Sharagoz!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/opt/local/bin/ruby

=begin
CodeKata: Kata Two -- Karate Chop
http://codekata.pragprog.com/2007/01/kata_two_karate.html
Implementation 1
09/19/09
=end


require 'test/unit'

def chop(int, arrayOfInts)  
  index = 0

  # Search the first half of the array.  The easy part:
  arrayOfInts[0..(arrayOfInts.length/2 - 1)].length.times do |counter|
    if(int == arrayOfInts[counter])
      return index
    end
    index = index + 1
  end

  # Check to see if we are at the end of the array:
  if(arrayOfInts.length > 1)
    # recursively load the second half of the array into this function and store the result:
    recursiveResult = chop(int, arrayOfInts[(arrayOfInts.length/2)..(arrayOfInts.length)])
   
    # If the result of the recursion is -1 then the search has finished with no match. Otherwise, add results to index tally:
    if(recursiveResult != -1)
      index = index + recursiveResult
    else
      index = -1
      return index
    end
 
  # We are at the end of the array now:
  else
   
    # Check the last element for a match:
    if(int == arrayOfInts[arrayOfInts.length])
      return index
    else
      # No match and search over:
      index = -1
      return index
    end
   
  end
end

class MyTest < Test::Unit::TestCase
  def test_chop
    assert_equal(-1, chop(3, []))
    assert_equal(-1, chop(3, [1]))
    assert_equal(0,  chop(1, [1]))
    #
    assert_equal(0,  chop(1, [1, 3, 5]))
    assert_equal(1,  chop(3, [1, 3, 5]))
    assert_equal(2,  chop(5, [1, 3, 5]))
    assert_equal(-1, chop(0, [1, 3, 5]))
    assert_equal(-1, chop(2, [1, 3, 5]))
    assert_equal(-1, chop(4, [1, 3, 5]))
    assert_equal(-1, chop(6, [1, 3, 5]))
    #
    assert_equal(0,  chop(1, [1, 3, 5, 7]))
    assert_equal(1,  chop(3, [1, 3, 5, 7]))
    assert_equal(2,  chop(5, [1, 3, 5, 7]))
    assert_equal(3,  chop(7, [1, 3, 5, 7]))
    assert_equal(-1, chop(0, [1, 3, 5, 7]))
    assert_equal(-1, chop(2, [1, 3, 5, 7]))
    assert_equal(-1, chop(4, [1, 3, 5, 7]))
    assert_equal(-1, chop(6, [1, 3, 5, 7]))
    assert_equal(-1, chop(8, [1, 3, 5, 7]))
  end
end
Categories: Code Tags: ,

VJing In Los Angeles on Saturday July 25th, 2009 for Architects and Heroes

July 20th, 2009 Mattbot No comments

“Saturday July 25th, Architects and Heroes presents a night of mind-blowing sound. This is our first jump-off in LA, and we’re pulling out all of the stops. This one-off, after-hours event will be at the Silver Echo Gallery, and will host some of the most amazing musicians and DJs in the game. There will be a beer & wine bar, video art and other surprises.

The line-up will be as follows:

MOCHIPET (Live)

[a]pendics.shuffle (Live)

Boom Bip

Oro11 (Bersa Discos)

SODAPOP (Anticon)

DJ STEPHEN R.

NEW BERLIN (Teleport Door)

Categories: Event, Music, VJ Tags: ,

Presenting [mattbot.euclid] Max external at BArCMut/Overlap on July 22, 2009

July 20th, 2009 Mattbot No comments

I will present and demo [mattbot.euclid], my Euclidian sequence generator Max external at a joint session of the Bay Area Computer Music Technology Group (BArCMuT) and the Overlap.org Max/MSP/Jitter/Live Salon on Wednesday, July 22, 2009 in San Francisco.

The Max/MSP/Jitter external [mattbot.euclid] is a sequence generator that spaces a given number of hits across a given number of beats as evenly as possible. As the name suggests, it uses the Euclidean algorithm to space the hits as a side product of finding the lowest common denominator of the hits and beats.

These sequences are useful for generating drum patterns on the fly or controlling any other device or process which can be controlled with a binary ON/OFF command.

Categories: Code, Event Tags: ,