March 10, 2004
Don't Label that CD-R, Brand It

From the "why-didn't-I-think-of-that" department: HP announces a new drive that labels a CD or DVD by etching the label onto the surface of the media, with the same laser that's used to write the data:

Looking for a way to label your multitude of CDs and DVDs neatly and efficiently? HP has come up with an elegant answer: Use the same laser that already burned the data to make a label on the flip side of the disc.

A technology dubbed LightScribe enables drives to burn a silk screen-like, high-contrast label on the upper side of CD or DVD media bearing a special coating. After completing a data burn, users will be prompted to flip the disc over to burn a label onto the other side.

Posted by Kevin Shaum at 12:03 PM (1 comments)
March 13, 2004
The Purpose of Terrorism

In the wake of the attacks in Spain, Fareed Zakaria reminds us who it is we are fighting ... regardless of whether it was ETA or Al Qaeda that was to blame:

"The purpose of terrorism," Vladimir Lenin once said, "is to terrorize." Like much of what he said, this is wrong. Terrorism has traditionally been used to advance political goals. That's why a rule of terrorists used to be: "We want a few people dead and a lot of people watching." Terrorists sought attention but didn't want people to lose sympathy for their cause.

Yet with many terrorist groups -- like ETA, like al Qaeda -- violence has become an end in itself. They want a lot of people dead, period.

Posted by Kevin Shaum at 10:56 PM (0 comments)
March 18, 2004
Why I Hate Scheme

jacob likes Scheme. I don't. If you care, read his piece on kuro5hin, then read on here for my reasons why.

So Lisp/Scheme lacks iterative looping. How is this a good thing? Why is it necessary to grasp the idea of recursion in order to write a program that counts to ten? Call me a knuckle-dragging barbarian if you must, but it seems to me that any language where a beginner has to spend an hour in the Krell mind machine in order to grok how loops are done is a bad language. Easy stuff should be easy; obvious stuff should be obvious. Not "elegant", not "enlightened"... they should be plainly, stupidly easy to grasp.

Perhaps it's just me, and my lack of familiarity with the language; but it seems to me that Lisp/Scheme is actually, inherently, harder to read and understand than procedural languages, on both syntactic and semantic levels. Yes, you can pack a lot of meaning into a small, tight knot of nested parens... again, how is that a good thing? Isn't the real purpose of programming not communicating with the machine in as few bytes as possible, but rather, communicating with other programmers with as few misunderstandings as possible? Is tail-recursive looping, bound within five layers of nested parens, really anybody's model of clarity?

All right, I understand that there are some killer concepts lurking under the hood... higher-level functions, memoization, currying, etc. Yeah, I've seen Mark-Jason Dominus' talk at the Perl conference, I understand this.

But why bury it within such impenetrable syntax? Why leave out something as basic as iterative looping, and then claim that this missing feature is a feature? Why post a "You must be at least this clever to ride" sign on the language? Why not package these advanced concepts in a more approachable form, alongside more conventional constructs?

Moot question, I suppose; the Python and Perl 6 folks are doing exactly that.

Posted by Kevin Shaum at 11:55 AM (0 comments)