The Gallery is OPEN!

A whole passel of my art can now be seen on the Gallery page.

Kudos to Gordon for pointing out IrfanView, which made building the gallery a breeze.

And in other news, Fanu Fiku: Premonitions starts online October 4th and will run weekly. As I get ahead/behind on Fanu Fiku, I may or may not try to get Death Wish finished in online comic form as well.

Hope yall enjoy!

Okay, OKAY, I *get* the *point*!

SO I’m sitting in a panel atAnime Weekend Atlanta 10 listening to the always delightful Piro talk about how drawing works for him, busy taking notes while sketching faces for practice in the margins.

Then the panel ends … and a young lady sitting next to me asks me to do a sketch, because she liked what I was drawing so much. Then someone else commented on my t-shirt. And finally, out of the blue, while I was talking to a distributor of the fanfilm “Batman vs. Joker vs. Aliens vs. Predator vs. more Aliens vs. more Predators”, he asked, “So, do you have a web site, and is any of your stuff on it?”

So, OKAY, I get the point! I’ll put f@nu fiku and my other art online already. The gallery is half done, hopefully to be finished by Wednesday, and the front cover of Fanu Fiku will go up on Monday.

Stay tuned…

Ok, I forgive you…

… “Sky Captain” wasn’t that bad.

I saw it again (all of it, this time) with my girlfriend, who wasn’t too surprised I didn’t like it … she likes escapism, I want realism. But as time went on the sheer visual beauty of the movie, wooden acting, and tin dialogue faded in my mind, and I was struck by how many beautiful ideas there were in the movie. How many clever touches it had. How many little pieces just fit together. How well, despite its flaws, the overall story was told.

And then I ran across this little snippet on how they made it. and was struck by the love the director had for his subject: the skyhook on the Empire State Building that the Hindenberg III docks on was real … the Hindenburg III was really on the drawing board … and many of the other things in the movie were from Mr. Conran’s childhood dreams. And so he buckled down, with a cheesy computer and no funds, and made his dream fucking happen. You go with your bad self.

So, I forgive you, Mr. Conran, for the flaws in your movie: you really did turn out an amazing piece of work, and I apologize for my snap judgement. But, please, given the amazing skill you show in every other area, please, please, please write and direct some small plays where you focus on dialogue and work with real actors BEFORE you’ve storyboarded out your next multimillion dollar movie.

I promise you, if you turn out several small shorts just for you and your friends in a context where it’s safe for you to go out on a limb and try and fail, then your next movie will kick “Sky Captain’s” butt.

Perhaps I was too hasty…

… for others who just saw “Drek Captain and the World of Stupidity” questioned whether I was seeing the same movie they were. I can’t answer that; all I can say is that what I was watching was the moment visual style finally vanquished intellectual substance. Perhaps I was too hasty. Certainly the movie was visually imaginative.

But I guess after September 11 I want a little realism in my escapism: I think wonderful tales told of heroes who save the day for all the little people who can only sit back and do nothing end up with the little people who did nothing ending up dead.

Because there are no heroes.

If you want to save the world, stand up and do it yourself.

My First APL Program

As a side project right now I’m investigating computer languages — not just experimenting with Perl vs. Python but trying to expose myself to different families of languages, such as functional, logic, imperative, object oriented, and obfuscated.

Most recently, someone mentioned that array languages are the least

widely known family — perhaps because the founding language in the group,

APL, was written with a nonstandard character set. Perhaps the most terse

of all programming languages, APL spawned a series of children, like J and K,

which, even though they can be written in a normal alphabet, retain APL’s

essential terseness — or, dare we say, obscurity?

I plan to learn J. However, before I did so, I committed myself to learning

at least a smidgen of the original APL, so I could see how the language was

originally intended to work and look.

Here’s my first APL program, designed to produce a Vigenere tableau:

Note the code isn’t in the standard ASCII character set, so I had

to represent it as an image file.

The heart of the code is the central box of the next image. This should read as:


disclose (( -1 rotate (indexList (shapeOf Y)))
(outerProduct rotate) (enclose Y))

and executes right to left:

To translate into pseudocode:


// Assign the alphabet to the variable Y
Y = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 
// Now perform the following:
(unbox
((outerproduct rotate)
(rotate -1 (enumerate (length y)))
(box y)
)
)
 
// This is the moral equivalent of:
// (1). Treat array Y like a "scalar" variable
boxedY = box(y)
 
// (2) Find the length of Y - in this case,26
lengthOfY = length(y)
 
// (3) Get an array from 1 to the length of Y
// We will use this (1 2 ... 26) later to
// rotate the alphabet to the side
list1toY = enumerate(lengthOfY)
 
// (4) Rotate list by one so that the first
// row is a "no-op" rotation: (26 1 2 ... 25)
// (I should have just have subtracted one
// from each list to get (0 1 .. 25), but
// it's just my first APL program!)
rotateAmounts = rotate(-1, list1toY)
 
// (5) Create a "mapping rotate" function that takes
// a list of integers as its first argument and
// rotates each element of its second argument
// by the supplied integer.
// We had to "box" Y earlier because APL by
// default treat each of its elements as a one-element
// array.
mapRotate = outerproduct(rotate)
 
// Now create 26 copies of Y, each rotated by the amount
// specified in the rotateAmounts variable, and collect
// them all into a list. This is morally equivalent to:
// list(
// rotate(26, boxedY),
// rotate( 1, boxedY),
// ...
// rotate(25, boxedY)
// )
rotatedY = mapRotate(rotateAmounts, boxedY)
 
// Now "unbox" the rotated list, which takes the
// list of lists of rotated Ys and turns them into
// a matrix or grid rotation
return unbox(rotatedY)


The idea in my mind was to take an input array and print

a diagonalized rectangle with it. With the alphabet, this

becomes a Vigenere table — once the “indecipherable cipher”,

now a trivial matter for any modern computer.

With a different string, like “01” or “_[]” (reading the two

brackets as the APL Quad character), and a suitable change

in length of the output, it becomes instead a checkerboard:

Deciphering that is left as an exercise to you, dear fanu.

Cut me some SLAC!

I just had some pictures developed and found these gems from my November 2003 trip to the Stanford Linear Accelerator:

Some of the other pictures developed are so old that, well,

let’s just say that half the couples in one Christmas shot are

either getting divorced or have been for some time now.

Oy, do I need a digital camera.