<?xml version="1.0" encoding="iso-8859-1"?> <rss version="2.0"      xmlns:dc="http://purl.org/dc/elements/1.1/"     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"     xmlns:admin="http://webns.net/mvcb/"     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"     xmlns:content="http://purl.org/rss/1.0/modules/content/">  

  <channel>
     <title>PhotoRant+ is a Botzilla Blog</title>
     <link>http://www.botzilla.com/blog/</link>
     <description>Optimistically world-weary since 1994.</description>
     <dc:language>en-us</dc:language>
     <dc:creator>bjorke@botzilla.com</dc:creator>
     <dc:rights>Copyright 2012</dc:rights>
     <dc:date>2012-05-05T15:02:44-08:00</dc:date>
     <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.661" />
     <admin:errorReportsTo rdf:resource="mailto:bjorke@botzilla.com"/>
     <sy:updatePeriod>hourly</sy:updatePeriod>
     <sy:updateFrequency>1</sy:updateFrequency>
     <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>




     <item>
       <title>791</title>
       <link>http://www.botzilla.com/blog/archives/000741.html</link>
       <description> One more for a Saturday -- see if you can push all the balls off-screen at once! (and no, it won&apos;t try to sell you car insurance) var mX791 = 400; var mY791 = 100; var gNParts791 = 17;...</description>
       <guid isPermaLink="false">741@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<canvas id="c791" width=800 height=250></canvas>

<P>One more for a Saturday -- see if you can push all the balls off-screen at once! (and no, it won't try to sell you car insurance)</P>


<script type="text/javascript">
var mX791 = 400;
var mY791 = 100;
var gNParts791 = 17;
var gPart791 = new Array();

function r255sq() { return Math.floor(Math.random()*Math.random()*255); } // cauchy

function setup_parts791(W,H) {
	var nc;
	for (var i=0; i<gNParts791; i++) {
	   var x = Math.random()*W;
	   var y = Math.random()*H;
	   var dx = 0; // 2.0-Math.random()*4.0;
	   var dy = 0; // 2.0-Math.random()*4.0;
	   var rad = 50.0+Math.random()*Math.random()*80.0;
	   var r = r255sq();
	   var g = r255sq();
	   var b = r255sq();
	   var c = "rgb("+r+","+g+","+b+")";
	   gPart791.push(new Array(x,y,dx,dy,rad,x,y,c)); // we keep the original x & y
	}
}

function advance791(Ar,W,H) {
   // simple motion for now
   var x = Ar[0];
   var y = Ar[1];
   var dx = Ar[2];
   var dy = Ar[3];
   var rad = Ar[4];
   var ox = Ar[5];
   var oy = Ar[6];
   var c = Ar[7];
   // mouse force
	var ddx = (x-mX791);
	var ddy = (y-mY791);
	var s = ddx*ddx+ddy*ddy- rad*rad*2;
	s = Math.max(1.0,s);
	var n = Math.sqrt(s);
	// s *= 150.0;
	s *= 20.0;
	ddx /= n;
	ddy /= n;
	dx += ddx/s;
	dy += ddy/s;
   // home force
	dox = (x-ox);
	doy = (y-oy);
	ddx = dox/80;
	ddy = doy/80;
	s = ddx*ddx+ddy*ddy;
	if (s> 1.0/80) {
		n = Math.sqrt(s);
		n = Math.max(n,1.0);
		ddx /= n;
		ddy /= n;
		dx -= ddx/s;
		dy -= ddy/s;
		}
   var a = dx*dx + dy*dy;
   var o = dox*dox + doy*doy;
	   x += dx;
	   y += dy;
   dx *= 0.9;
   dy *= 0.9;
   var a = new Array(x,y,dx,dy,rad,ox,oy,c);
   return a;
}

var gCv7 = undefined;

var gCount = 0;

function draw_canv791() {
	if (gCv7 == undefined)
		gCv7 = document.getElementById('c791');
	//if (gCv7) {
		if (gCv7.getContext) {
			var ctx = gCv7.getContext('2d');
			var w = gCv7.width; // 500.0;
			var h = gCv7.height; // 300.0;
			// ctx.fillStyle = "rgb(90,10,0);";
			ctx.fillStyle = "rgba(255,255,255,0.35);";
			ctx.fillRect(0,0,w,h);
			ctx.fillStyle = "rgb(0,0,0);";
			// ctx.fillText("frame "+gCount,20,20);
			gCount += 1;
			if (gPart791.length < 1) {
				setup_parts791(w,h);
			}
			ctx.strokeStyle = "rgba(20,20,20,.5);";
			ctx.lineWidth=1.0;
				ctx.beginPath();
				ctx.moveTo(mX791-4,mY791);
				ctx.lineTo(mX791+4,mY791);
				ctx.stroke();
				ctx.beginPath();
				ctx.moveTo(mX791,mY791+4);
				ctx.lineTo(mX791,mY791-4);
				ctx.stroke();
			var i;
			var j;
			var x, y, r;
			for (i=0; i<gNParts791; i++) {
				x = gPart791[i][0];
				y = gPart791[i][1];
				r = gPart791[i][4];
				ox = gPart791[i][5];
				oy = gPart791[i][6];
				ctx.strokeStyle = "rgba(230,200,160.5);";
				ctx.beginPath();
				ctx.moveTo(x,y);
				ctx.lineTo(ox,oy);
				ctx.stroke();
				ctx.fillStyle = gPart791[i][7];
				ctx.beginPath();
				// ctx.fillText("pos "+x+","+y+", r:"+r,20,40+10*i);
				ctx.arc(x,y,r,0,6.2831,false);
				ctx.fill();
			}
			for (i=0; i<gNParts791; i++) {
				gPart791[i] = advance791(gPart791[i],w,h);
			}
		}
	// } else {
		// document.write("no canvas?");
	//}
}
// $(document).ready(function() {
gRActions.push(function() {
    draw_canv791();
	$("#c791").mousemove(function(e) {
	    mX791 = e.pageX-this.offsetLeft;
	    mY791 = e.pageY-this.offsetTop;
	});
    setInterval(draw_canv791,30);
});
</script>

<P>Everything here, on the JS side, is set up using a shared array of initializer functions,
just like the previous entry on that topic.</P>

<P>Next step might be to re-cast it as SVG... amazing that SVG seems really powerful, but
compared to &lt;canvas&gt;, theres' almost no really good documentation...</P>


<IMG SRC="/blog/archives/pix2012/thumb791.jpg" STYLE="display: none;" />
<a href="http://www.botzilla.com/blog/archives/000741.html#comments" title="Comment on: 791">Comments (2)</a></p>]]></content:encoded>
       <dc:subject>Nuke Em from Orbit</dc:subject>
       <dc:date>2012-05-05T15:02:44-08:00</dc:date>
     </item>
      <item>
       <title>None of These Mean: &quot;Bikes Out of My Way!&quot;</title>
       <link>http://www.botzilla.com/blog/archives/000740.html</link>
       <description>Press for a larger view The state publishes a PDF containing the 2012 California Dept of Transportation Bicycle-Related Roadway Standards. It contained, across several pages, all of the current standards for bicycle-related signage (and much more). I&apos;ve collected the signs...</description>
       <guid isPermaLink="false">740@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><a href="/blog/archives/pix2012/CA-BikeSafe-2012-15-med.jpg" target="new"><img alt="CA-BikeSafe-2012-15-botz.jpg" src="http://www.botzilla.com/blog/archives/pix2012/CA-BikeSafe-2012-15-botz.jpg" width="807" height="262" border="0" /><br /><i>Press for a larger view</i></a></p>

