Press "Enter" to skip to content

Perhaps I was too hasty…

centaur 0
... 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

centaur 0
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!

centaur 0
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.

Resident Evil 2: Aqualitylapse

centaur 0
I and my old high school buddy William just came back from seeing "Resident Evil 2: Apocalypse".

And while there were many things I enjoyed about the movie, and even think it had the skeleton of an interesting plot, both William and I had the same reaction.

Simultaneously, we *tried* to excuse its suckitude by dissing it as a "B" movie, but immediately realized it was at best a "C" movie.

"Aliens vs. Predator", how we miss thee.

(title)

centaur 0
OK, now we've lit this candle. This isn't the permanent form of this weblog --- I've allocated the site and software for a full-blown wikiblog upcoming soon --- but at least now the blog and the hand-generated site are integrated, and I can post at the click of a button. Woo hoo!

And to tide you over, here's a pointer to where I get my physics news.

(title)

centaur 0
John Wiseman over at lemonodor noticed this amazing Periodic Table of Perl Operators put together by Mark Lentczner:



Pretty inspiring to a language designer, and a great example of information design for everyone else.

The Alternate Phantom Menace

centaur 1
Somewhere in an alternative universe, there is a version of Star Wars: Episode I: The Phantom Menace starring Haley Joel Osment as Anakin and Robin Williams as Jar Jar.

And it rocks.

In that universe, George Lucas broke his hip just before filming began and handed the directorial task to his good friend Steven Spielberg. Busy with his own projects, Spielberg hired M. Night Shalayman to smooth out some problems in the script, and Shalayman in turn introduced Spielberg to Osment, starting a collaboration that would later continue in Spielberg's critically acclaimed movies Artificial Intelligence in 2001 and Harry Potter in 2003.

The real turning point in the production was the hiring of Robin Williams to replace Ahmed Best as Jar Jar Binks. Spielberg was reluctant to replace another of Lucas' chosen cast but after repeated attempts to tone down the character, Best's creative differences with Spielberg reached the breaking point and he quit the production. Almost simultaneously, Lucas suggested Williams to Spielberg for some role after seeing him perform at a charity fundraiser at Skywalker Ranch, and Williams heartily agreed.

The completed film was two and a half hours long and made over seven hundred million dollars in its domestic release. Lucas, Spielberg and Williams threw their marketing weight and star power behind the film, but it was Olsment's Oscar-winning portrayal of Anakin Skywalker that generated real audience buzz. Fleshing out a role already greatly expanded by Shalayman, Olsment brought quiet dignity and heartrending pain to the boy who would be Vader, and became the youngest winner of the Oscar for Best Actor.

While Star Wars: Episode I: The Phantom Menace would go on to win nine academy awards, the biggest upset of Oscar night was Robin Williams' shutout for his portrayal of Jar Jar Binks. Acting largely from an improvised script, Williams brought both gravity and humor to the role of the exiled Gungan warrior --- providing a much-needed element of comedy in Spielberg's often grave treatment of the fall of Naboo --- and later proved the perfect foil for Olsment's tortured Anakin in his moving death scene at the hands of Darth Maul. However, since the physical appearance of Williams' character was computer generated, he was technically shut out of the category of Best Supporting Actor, despite the extensive write-in campaign on the part of the Academy voters.

After recuperating, Lucas returned to the executive producer role on the Star Wars saga. Despite his injury, he had remained intimately involved with the production of the movie and was pleased with the final outcome, despite his initial resistance to changes made by Spielberg and Shalayman. Shalayman and Spielberg both attempted to bow out of the saga, reluctant to continue without the magic of Williams nor Olsment, who could not realistically return in later sequels. However, after intense personal lobbying Lucas convinced both Shalayman and Spielberg to return to the project, and work on the sequels began in earnest.

Episodes II and III are being filmed back to back in Tunisia and England as we speak. However, despite the critical buzz already being generated about the project and the remarkable collaboration of the three directors, there is little doubt that the Star Wars creative team will be hard pressed to top Jar Jar's poignant death scene in Anakin's arms. As Obi-Wan Kenobi and Qui-Gon Jinn watched helplessly on, young Skywalker is first touched by death as Jar Jar utters words that echo later in the series:


"Remember, Ani. Inna Force, I be with you always."


-The Centaur
Renaissance Engineer

(title)

centaur 0
Interestingly, Van Allen (of the Van Allen Belt fame) now questions human spaceflight:

Space Science Pioneer Van Allen Questions Human Spaceflight

The quick no-bullshit translation of this kind of crap is ALWAYS the same:

"Please spend more money on my kind of programs!"

I just sat in on a NASA talk about robotic exploration. Now, it's true that
a robotic probe can do a great flyby of a moon. But when it comes to
actual planetary science, the quote went:

"A robotic probe can do in an afternoon what a human geologist
can do in 45 seconds."

What really irritates me about the kind of evil we're encountering
in the anti-space-exploration movement is its upending of basic
human values. Your tax dollars, my tax dollars are going to fund
both space exploration and space science. But space science
is fundamentally USELESS unless it serves some human goal.

In other words, if we're not going to GO there, don't waste my
money futzing around taking PICTURES of there, because,
"at the end of the day", all you're trying to do is kill human
spaceflight so you can keep taking money from me to pay
for your comfortable academic chair.

Get a life.
-the Centaur

Now this is somewhat sick…

centaur 0
Now, this is somewhat sick ... as soon as you
provide a nice feature for your users, like a
wiki, you run into asinine people who will
abuse it for their own purposes (follow the

Nigritude Ultramarine and the Wiki Sandbox Effect

This is why shopping centers have "no skateboarding"
signs and the BP on North Avenue closed off part
of its parking lot where the motorcycle clubs used
to pull in for their pit stops ... not because any one
person doing it is bad, but when enough people
take advantage, things get screwed up.

At least this guy realized what he was doing was wrong:
Wiki Sandbox Morals

Why isn’t there a naming convention for APIs?

centaur 0
I was working on an API and had trouble picking a name for
a particular operation (which we'll call, say, "getCurrentText"
for sake of argument). TheFullyExplicitName was a little long
and unwieldy and I hve vry strng f3l'ns agst Un*x stle abbrs,
so I wanted to derive a simple text name that fits with the
rest of the API (read, readLine, isMoreNeeded).

So I ferret around on the web and find a few interesting
resources:

Java Collections API Design FAQ

API Design with Java

but no good resource for overall API names.

It seems to me there should be a standard lexicon of API
names. Just as there are standards for names in given languages
(e.g., getX/setX in Java, get/set properties in C#, -p predicates
in Lisp, isX for predicates in Java-like languages, etc.) there should
be standard names we can use for APIs with standard definitions

read/write or read/print

open/close

clear

iterator/hasNext/next

and so on. I guess there need to be two parts to this library:
the semantic list of terms that are common to many APIs, and
standard names that have maximum usage across the API's
semantic contents.

Anyway, just rambling.

Blogger gets a Second Chance

centaur 0
Ok, I don't have a lot of time to post --- we're in the middle of a software release and things are pretty tight. But I just fiddled around with alternate blogging software only to find that my expensive hosting provider (sounds something like "Worthfink") is on a version of Perl so old that the OddMuse software (used to run the excellent Georgia Tech Taido wiki) will not run.

So blogger gets a second chance.

12:23pm hit return.