Saturday, June 14, 2008

Next Show Scheduled

The next show of my photographs (primarily, but not exclusively, the panoramas) has been pencilled-in for September, at the New World Deli & Café here in Austin, Texas. The Café is a lovely old place on the edge of Hyde Park, and should be a good venue. Now all I have to do is have a bunch more canvases made (a non-trivial expense), and hope that there'll be enough room for them all....

More details as they become available.

Sunday, June 8, 2008

Rule 30 Automaton Cylindrical Projection

This program generates and renders the output of Stephen Wolfram's "rule 30" cellular automaton. Like my previous implementation, the line of cells in which it is calculated wraps around at its ends, meaning that the line is really a circle. Unlike the previous implementation, which rendered its output in the standard two-dimensional matrix, this version takes seriously the fact that the line of cells is really a circle, and therefore plots the output on the interior of a cylinder, so the "wrap-around" behavior is visually explicit, and the output is, in effect, three-dimensional.

This is not necessarily a better visualization of the automaton's output, but it is different, interesting, and up-front about the wrap-around behavior. Make of it what you will.

Unfortunately, like my previous implementation, this one will also bring current web browsers (Firefox and 3.0, and Safari 3.1.1) to their computational knees. Once again, the computations being performed are trivial, but something about the graphics it produces overwhelms current browsers. The only browser I've tested that can handle this program even somewhat reasonably is WebKit, the open-source heart of Apple's Safari browser. (Download the latest nightly build.)

If your browser supports the Scalable Vector Graphics (SVG) standard, you'll see cylindrical projection of a Rule 30 one-dimensional cellular automaton here. Otherwise, it's time to switch to a modern browser like Safari or Firefox.

To start this program, click in the square above. To stop it—assuming your web browser will let you stop it—click in the square again. Because the program generates resolution independent graphics, it more-or-less goes without saying that opening it in a large window produces nice results.

Friday, June 6, 2008

SVG "Rule 30" Denial-of-Service

With my brain jammed in neutral the other day, I decided to implement a little program that I thought would be interesting, quick, and capable of knocking me into a productive mental gear. I got more than I bargained for.

What I implemented was Stephen Wolfram's "rule 30" one-dimensional cellular automaton, using SVG for the graphics, and Javascript for the logic. Between the innate simplicity of the automaton, and the fact that this implementation is only 192 cells wide, this program is computationally insignificant. Nonetheless, if you make the mistake of clicking in the display area below to start it running, it will bring Safari 3.1.1, Firefox and Firefox 3.0 to their knees. Their CPU utilization hits 100%, and they are rendered almost, or completely, unresponsive either immediately, or once the first 192 rows have been generated and scrolling is supposed to commence. In principle, clicking on the display area again should stop this program, but Firefox is so stuck it seems to respond to nothing but a forced quit. Firefox 3.0 will eventually respond, but it can take minutes. Safari 3.1.1 is more responsive than that, but still very bad.

If your browser supports the Scalable Vector Graphics (SVG) standard, you'll see the Rule 30 one-dimensional cellular automaton here. Otherwise, it's time to upgrade to a modern browser like Safari or Firefox.

This program does not try to consume all available CPU cycles. As mentioned earlier, it is computationally insignificant. It is also rate-limited to 24 updates per second. So, the varying speeds of the Javascript interpreters shouldn't make much, if any, difference to performance. However, I have yet to find a browser that can manage more than about three updates per second once the display fills and scrolling commences. This seems to be either a problem with their DOM implementations in general (a full display of 192 rows will typically be composed of about 9,200 rectangles, each one a DOM object), or their SVG implementations (which build on the DOM implementation), or both. In the context of modern computing power, it's hard to take seriously the idea that handling 9,200 essentially static graphics objects (and simple rectangles, at that) should be a problem, but for one reason or another, that is the case.

The only browser I've tested that handles this program at all gracefully is WebKit, in its most recent nightly builds. (WebKit is the open-source browser engine on which Apple's Safari browser is built.) Although the WebKit team announced earlier this week that they've replaced their Javascipt engine with a new one named "SquirrelFish" that is substantially faster than its predecessor, due to the computational simplicity of this program, I doubt that SquirrelFish is the reason for WebKit's better performance relative to the other browsers. I continue to think that DOM and/or SVG implementations are the key to this program's performance, or lack thereof.

Congratulations (seriously) to the WebKit team for having created by far the best browser I've tested, but, as far as this little program is concerned, there's still a lot of room for improvement.

One-Wheeled Vehicles

As anyone who knows me is aware, I'm no fan of motor vehicles. I believe that anyone who is experiencing "driving excitement" is doing it wrong. I modestly propose that the most effective automotive safety device would be a large spike mounted in the center of the steering wheel, facing the driver. While the utility of automobiles in rural areas is unquestionable, so too, I am convinced, is their ruinous effect on urban areas.

Nonetheless, I still have to pause to earnestly admire the work of Charles F. Taylor, the man who thought that the right number of wheels for a motor vehicle was exactly one. (My thanks to Jay Lake for bringing this link to my attention.) Thinking different is one thing, of course. Building one's ideas is quite another. But Mr. Taylor was up to the challenge.

Wow. Well done. I have no idea if there's any potential for a practical vehicle in his work, but I still have to admire it.

Having realized a few odd ideas of my own with, at best, mixed results, I can't help but wonder how Mr. Taylor felt about having hatched and realized such a remarkable idea, only to find that the world pretty much couldn't care less.

Mister, that's gotta hurt, but let me shake your hand. First round's on me.