<p>The state publishes a PDF containing the <a href="http://www.dot.ca.gov/hq/traffops/signtech/mutcdsupp/pdf/camutcd2012/Part9.pdf">2012 California Dept of Transportation Bicycle-Related Roadway Standards.</a> It contained, across several pages, all of the current standards for bicycle-related signage (and much more). I've collected the signs together here for easier web reference (fabric patterns, anyone?).</p>

<p>Note that the vague legacy "Share the Road" sign seems to be fading out, to be replaced by the much clearer "MAY USE FULL LANE." About time!</p><a href="http://www.botzilla.com/blog/archives/000740.html#comments" title="Comment on: None of These Mean: "Bikes Out of My Way!"">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>The Open Conspiracy</dc:subject>
       <dc:date>2012-05-05T11:00:43-08:00</dc:date>
     </item>
      <item>
       <title>HTML5 (&amp; JQuery) vs Moveable Type, Part 2</title>
       <link>http://www.botzilla.com/blog/archives/000739.html</link>
       <description> Following up on the previous post, here are the details on a simple way to add multiple dynamic scripts to a Moveable Type index page. Like the previous post, try using your mouse on this one! Can you slow...</description>
       <guid isPermaLink="false">739@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<canvas id="c789" width=800 height=250></canvas>

<P>Following up on the <A href="/blog/archives/000738.html">previous post,</a> here are the details on a simple way to add multiple dynamic scripts to a Moveable Type index page.</P>

<P>Like the previous post, try using your mouse on this one! Can you slow down the particles?</p>

<P>Basically, we just need to add an (initially empty) array of function references to the page templates, which we'll use to capture each blog entry's unique scripts (rather than letting them launch themselves), and then iterate on that array for the entire page, once it's loaded and ready.<p>

<script type="text/javascript">
var mX739 = 400;
var mY739 = 100;
var gNParts739 = 22;
gPart739 = new Array();

function setup_parts(W,H) {
	var nc;
	for (var i=0; i<gNParts739; i++) {
	   var x = Math.random()*W;
	   var y = Math.random()*H;
	   var dx = 2.0-Math.random()*4.0;
	   var dy = 2.0-Math.random()*4.0;
	   gPart739.push(new Array(x,y,dx,dy));
	}
	// document.write("made "+gNParts739+" particles.");
}

function advance(Ar,W,H) {
   // simple bouncing motion for now
   var x = Ar[0];
   var y = Ar[1];
   var dx = Ar[2];
   var dy = Ar[3];
	var ddx = (x-mX739)/5;
	var ddy = (y-mY739)/5;
	var s = ddx*ddx+ddy*ddy;
	var n = Math.sqrt(s);
	ddx /= n;
	ddy /= n;
	dx += ddx/s;
	dy += ddy/s;
   x += dx;
   y += dy;
   if (x<0) {
	x = -x;
	dx = -dx;
   } else if (x>W) {
	x = 2*W-x;
	dx = -dx;
   }
   if (y<0) {
	y = -y;
	dy = -dy;
   } else if (y>H) {
	y = 2*H-y;
	dy = -dy;
   }
   return new Array(x,y,dx,dy);
}

var gCv = undefined;

var gCount = 0;

