Older blog entries for chromatic (starting at number 163)

Easy Mailing Lists:

Mail::SimpleList (perhaps not the final name) is ready for early adopters. You may remember it from an earlier diary entry.

It has programmer tests (of course), customer tests (a new feature I'm trying), and a README file that describes everything you need: your own mail server, a user account, a couple of other Perl modules, a .forward file, and resolveable extended e-mail addresses.

We've been using it successfully for a while here, but in packaging it up, I may have messed things up. The tests all pass, but I've been writing them long enough to know that's never the whole story. There are also plenty of features to add, but it's been interesting to write, so why not share with the rest of the world?

Uneasy Free Time:

I finished the book last night; it was due today. Ward Cunningham has very graciously agreed to write the foreword. For a little 80-page guide with no code snippets, it's sucked up quite a bit of time over the past several months.

In my copious work time, prompted by reactions to an author's first impressions of Python web programming, I've produced a short essay called What I Hate About Your Language. Only the title is intentionally provocative, I promise. I harbor no illusion about being the first kid on the block to realize some things, but there's room to discuss real issues about language features and philosophies. Hopefully it'll spark some interesting discussions.

Aside from the inevitable book-related stuff (remember, after you turn in your manuscript, it still has to be produced, copy-edited, proofread, indexed, proofread again, page broken, and printed), that leaves me with copious free time. I remember lots of little projects that need some attention. I'm tired tonight, though, so we'll have to see what happens tomorrow.

Representation:

amars, the people criticizing the Dixie Chicks are exercising the same rights as the Dixie Chicks themselves. Freedom of speech doesn't mean you're immune from having people disagree with you. It's always struck me as ironically amusing when people who say strong things complain about other people's reactions.

What I find more interesting is the debate over what an elected representative should do. There seem to be two main schools of thought. One says, he should follow the will of the people he represents because he represents everyone. The other says, he should follow his will because he was elected for his beliefs.

I'm not completely comfortable with either interpretation. (When I'm completely uncharitable, I'll say that President Clinton exemplified the former and President Bush the second exemplifies the latter.) That may be because I have severe doubts that any one person can be completely right all the time.

I can understand, somewhat, the idea that it's disenfranchising to be "represented" by someone with whom you disagree strongly. I don't really understand the notion that you absolutely must have someone who looks a lot like you to be represented sufficiently -- superficiality is the bane of representative democracy.

There was a point here, but it seems to have eluded me. Maybe it's still "the USA has never really resolved the debate over individual versus community interests."

Relief is...

It's a relief to write the last word of the last sentence of the last paragraph of the last chapter of a book.

It's quite a relief to write the last word of the last sentence of the last paragraph of the last revision of a book after a grueling tech review.

It'll be quite a relief to deliver a final manuscript after editing the whole thing once more.

It'll be quite a relief to sign off on the last typo of the last proof check.

It'll be even nicer to see the book in print.

That's eleven days to the next major sigh of relief. At least this time, I know there are more.

lvalue typeglobs:

I've always wondered if this would work, but never tried it until now. It worked on the first try. Does that say more about me or Perl?

#!/usr/bin/perl -w

use strict;

sub installsub: lvalue { my $glob = shift; no strict 'refs'; *{ $glob }; }

installsub( 'foo' ) = sub { print "Foo!\n" }; foo();

Of course, that's not bad enough:

for my $sub (qw( bar baz ))
{
    installsub( $sub ) = sub { print "$sub\n" };
    __PACKAGE__->can( $sub )->();
}

Worse yet, I have an actual factual practical use in mind.

apm:

I think the Waterbed Theory might apply. For example, I could explain Lisp syntax to my mother in fifteen minutes or so. It's very simple, just (f a b). However, the complexity that makes Lisp useful has to come out somewhere else. To be productive, she'd have to understand tree structures, code as data, car, cdr, list processing, and so on.

A language with simple syntax has to have a hefty standard library or it's not practically useful. The nice thing about syntax is that it's documented. In the case of Perl 5, we're talking about thousands of pages of standard documentation, indexed and searchable, organized by topic. Perl 6 will likely have similarly complete documentation.

Unless you're dealing with a program so very simple (or badly written) that it has no functions or modules or architecture, you're still at the mercy of the documentation or, failing that, the code itself. I'm not convinced you can really understand someone's code without reading it anyway.

If someone modifies the grammar in a Perl 6 module, you'll know. You'll have to read the grammar docs just as you would for any other library.

News is Pr0n:

For people who grew up watching war, it's time to live out the fantasy.
  -- News Producer

Was it Pat Cadigan's Synners that had the passage that described hundreds of television channels as one form of pornography or another? Some channels had disaster porn, with hurricanes, train wrecks, and car crashes. Several other channels had food porn, with recipes, slow, lingering shots of bundt cake, and the ubiquitous miracle knife.

I once saw a TV documentary that asked, "Why are American children so fascinated with guns?" Of course, they had slow, lingering shots of smooth, glossy black revolvers on softly-lit silk display stands. Ooh, sexy. Aah, forbidden. Why indeed?

To describe war -- and participating in war -- as a "fantasy" alternately frightens and angers me.

Open Source in Government:

Tomorrow, Oregon House Bill 2892 (also here) goes before the General Government Committee for discussion. If successful, it will then go before the Ways and Means Committee, then to the House floor for a vote.

I'm particularly interested in the discussion of open standards and document formats. Open Source and Free Software have several advantages here. The text of the bill mentions a few. Here's what I see:

  • Data will remain accessible where proprietary software might change document formats and licensing terms.
  • It is possible to switch vendors, as no one vendor can sell software to read documents of that type exclusively.
  • Citizens are free to choose software from several vendors to access public documents. It's possible they can run this software on their choice of computer at their choice of location -- home, work, a free lab, a library, a government office. This is immensely important: the cost or availability of a software package should not be a barrier to public involvement.
  • Where possible, the government should encourage development of resources for the public good. Support and development resources should go toward projects and knowledge that is freely accessible to the public, not locked away in one company or another.

Anything I've overlooked?

On Editing:

While I edit other people's work every day, I edit my own work much less frequently. In part, I write a lot less for publication than I edit.

My recent "hobby" has been a new book. The first draft is complete, and early, unofficial reviews have helped me improve great swatches of content. It's nearly time for the technical review, though, and I've been polishing individual sentences and paragraphs.

There are occasional gems I want to keep. It does often amaze me how I can read a paragraph out loud (to edit seriously, read out loud) and make faces at how painful my prose. There's a very clear line between "awkward" and "acceptable", and I can only ask "What was I thinking, to write such a thing?"

The line between "acceptable" and "accomplished" is much murkier. It is, however, much easier to go from something on a page to something passible than from a blank page to something.

Is programming similar? I do find it satisfying to clean up large chunks of murky, clunky code. There's also something highly satisfying about watching beautiful code emerge from the test-code-refactor cycle, too.

Bram: more rules about punditry at How to Write Like a Pundit.

154 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!