Archive for the 'Edacious Eye' Category

Dali in Legos

July 17, 2008

Looking intense and featured elsewhere, the Salvador Dali in Legos is something to see. Such rectangular plastic brickness glaring in the California sun. In contrast to the flowing melting semi-corporeal forms in his paintings.

Helen of California

May 31, 2008

Haig Patigian‘s 1927 sculpture Helen of California or the head of Helen Wills.

Garage Tetris

May 26, 2008

Garage Tetris


to rearrange boxes, bags and piles of stuff in the garage (or closet or shipping crate or car trunk, etc) with the intention of fitting in yet more stuff; “My bonus for playing some challenging garage tetris this weekend was finding the small plastic see no evil, hear no evil, speak no evil plastic monkeys that I had misplaced.”

Google App Engine: Adding JavaScript and Images

May 15, 2008

Bold lentil now has a dynamic graphical jump page.

It’s here.

Yes it’s hosted on app engine and yes it uses JavaScript. I was at a talk the other day by Dick Wall and there was speculation about what language might be supported after python. I think the question is what languages will be supported after python and JavaScript.

So assuming you have a useful JavaScript function in a thumbs.js file and it starts with an array of urls:

  function stepThumbnails(theSign) {
    var theURLs = new Array();
    theURLs[0] = "";
    theURLs[1] = "";
    theURLs[2] = "";
    theURLs[3] = "";
    theURLs[4] = "";
    theURLs[5] = "";
    theURLs[6] = "";
    theURLs[92] = "";
    theURLs[93] = "";
    theURLs[94] = "";
    theURLs[95] = "";
    theURLs[96] = "";

Then add some code to define the width, height and size of the jump pages (in terms of number of thumbnail images). And then add some calculations for a starting and ending value for the specific array of thumbnails.

    var max = 96;
    var wide = 4;
    var high = 4;
    var theStep = (wide * high);
    var myStep = (theStep * theSign);
    if (theSign == 0) {
      var one = 1;
      var two = 1;
      var tre = theStep;
    else {
      var one = parseInt(document.f1.theStartValue.value);
      var two = one + myStep;
      if (two < 1) two = 1;
      if (two > max) {
        two = one;
      document.f1.theStartValue.value = two;
      var tre = two + myStep - 1;
      if (myStep < 0) tre = two - myStep - 1;

Finally some more JavaScript to loop over the range to create a table of image thumbnails. Nothing fancy here.

    theText = '<p>';
    var theTable = '<table>';
    var twoPlus = two;
    for (i = 0; i < high; i++) {
      theTable += '<tr>';
      for (j = 0; j < wide; j++) {
        twoPlus = two + (i * wide) + j;
        if (twoPlus <= max) {
          theTable += '<td><a href=';
          theTable += theURLs[twoPlus];
          theTable += '><img src="/images/thumbnails/thumbnail-'+twoPlus+'.gif" border=0></a></td>\n';
        else {
          thetable += '<td></td>\n';
      theTable += '</tr>';
    theTable += '</table>';
    document.getElementById('theCurrentThumbnails').innerHTML = theText + theTable;
    document.f1.theStartValue.value = two;

Then save this file in a directory /static/js in the same directory as the root python code. Now I’m sure all this can be done more succinctly in python but if you already have some JavaScript handy why not use it?

The next step is to set up the images file. In this case I used /static/images/thumbnails. The thumbnails were created using a script file to be square and 128 by 128. Some experimentation seemed to lead me to believe that the /static for both the js and images was required. Anyways with the JavaScript code above in the /static/js directory and the GIF thumbnails in the /static/images/thumbnails directory it’s time to edit the app.yaml file to look something like:

application: 1boldlentil
version: 6
runtime: python
api_version: 1

- url: /

- url: /js
  static_dir: static/js

- url: /images/thumbnails
  static_dir: static/images/thumbnails

- url: /.*

The two new handlers are for the JavaScript and for the images. Pretty easy once you know to add both of these to a /static directory and also know not to reference this /static in the code. Finally, the file has to be edited to add a /jump page. This is pretty straightforward:

class jumpPage(webapp.RequestHandler):
  def get(self):
    self.response.headers['Content-Type'] = 'text/html'
    self.response.out.write('<script language="JavaScript" src="/js/thumbs.js">');
    self.response.out.write('<body onLoad="stepThumbnails(0)">');
    self.response.out.write('<form name="f1">');
    self.response.out.write('  <input type="hidden" name="theStartValue" value="1"><p>');
    self.response.out.write('  <input type="button" value="-15" onClick="stepThumbnails(-1)">');
    self.response.out.write('  <input type="button" value="+15" onClick="stepThumbnails(1)" ><p>');
    self.response.out.write('<div id="theCurrentThumbnails">');
    self.response.out.write('<a href=><b>Bold Lentil</b> <a><p>');

The final result is simple and appealing in a minimalist, wisenheimer way. And unlike computing randomish numbers the jump page even registers on the dashboard.

L’Enigme by Gustave Doré

April 24, 2008

What a painting. Monochrome gloom, lifeless soldiers, smoke filled skies and in the middle a winged figure implores an expressionless sphinx. Painted in by Gustave Doré in 1871 after yet more Franco-Prussian warfare the colorless and cryptic embrace would appear to be unconvincing to a weary sphinx.

Incomprehensible Post #11

April 17, 2008

Another Day, Another Donut

April 12, 2008

Satisfaction may or may not be reducible to a mean satisfaction score. Satisfaction also might be a function of expectation. And maybe satisfaction is the death of desire. Who knows?

Satisfaction is where you find it.

Tintin in L.A.

April 3, 2008


Tintin has always shown himself capable of handling a gun, fist fighting drug smugglers and dealing with the Captain’s benders. But what will he face in L.A.? Will he be able to resist the siren call of the 21st century, the fickle attentions of the ever-hungry blockbuster machine, the translation from static clean lines with a global trajectory to the narcissistic orbits and eye candy of L.A.? He’s entertained generations of fans in print, survived spies, sneak attacks, henchmen, gorillas, trips to the moon and the bottom of the sea. With any luck he’ll manage in L.A. A trilogy though? Played by a kid?

–Thanks to p.f. magic for helping me figuring out how to lose the baseball cap

The Inflammable Vapors of the Dictamnus Fraxinella

March 11, 2008

While looking through my copy of Dr. F. Hollick’s The Origin of Life from 1878 I was struck by figure 88 which is the plant Dictamnus Fraxinella bursting into flame. Also known as the ‘gas plant’ this may have been the burning bush of the bible although Dr. Hollick has an alternative explanation if one of you should see, or should I say interrupt, the gas plant in action.


Tsankawi Petroglyphs

March 5, 2008


Along the Tsankawi trail there are petroglyphs, caves, pottery shards and deep tracks worn in the volcanic tuff rock by visitors. This one seems to have a deer, at least one person, a tree, a spiral and and a circle with an X in it. The spiral is over 5 meters in the air. Were the Tsankawi really tall or have ladders or both? Imagination kicks in. Dad can I borrow the ladder? Angry dad says no way. A liberated ladder latter and a fresh smooth stone beckons. What to draw? Anything, everything it’s a sunny day. Long ago a great uncle drew a spiral. Something different – a deer. Centuries latter just about every other trace of a of a people, a way of life, is gone save for the etchers of rock. All of them – the strongest, the wisest, the noblest, the fairest, the most average are long dead and only the one patient enough to carve stone figures, presumably on a ladder dragged through scrub hopefully with some help, leaving any trace. Better hurry up and get this post etched onto plastic and thrown in a landfill as soon as possible.