function draw_canv739() {
	if (gCv == undefined)
		gCv = document.getElementById('c789');
	//if (gCv) {
		if (gCv.getContext) {
			var ctx = gCv.getContext('2d');
			var w = gCv.width; // 500.0;
			var h = gCv.height; // 300.0;
			// ctx.fillStyle = "rgb(90,10,0);";
			ctx.fillStyle = "rgba(255,255,255,0.95);";
			ctx.fillRect(0,0,w,h);
			ctx.fillStyle = "rgb(0,0,0);";
			ctx.fillText("frame "+gCount,20,20);
			gCount += 1;
			if (gPart739.length < 1) {
				setup_parts(w,h);
			}
			ctx.strokeStyle = "rgba(20,20,20,.5);";
			ctx.lineWidth=1.0;
			var i;
			var j;
			for (i=0; i<gNParts739; i++) {
				ctx.beginPath();
				ctx.arc(gPart739[i][0],gPart739[i][1],3.0,0,6.2831,false);
				ctx.stroke();
			}
			for (i=0; i<(gNParts739-1); i++) {
				for (j=i+1; j<gNParts739; j++) {
					var dx = gPart739[i][0] - gPart739[j][0];
					var dy = gPart739[i][1] - gPart739[j][1];
					var nsq = dx*dx + dy*dy;
					if (nsq<4000) {
						var v = (nsq-500)/3500;
						var v = Math.floor(v*255);
						ctx.strokeStyle = "rgb("+v+","+v+","+v+");";
						ctx.beginPath();
						ctx.moveTo(gPart739[i][0],gPart739[i][1]);
						ctx.lineTo(gPart739[j][0],gPart739[j][1]);
						ctx.stroke();
					}
				}
			}
			for (i=0; i<gNParts739; i++) {
				gPart739[i] = advance(gPart739[i],w,h);
			}
		}
	// } else {
		// document.write("no canvas?");
	//}
}
// $(document).ready(function() {
gRActions.push(function() {
    draw_canv739();
	$("#c789").mousemove(function(e) {
	    mX739 = e.pageX-this.offsetLeft;
	    mY739 = e.pageY-this.offsetTop;
	});
    setInterval(draw_canv739,30);
});
</script>

<p>I'm using jquery, so I declare the array and my <B>$(document).ready()</B> function like so:</P>

<pre>
var gRActions = new Array(); // initially empty array of functions...

$(document).ready(function() {
  for (var a=0; a&lt;gRActions.length; a++) {
	gRActions[a]();
  }
});
</pre>

<P>Then in each blog entry, I write the same anonymous javascript function as I might write for
<B>$(document).ready()</B>, but instead I just push it into <B>gRActions:</B></p>

<PRE>
gRActions.push(function() {
   draw_canv739();
   setInterval(draw_canv739,30);
});
</PRE>

<P>Now the page, regardless of how many blog entries it might contain, will include all of them in its page initialization. Remember also to make sure that any "global" javascript values (including function names!) in this entry, and all HTML elements like &lt;canvas&gt;, have unique names so that they won't collide with other blog entries, should they for some reason both be presented on the same HTML index page someday.</P>

<P>Also, as we've learned from the previous post: put some human-readbale text into the post <I>before</I> the scripting portion of the post, otherwise Facebook becomes confused.</p>



<!-- <IMG SRC="/photo/journal//may03e-15.jpg" STYLE="display: none;" /> -->
<a href="http://www.botzilla.com/blog/archives/000739.html#comments" title="Comment on: HTML5 (& JQuery) vs Moveable Type, Part 2">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>Nuke Em from Orbit</dc:subject>
       <dc:date>2012-05-04T22:45:42-08:00</dc:date>
     </item>
      <item>
       <title>HTML5 Canvas vs Moveable Type</title>
       <link>http://www.botzilla.com/blog/archives/000738.html</link>
       <description> var mX = 0; var mY = 0; var gSpreed = 2; var gScroll = 0; var sino = function(V,W,H) { var f = 0.8*Math.sin(V/W); var hh = H/2.0; var y = hh + hh*f; return y; } function...</description>
       <guid isPermaLink="false">738@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<script type="text/javascript">


var mX = 0;
var mY = 0;
var gSpreed = 2;
var gScroll = 0;

var sino = function(V,W,H)
{
	var f = 0.8*Math.sin(V/W);
	var hh = H/2.0;
	var y = hh + hh*f;
	return y;
}

function next_loc(X,Scroll,W,H,Freq,Scale)
{
	var y = sino(Freq*(Scroll+X),W,H);
	var dx = (X-mX)/Scale;
	var dy = (y-mY)/Scale;
	var s = dx*dx+dy*dy;
	var n = Math.sqrt(s);
	dx /= n;
	dy /= n;
	var x = X+dx/s;
	y = y+dy/s;
	return new Array(x,y);
}

gFreqs = new Array(19,20,17,50,3,10,18,19.1);
gScales = new Array(340,100,80,250,50,102,44,400);
gColors = new Array();
gScroll = new Array();
gSpeeds = new Array();

function r255() { return Math.floor(Math.random()*255); }
function r255q() { return Math.floor(Math.random()*Math.random()*255); } // cauchy

function setup_colors() {
	var nc;
	for (var i=0; i<gFreqs.length; i++) {
		nc = "rgba("+r255q()+","+r255q()+","+r255q()+",0.5)";
		gColors.push(nc);
		gScroll.push(0.0);
		gSpeeds.push(1.0+Math.random()*2.0);
	}
}

function draw_c1() {
	var cv = document.getElementById('c1');
	if (cv.getContext) {
		var w = cv.width; // 500.0;
		var h = cv.height; // 300.0;
		var ctx = cv.getContext('2d');
		// ctx.fillStyle = "rgb(90,10,0);";
		ctx.fillStyle = "rgba(240,240,240,0.95);";
		ctx.fillRect(0,0,w,h);
		if (gColors.length < 1) { setup_colors(); }
		var i;
		for (i=0; i<gFreqs.length; i++) {
			// ctx.strokeStyle = "rgba(255,255,190,.5);";
			ctx.strokeStyle = gColors[i];
			ctx.lineWidth=(1.0+(399.0/gScales[i]));
			ctx.beginPath();
			var a = next_loc(0,gScroll[i],w,h,gFreqs[i],gScales[i]);
			ctx.moveTo(a[0],a[1]);
			for (var x=1; x<w; x+=2) {
				a = next_loc(x,gScroll[i],w,h,gFreqs[i],gScales[i]);
				ctx.lineTo(a[0],a[1]);
			}
			ctx.stroke();
		        gScroll[i] += gSpeeds[i];
		}
	}
}

// add to page init list
gRActions.push(function() {
   draw_c1();
   $("#c1").mousemove(function(e) {
	    mX = e.pageX-this.offsetLeft;
	    mY = e.pageY-this.offsetTop;
	    //$('#mousy').html(mX+'/'+mY);
   });
   setInterval(draw_c1,30);
});

