2005-02-20

Javascript tip of the day

For all the annoying cases where javascript gives you an object with numeric indices but which isn't a proper Array object, you can upgrade it to become one using Array.prototype.slice.apply(object) It's more cruft than had the language already provided us with true arrays (in cases like the arguments variable bound in functions, the window.frames list and the various arrayish return values of numerous DOM methods, to name a few), but it's one less needless javascript level loop to do the transition.

And why doesn't javascript come with your basic set of higher level methods like mapcar and friends? Sure we can cook our own, but it's as if the language tries to imitate a blunt stone age axe, when it's capable of being a real power tool, with just a few touches here and there to get a proper class library. (Is this some misguided attempt at making the language more graspable to a web developer in diapers?)
Categories:

2005-02-18

On geek nostalgia and fatherhood

Sometimes I miss my more active days on the web, and wish I had a blog and spent more time doing random hacks for fun, and silently publishing them where someone sooner or later might drop by, catch on, embrace and adopt them for their own joy. I suppose most of the toys I played with at the time never did catch on and spread, but my first published scriptlets gained a happy crowd at the time and a few survived, sometimes just as ideas, but to some limited extent the code did not even rot with time.

The one thing I did in those days (late twentieth century), though, that still spuriosly returns to me like some magical boomerang through time, is the 404 page I made myself. It's a tribute to Doglas Adams (while he was still alive), where you get a page where a Marvin travesty sulkily types away at the visitor in a text field about how awfully sorry he is not being able to serve that particular file, and how generally sad it is to be a forgotten-about manic depressive web server yadda yadda yadda. You got the gist of it I'm sure. I put it there, and mostly forgot about it. At least until it started spreading to other poor web servers. They were catching that manic depression like the flue. And it was great fun to behold. (In a warmly kind of way, bless their poor souls.)

At first, I got a fan mail or two about it, but since I had not left any notice about crediting my work in the source code, or visibly for that matter, or indeed any reference to myself at all except for my webmaster contact link, the replicas were untraceable back to me and started a life in the free all on their own. I think I once contacted some website admin that had credited his 404 to himself, or maybe asked for feedback on it or something to that effect, curious about whether he received any, but decided to let my baby take on whatever niches he'd find himself without my fatherly eyes on him.

He still pops up here and there, but by now it's just a skeletal heritage -- few are the instances that stay with the original message (I'm quite sure mine was monospaced rather than using a proportional font), but on studying the code, it's always very obviously still my code. My type_text() method, the Javascript 1.0 safe code and all the rest, intact. Some change a few of the speed and delay variables I left behind, most add some message of their own, some make stylesheets to improve (or ruin) the teletype looks. Today a very tasteful example caught my eye, and again got that nostalgic feeling to find its way back to me, like so many times before.

I just did a google search for some of the code bits, and found about a hundred pages, some from tips and tricks sites offering tutorials on how to customize and use the code on your own pages, some explaining in German how to do it, with very nicely annotated source code, one substituting the textarea for a div tag, missing some polish to get newlines to work in the switch, one rather close to the original, but also pointing out that Douglas Adams has died.

I wonder if and how some note about me in the source would have changed how this play with words, code and web standards would have swept across the globe. Maybe I would have seen more mail traffic about it. Probably both in the form of the kind of joyful notes I did receive, and in the form of questions on how to adopt it and get it to run for some particular target environment. I suppose I would not have been much happier with than without that feedback, or perhaps felt bad about not responding to much of it. It is still a lot of fun to occasionally be reminded about it on random encounterns -- it's the kind of thing friends or net acquaintances occasionally tend to smile at, spread among themselves and end up broadcasting my way, too, unknowing of my relation to the code, and it is still about as fun as the first few times I saw it. It is the really simple ideas that tend to live long. The same thing applies to my scriptlets for comfy web navigation; they, too, show the same signs. In very rare cases, a complicated tool it takes hours to craft, will still be useful long afterwards, but mostly it's the small and simple ideas that live on.

If (or should I perhaps more likely say "when") I ever do a fun thing like this one again, I think I will make all the paramaters broken out of the code for easy customization. In the world of the web, the precious few who know programming are most frequently also the precious few who do original work. In a way, I think that gives us the responsibility of making our work easily reusable by the masses. I'm sure that is just as appreciated as the idea itself to all the smiling visitors out there. Of course, we can rigteously selfishly also ignore this Someone Else's Problem and do just as well, ourselves. But it's not really my style. If something should be worth doing, it should be worth doing right, and while I might be able to live up to that standard with my own work, when other players get in to the picture, I can only make it so much more or less likely that they also will. I think I prefer giving them an easy climb, if it doesn't cost me too much.

Oh! One more thing.

I'm so depressed.
Categories:

2005-02-14

Squeak

After reading A Conversation with Alan Kay, I got curious about the programming language Squeak, and its Smalltalk heritage. While the interview does wave past the most interesting bits, it did toss out a few interesting thoughts worth lingering at. Just like how it would have been well off to linger more at some unstated topics. For instance -- assuming neither Intel, Motorola nor "any other chip company" know the first thing about microprocessor architecture excellence (not an entirely improbable statement to hold some amount of truth) -- please back that up with some in-depth discussion about what was in fact so good about the B5000 design.

So in sifting through the article, the most thought provoking statement was not much on the topic of tech stuff, but on culture, and pop culture, in particular. While I have not to date thought of a programming subculture as pop culture, it obviously has been since the home computing boom and probably will stay so, if not indefinetely, then at least for as long as the world of programming has any amount of romance and intriguing possibilities about it to offer the youth. Kay's observation "Once you have something that grows faster than education grows, you're always going to get a pop culture" struck a chord in me, in formulating why Perl, PHP, Java and mostly any other lesser weasel so easily and seemingly randomly get wide spread and recognized at the expense of better options, that are almost always on offer. The little perfectionist in me has festered on the subject for a fair amount of time, failing to make the connection to schools and learning institutes, despite actually aiming for the teaching profession myself.

Pop culture isn't about quality, but of perceived quality. It takes a working knowledge of a field to find and judge quality, filtering away lack of quality at a glance. Or, as Harry Järv (wise keeper of many books) stated it: "to learn to appreciate quality [in books], the only way is to read a lot". Quality or junk; without taking it all in, you won't get any frames of reference to relate to, and you will end up embracing something on random merits when browsing through your options. It applies just as well to music, as to books, art, or indeed the art of programming.

To get back to the article, though, it did rouse some curiosity about Squeak, and after a brief microfrustrating search navigating the site for a language specification, or any kind of related facts about it, I ended up with some overview outlining some history and theory of both languages. After some initial (mandatory?) waving of e-wangs and similar territorial marking rituals, the document lets the prestige levels fall to constantly berating C++ (or Java) in talking about how Smalltalk and Squawk do things instead but in a less smelly fashion. Fair enough; the document probably loses a few readers on making skirmushes of every difference between favourites and the unknown player, but in not being too attached to either target, impact was limited on my part.

I suppose this attitude is one of the random factors limiting the spread of Squeak, that I think the Python guys have addressed much better. At least my gut feeling says the Python people manage to strive for excellence and adopting raisins from other camps without making enemies this way. Of course this article doesn't have to represent the language camp's disposition, but those kinds of attitudes unnervingly often spread from a source deep within the group and then stay cemented. Let's hope this isn't the case, if Squeak is indeed something worth more than a brief surveying look. I'm not convinced yet, but have only covered half the intro too.