</script>
<canvas id="c1" width=800 height=250></canvas>

<P>With a little fiddling it's easy enough to use &lt;CANVAS&gt; (and <a HREF="http://jquery.com/" TARGET="new">jquery</a>) in tandem with Botzilla's somewhat elderly (and modified) installation of <a href="http://www.movabletype.org/" target="new">Moveable Type.</a></P>

<P>Minor tricks:<UL>
<LI>Remember to suppress Text Formatting -- no automatic &lt;P&gt; tags</LI>
<LI>Between different blog entries, don't reuse variable names, or element names, if you think you might ever need to have multiple canvases on the same page (say, in index or search pages). You will disappear into the fourth circle of scoping hell.</lI>
<LI>Likewise, if you think that multiple canvases per page is a real possibility, then put each canvas's prep and render code into a distinct function, so that you can move your "onload()" or "$(document.ready()" functions into the header template, not the body of the entry itself. In the header, declare an initially-empty array of functions, and have your "ready()" function iterate through them. <BR />Then in each scripted entry, add your entry-specific render function(s) to that array. This way, the "ready()" function can just know what's needing to be set up for the specific page, regardless of which entries are being displayed and the # of visible canvases (A perusal of the initial state of this entry will show that I don't always follow my own advice. But adding that feature to Botzilla is one of my next steps). Be sure to put that array and calling function into <I>all</I> of your index and entry templates!</LI>
<LI>Linked sites like Facebook won't show &lt;Canvas&gt; or other animating elements, so if you want a good thumbnail, try adding a hidden image like so: <B>&lt;IMG SRC="/photo/journal//may03e-15.jpg" STYLE="display: none;" /&gt;</B></LI>
<LI>MT's preview page doesn't have all this extra js etc built-in. I suppose you can add it, and I probably will over time --  but as a quick workaround, to get a preview, I save my entry, press "Publish," then immediately look at the front index page -- if there's anything wrong, immediately change the entry state back to "Draft" and save again. This will remove the entry from the front page and the RSS feed, but: the "permalink" actual page file (in this case, "/blog/archives/000738.html") will still be there! Download and debug locally, then transport your changes back into MT. A bit of a shuffle but it's a workflow that <i>can</i> get you from points A to B.</LI>
<LI>Beware trying to test-post to Facebook, changing the contents of the blog entry (even for typos) and trying to post it to FB again -- FB caches everything the first time, so... if you want a change that will appear there, you need to make a new copy of your entire post, publish <i>that,</i> and hide the old one (how do I know this?).</LI>
<LI>Google+ is smart enough to recognize the difference between javascript blocks and actual human-readable body text. <i>Facebook is not,</i> and may just insert blocks of random code onto any FB link you create pointing to your entry. Maybe they will learn.</LI>
</UL></P>

<IMG SRC="/photo/journal//may03e-15.jpg" STYLE="display: none;" /><a href="http://www.botzilla.com/blog/archives/000738.html#comments" title="Comment on: HTML5 Canvas vs Moveable Type">Comments (1)</a></p>]]></content:encoded>
       <dc:subject>Nuke Em from Orbit</dc:subject>
       <dc:date>2012-05-04T08:25:32-08:00</dc:date>
     </item>
      <item>
       <title>Playing All Sides</title>
       <link>http://www.botzilla.com/blog/archives/000736.html</link>
       <description> Despite my belief that Facebook has been a large-than-deserved time sink for myself, I&apos;ve finally managed to add proper &quot;like&quot; buttons to these pages. Took a little reminding myself how javascript worked, but now every entry has its own...</description>
       <guid isPermaLink="false">736@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img alt="bjorke_MG_8267.jpg" src="http://www.botzilla.com/blog/archives/pix2012/bjorke_MG_8267.jpg" width="807" height="397" border="0" /></p>

<p>Despite my belief that Facebook has been a large-than-deserved time sink for myself, I've finally managed to add proper "like" buttons to these pages. Took a little reminding myself how javascript worked, but now every entry has its own "like" button so that, well, so that Facebook can sell more ads.</p>

<p>I've also been poking at <a href="http://www.google.com/producer/currents" target="new">Google Currents</a> as a distribution mechanism for mobile devices, in addition to puzzling over how to make botzilla itself tablet-friendly and how to best reduce all photos to 400 pixels (to bend the old saw about cameras, "the best photo gallery is the one in your hand"?).</p>

<p>What's a bit of a puzzle to me is how to best incorporate either of these with some of the other aspects of botzilla that I'm looking to enhance, especially heavier use of &lt;canvas&gt; tags using animation and where possible WebGL. Given that Facebook looks for static images to grab as thumbnails, and that Currents runs off of RSS, how to best show-off fun animation and interactive imaging experiments?</p><a href="http://www.botzilla.com/blog/archives/000736.html#comments" title="Comment on: Playing All Sides">Comments (1)</a></p>]]></content:encoded>
       <dc:subject>Wire Service</dc:subject>
       <dc:date>2012-05-02T22:40:54-08:00</dc:date>
     </item>
      <item>
       <title>Why Christopher Hitchens Was Wrong About Mitt Romney</title>
       <link>http://www.botzilla.com/blog/archives/000734.html</link>
       <description>...up to a point. A couple of years back the late, great Hitch appeared on FOX and made some rather pointed comments concerning Mitt Romney and the painful history of the Mormon/LDS church on the subject of race (in the...</description>
       <guid isPermaLink="false">734@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p>...up to a point.</p>

<p>A couple of years back the late, great Hitch appeared on FOX and made some rather pointed comments concerning Mitt Romney and the painful history of the Mormon/LDS church on the subject of race (in the video below up to about 1 minute in -- I'd appreciate a better link if one exists, without the extra passage from Richard Dawkins).</p>

<p><center><br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/9Etownp_Rmw" frameborder="0" allowfullscreen></iframe><br />
</center></p>

<p>...which can seem pretty damaging, especially when paired with quotes like this one from Brigham Young himself in 1855: <i>"You must not think, from what I say, that I am opposed to slavery. No! The negro is damned, and is to serve his master till God chooses to remove the curse of Ham..."</i></p>

<p>These issues are not a new political weapon -- they were a rather large factor in the political fizzling of the non-Romneyesque Mormon presidential candidate <a href="http://en.wikipedia.org/wiki/Udall_family">Mo Udall,</a> who was narrowly passed-over for the Democratic nomination of favor of Jimmy Carter. Shortly after that election, a new revelation was received by the church that re-instated black people into the full range of the faith (closer to the original teachings of Joseph Smith, who had ordained blacks himself).</p>

<p>Yet Hitchens provocatively reminds us: Romney was already a grown man and a major figure in the then-officially-racist church by that time. Shouldn't Romney still be held accountable? A few journalists took up Hitchens's challenge, as you can see here on <i>Meet the Press:</i></p>

<p><center><br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/Pcw0woPX5VY" frameborder="0" allowfullscreen></iframe><br />
</center></p>

<p>I'm willing to give Romney the benefit of any doubt and say that his response is <i><b>100% genuine.</b></i> That his father supported Dr. King is easy to verify (though he never 'marched' with King), that the change in church dogma moved him to tears of thanks, and that Mitt (and Udall) opposed this church policy -- it doesn't surprise me and frankly it's about the most human moment for Romney on television that I can recall.</p>

<p>But does that mean Romney is out of the ethical woods? Sorry, no.</p>

<p>Besides not being a racist, it means: <i>Romney has a moral sense that is not guided by church dogma or senior church authorities.</i> Most people do -- it's why everyday American Christians (and allied faithful) don't, say, stone adulterers at Club Med or burn witches hanging out at Burning Man.</p>

<p>And there's the rub. It Romney says his choices are guided by faith, and not open to discussion, then... shouldn't Romney himself be held to the same criteria? Because clearly he, and his father, and the Udalls, and many many other politicians, are clearly answering an internal moral voice that's not guided by the scriptures or elders of their churches.</p>

<p>And here's where <a href="http://www.slate.com/articles/news_and_politics/fighting_words/2007/11/mitt_the_mormon.html">Hitchens show up again</a> on an end-run from 2007.</p>

<blockquote><i>A black candidate with ties to Louis Farrakhan could expect questions about his faith in the existence of the mad scientist Yakub, creator of the white race, or in the orbiting mother ship visited by the head of the Nation of Islam. What gives Romney an exemption?</i></blockquote>

<p>The answer should be: <i>nothing.</i> I'm appalled at recent statements by his political opponents that the sources of Romney's views (and actions, should he managed to be elected) would be off-limits for discussion. You should be, too -- especially when other devout believers of the same stripe have such strongly-opposing views, like the laudable Senator Tom Udall, nephew of Mo, who is determined to <a href="http://www.rawstory.com/rs/2011/11/01/sens-udall-bennet-propose-bill-to-overturn-citizens-united-ruling/">overturn the <i>Citizens United</i> ruling.</a></p>

<p><center><br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/x3iSxPG5K8U" frameborder="0" allowfullscreen></iframe><br />
</center></p>

<p>WWJD? Can a corporation be ordained, or not?<br />
</p><a href="http://www.botzilla.com/cgi-bin/mt-tb.cgi?__mode=view&entry_id=734" onclick="OpenTrackback(this.href); return false">TrackBack (0)</a> | <a href="http://www.botzilla.com/blog/archives/000734.html#comments" title="Comment on: Why Christopher Hitchens Was Wrong About Mitt Romney">Comments (1)</a></p>]]></content:encoded>
       <dc:subject>The Open Conspiracy</dc:subject>
       <dc:date>2012-04-09T17:32:37-08:00</dc:date>
     </item>
      <item>
       <title>Reversals</title>
       <link>http://www.botzilla.com/blog/archives/000735.html</link>
       <description>This morning I decided to go for a bike ride. Dragged out a map, looked at some of my favorite recent destinations for riding that were at about what I felt was an appropriate distance for the amount of time...</description>
       <guid isPermaLink="false">735@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img src="/blog/pix2012/bjorke_P1130581.jpg" width=394 height=700 align="right" hspace=8>This morning I decided to go for a bike ride. Dragged out a map, looked at some of my favorite recent destinations for riding that were at about what I felt was an appropriate distance for the amount of time I had; then drew a circle roughly around my location to fit their range. I noticed that they all tended to cluster to the north and west, to Palo Alto, Los Altos, and the hills near them.</p>

<p>There's an old photographer's maxim: if the view is interesting in a particular direction, there's a good chance that the view will be interesting in the opposite direction, too. This is one of those little guidelines that encourage the thing I most like about the process of photography, and that I like most about cycling: <i>it demands that you pay attention.</i></p>

<p>So I chose <a href="http://www.endomondo.com/workouts/lDaOUxVS4gM">a different route,</a> and a path less traveled, which has made all the difference.</p>

<p>The photograph at right was made along a path that I hesitated before -- gravel, long, no easy turning back. Little sign of popularity, not even a guarantee that I'd not get to the far side and reach some impasse that would send me back the way I'd come.</p>

<p>Five minutes along, and the path was now just a dry berm, rising from water on both sides. No one about, no sound but the roll of tires on dry mud. To my left, a gull came alongside, and another, and then more to the right, and all around, at eye level and skimming the still, sky-colored water below, criss-crossing alongside of me before taking a group arc off towards better fishing.</p>

<p>I'd never felt more like a cycle ride is a kind of flying.</p>

<p>Five minutes on, I was startled by a flight of swifts that whooshed perpendicularly across my front wheel, the beat of their wings the only sound followed quickly by my own amazed intake of breath as they shot off to the east.</p>

<p>Five minutes more and I was pacing alongside a great egret for nearly a block, able to study the strokes of his wings, to hear his call and watch how he seemed to gently communicate his presence to the other birds along the path, before he accelerated ahead, then landed on the trail, watching me until I had caught up, at which point he departed back the way he'd come.</p>

<p>During this I'd seen only three other people, though I was within sight of the homes and offices of tens of thousands. I passed one more, an older lady gently cranking along on a mountain bike, and as I started to loop back to shore I was following another bird, a crow I thought -- after a while he pinioned 180 degrres and shot past me, again at eye level -- a red-tailed hawk.</p>

<p>Five minutes more and I was in traffic, negotiating my way over highway 237, dodging pickup trucks and VTA trains. It was all good riding, but only one part of it touched the sky.<br />
</p><a href="http://www.botzilla.com/cgi-bin/mt-tb.cgi?__mode=view&entry_id=735" onclick="OpenTrackback(this.href); return false">TrackBack (0)</a> | <a href="http://www.botzilla.com/blog/archives/000735.html#comments" title="Comment on: Reversals">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>Unfinished, In Progress</dc:subject>
       <dc:date>2012-04-07T14:00:20-08:00</dc:date>
     </item>
      <item>
       <title>A Momentary Stay</title>
       <link>http://www.botzilla.com/blog/archives/000733.html</link>
       <description>When you&apos;re busy, your peripheral senses dim; it might be weeks before you notice that the house-guest sleeping on your sofa has installed himself as a permanent resident - still asleep in the morning as you rush out to the...</description>
       <guid isPermaLink="false">733@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img src="/blog/pix2012/bjorke_MG_0218jp.jpg" width=807 height=538 vspace=8 alt="See See Lo @ Jenner, California" Title="See See Lo in Sonoma County">When you're busy, your peripheral senses dim; it might be weeks before you notice that the house-guest sleeping on your sofa has installed himself as a permanent resident - still asleep in the morning as you rush out to the office, mostly out of sight when you return late. And so it has been as the weeks and more have slipped by without an entry here on Botzilla, as the digital cruft starts to collect around the DNS entries and the CSS stylings begin to look a little bit too 2009.</p>

<p>I could make a host of plausible excuses: that we were busy launching <a href="http://www.riftgame.com/"><I>Rift;</I></a>  that there was another new baby in the extended family; that much of my time has been consumed by my rediscovered love of cycling; all possible, all overlapping, but ultimately I think that the real culprit is the great mass ADHD of our era, Facebook.</p>

<p>And it's Facebook that's brought me back here, in an attempt to carve out something more coherent than a string of redirected tweets or ideas limited to a half-dozen lines of narrow text, swept away into the great churn of daily gossip.</p>

<p>Now, I have a certain respect for gossip, as a driving force for culture and civilization as far back as either could be meaningfully describe. Robert Frost called it <a href="http://www.frostfriends.org/FFL/Periodicals/Interview-lewis.html">one of the three great things</a> mankind have wrought in the world (the other, slightly-lesser great things were science and religion).</p>

<p>Yet Frost isn't known as a gossip, but as the author of something both more solid and more ephemeral : his poems. He said that to write  -- to complete a new bundle of ideas -- is a momentary stay against confusion. </p>

<p>I hope he was right.</p><a href="http://www.botzilla.com/cgi-bin/mt-tb.cgi?__mode=view&entry_id=733" onclick="OpenTrackback(this.href); return false">TrackBack (0)</a> | <a href="http://www.botzilla.com/blog/archives/000733.html#comments" title="Comment on: A Momentary Stay">Comments (3)</a></p>]]></content:encoded>
       <dc:subject>Unfinished, In Progress</dc:subject>
       <dc:date>2012-04-06T16:37:20-08:00</dc:date>
     </item>
      <item>
       <title>Camputer</title>
       <link>http://www.botzilla.com/blog/archives/000732.html</link>
       <description>Dogs and Lunches, etc If It Has a Ringtone, It&apos;s Not a Camera. Panasonic Lumix&apos;s advertising slogan didn&apos;t last long -- not, I think, because there would soon enough be a Lumix-branded mobile phone, but because it&apos;s a slogan that...</description>
       <guid isPermaLink="false">732@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><i><img alt="bjorke_Collected.jpg" src="http://www.botzilla.com/blog/archives/pix2011/bjorke_Collected.jpg" width="807" height="269" border="0" alt="Dog and Lunches and See See Lo and a Mini"  title="Dog and Lunches with See See Lo" /><br />Dogs and Lunches, etc</i></p>

<p><b>If It Has a Ringtone, It's Not a Camera.</b> Panasonic Lumix's advertising slogan didn't last long -- not, I think, because there would soon enough be a<a href="http://www.mobilecrunch.com/2010/10/05/ceatec-2010-panasonics-new-lumix-cell-phone-up-and-close/"> Lumix-branded mobile phone,</a> but because it's a slogan that can easily be interpreted either way: that a celphone is less than a camera, or (oops) that a camera is potentially rather less than a cameraphone.</p>

<p>It's also less than a "camera-puter," which is an aspect that is neither camera nor phone.</p>

<p>In the simplest sense, the camputer is a portal for images direct from your hand to the internet. But what about pictures before they ever leave the phone? <i>If</i> they ever leave the phone?</p><p><a href="http://www.botzilla.com/blog/archives/000732.html" title="Continue Reading: Camputer">Continue reading Camputer...</a><p class="font-family:Verdana, Arial, sans-serif; font-size:11px; color: #333333; background-color: #f5f5f5; border: 1px solid #c0c0c0; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 4px; display: block;"><a href="http://www.botzilla.com/blog/archives/000732.html#comments" title="Comment on: Camputer">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>GearHead</dc:subject>
       <dc:date>2011-02-02T00:40:16-08:00</dc:date>
     </item>
      <item>
       <title>Vignettes</title>
       <link>http://www.botzilla.com/blog/archives/000731.html</link>
       <description> I&apos;ll be the first to say that I find most Holga/Diana-wana-be photgraphy cloying and twee and it&apos;s pretty rare that even the most earnest results feel like anything more than just a rehash of Nancy Rexroth&apos;s &quot;IOWA.&quot; So you...</description>
       <guid isPermaLink="false">731@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><a href="/blog/archives/pix2011/Bjorke_Vignette_Color_Full.jpg"><img alt="Click for Larger Image" src="http://www.botzilla.com/blog/archives/pix2011/Bjorke_Vignette_Color.jpg" width="807" height="1342" border="0" /></a></p>

<p>I'll be the first to say that I find most Holga/Diana-wana-be photgraphy cloying and twee and it's pretty rare that even the most earnest results feel like anything more than just a rehash of <a href="http://www.foundobjectsgallery.com/bartender/2008/02/07/nancy-rexroth/">Nancy Rexroth's "IOWA."</a> So you can imagine my reflex reaction to programs that deliberately "crappify" otherwise-clear, direct images, burying them under just so much mannered noise. And you'd be right, at least about my initial reaction. Why my attitude has changed in the <a href="/blog/archives/000732.html">next photorant entry.</a></p>

<p>In the mean time, since I couldn't find one that entirely suited me, here are a couple of guides to the color modes (and below, frame styles) offered as presets by the Android camera-phone program <a href="http://neilandtheresa.co.uk/Android/Vignette/"><i>Vignette.</i></a> A similar chart can be found <a href="http://www.schussman.com/article/great-android-apps-vignette">here,</a> but it was missing skin tones). </p><p><a href="http://www.botzilla.com/blog/archives/000731.html" title="Continue Reading: Vignettes">Continue reading Vignettes...</a><p class="font-family:Verdana, Arial, sans-serif; font-size:11px; color: #333333; background-color: #f5f5f5; border: 1px solid #c0c0c0; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 4px; display: block;"><a href="http://www.botzilla.com/blog/archives/000731.html#comments" title="Comment on: Vignettes">Comments (1)</a></p>]]></content:encoded>
       <dc:subject>GearHead</dc:subject>
       <dc:date>2011-02-01T18:01:13-08:00</dc:date>
     </item>
      <item>
       <title>Flashy Foods</title>
       <link>http://www.botzilla.com/blog/archives/000729.html</link>
       <description>What I Ate: 28 Jan 2011 The flash diet doesn&apos;t require using flash, and it isn&apos;t really a diet per se, but an alternative to keeping a food diary -- photograph everything you eat. A side benefit is that it...</description>
       <guid isPermaLink="false">729@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img alt="bjorke_jan_28_food.jpg" src="http://www.botzilla.com/blog/archives/pix2011/bjorke_jan_28_food.jpg" width="807" height="807" border="0" /><br /><i>What I Ate: 28 Jan 2011</i></p>

<p>The <a href="http://www.topendsports.com/weight-loss/diet-flash.htm">flash diet</a> doesn't require using flash, and it isn't really a diet <i>per se,</i> but an alternative to keeping a food diary -- photograph <a href="/blog/archives/000464.html">everything you eat.</a> A side benefit is that it gives you an excuse to make at least a few photographs every day.</p>

<p>For entertainment value I've given myself a little rubric:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&bull; Celphone only: twee "FX" apps okay<br />
&nbsp;&nbsp;&nbsp;&nbsp;&bull; "One bullet": c'mon, it's time to eat<br />
&nbsp;&nbsp;&nbsp;&nbsp;&bull; Context: ingredients, locations, companions</p>

<p>Here is a great thing about celphone cameras: they're not Hasselblads. They're more like a real <a href="http://www.thepencilofnature.com/">"pencil of nature,"</a> in that a pencil has incredible range -- you can use the same pencil to jot down the grocery list or to draw a <a href="http://www.britishmuseum.org/explore/online_tours/europe/michelangelos_drawings/michelangelos_drawings.aspx">masterwork.</a> The Hasselblad is more like oil paints -- wonderful for what it does, but too grand and technically involved for casual muddling.</p><a href="http://www.botzilla.com/blog/archives/000729.html#comments" title="Comment on: Flashy Foods">Comments (1)</a></p>]]></content:encoded>
       <dc:subject>fStop</dc:subject>
       <dc:date>2011-01-28T22:42:33-08:00</dc:date>
     </item>
      <item>
       <title>eReading</title>
       <link>http://www.botzilla.com/blog/archives/000727.html</link>
       <description> The pictures show a recent bargain toy -- a 7-inch Pandigital Novel eReader (aka &quot;PDN,&quot; or &quot;WPDN&quot; to specify the white variant), re-flashed to expose its Android underpinnings and updated to Android 2.1 &quot;Eclair.&quot; I managed to pick this...</description>
       <guid isPermaLink="false">727@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><p><img alt="bjorke_pdn.jpg" src="http://www.botzilla.com/blog/archives/pix2011/bjorke_pdn.jpg" width="807" height="533" border="0" /></p></p>

<p><p>The pictures show a recent bargain toy -- a 7-inch <a href="http://www.pandigital.net/pandigitalnovel">Pandigital Novel</a> eReader (aka "PDN," or "WPDN" to specify the white variant), re-flashed to expose its Android underpinnings and <a href="http://www.slatedroid.com/index.php?topic=14033.0">updated to Android 2.1 "Eclair."</a> I managed to pick this one up during a recent clearance at the nearby chain store Kohl's for a tidy <a href="http://www.androidtablets.net/forum/pandigital-novel/5149-59-99-white-pandigitals-kohls.html">$59</a> (apparently, a few folks even managed to get a $20-off deal -- an Android tablet for $40!). Even at the more-usual price of $199 the Novel is no iPad, but at that price you could by three or four of them (or at the discount, a dozen or more!) for the price of a single iPad (<i>Addendum: Apparently they sold 440,000 PDN's in 2010</i>). So here's a quick review of my experience thus far:</p></p><p><a href="http://www.botzilla.com/blog/archives/000727.html" title="Continue Reading: eReading">Continue reading eReading...</a><p class="font-family:Verdana, Arial, sans-serif; font-size:11px; color: #333333; background-color: #f5f5f5; border: 1px solid #c0c0c0; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 4px; display: block;"><a href="http://www.botzilla.com/blog/archives/000727.html#comments" title="Comment on: eReading">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>GearHead</dc:subject>
       <dc:date>2011-01-24T23:56:26-08:00</dc:date>
     </item>
      <item>
       <title>Mystery</title>
       <link>http://www.botzilla.com/blog/archives/000724.html</link>
       <description>@ MOMA, NYC...</description>
       <guid isPermaLink="false">724@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img alt="bjorke_06222009056.jpg" src="http://www.botzilla.com/blog/archives/pix2010/bjorke_06222009056.jpg" width="907" height="680" border="0" /><br />@ MOMA, NYC<br />
</p><a href="http://www.botzilla.com/blog/archives/000724.html#comments" title="Comment on: Mystery">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>GrayScale</dc:subject>
       <dc:date>2011-01-14T10:35:51-08:00</dc:date>
     </item>
      <item>
       <title>Dog Apples</title>
       <link>http://www.botzilla.com/blog/archives/000726.html</link>
       <description> Paul Graham was kind enough not to name the unthinking reviewer who he says doesn&apos;t &quot;get&quot; photography -- which is odd, because you&apos;d think he&apos;d want to protect others from the potentially-insulting opinions he cites in this one-paragraph Jeff...</description>
       <guid isPermaLink="false">726@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img alt="bjorke_P1110968cr.jpg" src="http://www.botzilla.com/blog/archives/pix2010/bjorke_P1110968cr.jpg" width="807" height="442" border="0" /></p>

<p><a href="http://www.paulgrahamarchive.com/writings_by.html">Paul Graham</a> was kind enough not to name the unthinking reviewer who he says doesn't "get" photography -- which is odd, because you'd think he'd want to protect others from the potentially-insulting opinions he cites in <a href="http://www.artinfo.com/news/story/33711/beyond-a-snapshot/">this one-paragraph Jeff Wall book blurb by Carnelia Garcia</a> in ArtInfo's February <a href="http://www.artinfo.com/artandauction/f">ART+AUCTION</a> (Garcia claims to be a museum "PR Associate" according to her LinkedIn profile -- I won't speculate further).</p>

<p>What Graham's essay seems to miss is "how there remains a sizeable part of the art world that simply does not get " a <i>lot</i> of art -- not just photography. </p>

<p>As a handy example I've added the <a href="http://gurneyjourney.blogspot.com/">James Gurney</a> cartoon above, which he left us after a visit to Trion a few weeks ago. Gurney is a painter whose skill and talent are more than obvious, whose acclaim among other painters and the <a href="http://www.dinotopia.com/">public</a> are solid, and whose works are shown internationally in museums yet are essentially ignored (if not actively combated) by the same "sizable part of the art world" that Graham cites.</p>

<p>Why is this?</p>

<p>I think parts of an answer can be found in the closing chapter of the new Gerry Badger book, <a href="http://www.photoeye.com/bookstore/citation.cfm?Catalog=dq426"><i>The Pleasures of Good Photographs,</i></a> and also in the writings of a certain Norwegian-speaking Minnesotan who moved to the Silicon Valley...</p>

<p><i>Due diligence declaration: I do really love the work of all the photographers cited below. Okay, maybe not Richard Prince...</i></p><p><a href="http://www.botzilla.com/blog/archives/000726.html" title="Continue Reading: Dog Apples">Continue reading Dog Apples...</a><p class="font-family:Verdana, Arial, sans-serif; font-size:11px; color: #333333; background-color: #f5f5f5; border: 1px solid #c0c0c0; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 4px; display: block;"><a href="http://www.botzilla.com/blog/archives/000726.html#comments" title="Comment on: Dog Apples">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>PhotoRant</dc:subject>
       <dc:date>2011-01-02T12:34:54-08:00</dc:date>
     </item>
      <item>
       <title>Many Unreasonable Apples</title>
       <link>http://www.botzilla.com/blog/archives/000721.html</link>
       <description>SFO Another, more-recent Paul Graham lament about the lack of respect afforded &quot;straight&quot; photography. and a discussion(?) of the same essay/address, which oddly attributes a review of Jeff Wall photos to.. Jeff Wall? Misreading aside it has an interest list...</description>
       <guid isPermaLink="false">721@http://www.botzilla.com/blog/</guid>
       <content:encoded><![CDATA[<p><img alt="bjorke_MG_6114.jpg" src="http://www.botzilla.com/blog/archives/pix2010/bjorke_MG_6114.jpg" width="807" height="538" border="0" /><br /><i>SFO</i></p>

<p><a href="http://www.americansuburbx.com/2010/03/theory-paul-graham-unreasonable-apple.html">Another, more-recent Paul Graham lament about the lack of respect afforded "straight" photography.</a> and a <a href="http://www.harlanerskine.com/blog/2010/04/tonight-tuesdays-photo-art-tweetchat-contemplating-the-unreasonable-apple.html">discussion(?)</a> of the same essay/address, which oddly attributes a review of Jeff Wall photos to.. Jeff Wall? Misreading aside it has an interest list of conflicting viewpoints, like these:</p><p><a href="http://www.botzilla.com/blog/archives/000721.html" title="Continue Reading: Many Unreasonable Apples">Continue reading Many Unreasonable Apples...</a><p class="font-family:Verdana, Arial, sans-serif; font-size:11px; color: #333333; background-color: #f5f5f5; border: 1px solid #c0c0c0; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 4px; display: block;"><a href="http://www.botzilla.com/blog/archives/000721.html#comments" title="Comment on: Many Unreasonable Apples">Comments (0)</a></p>]]></content:encoded>
       <dc:subject>fStop</dc:subject>
       <dc:date>2010-12-19T05:37:21-08:00</dc:date>
     </item>
 




  </channel>
 </rss>
