Cookie Notice

As far as I know, and as far as I remember, nothing in this page does anything with Cookies.

2007/10/30

Reading Beautiful Code, Chapter Two ...

I was reminded of this by reading an article on keeping all your important files aligned with Subversion. Chapter two is on Subversion's Delta Editor. Delta means change, and Delta (&916;) is math for change.

I cannot claim that the beauty of this interface was immediately obvious to me. My quick read of the interface sees tight but well-commented code. I'm hesitant to dive further in, as I'm already lots of review behind. The part that I think is most worthy of comment, right now, is that it's an interface. This differs from previous standards for code beauty (the author lists Duff's Device and rsync's checksum as examples) because it's not an algorithm, and because it's longer than what would fit on the back of an envelope. Five pages in the book, mostly comments. But the beauty of Perl that I see every day is that I can abstract, for example, the process of downloading a web page from a series of network pokes to something close to get($url) ;. If the foundations are solid, you can build on them. But nobody normally looks and says "My, what a great foundation."

Exclaiming "Mea Culpa! Mea Maxima Culpa!" ...

On Thursday, I said I would do one chapter a week.

On Friday, I said I'd do Chapter Two over the weekend.

On Monday, I failed to do anything.

I am in a state of sucking wildly. Suckety Suck Suck Suck.

At least I admit it.

And I'm putting the book on my desk right now.

But I'll mention two things.

First, there's a Perl program that replaces the "READY" text on your office's big HP printer. It is easily adaptable to, for example, take a string of weather information pulled from Weather Underground or whatever source you choose. The author chose Geo::METAR , but I found that too verbose for my purposes. And I am considering creating a module for HP Printer Job Language communication. It'd be my entry into CPAN!

Second, A post on O'ReillyNet brings up an interesting question relating to database inquiries and, as it turns out, a weakness in Perl's sleep. Well, limitation, at least.

2007/10/27

Expressing how cool I am...

I stood 20 feet from Gene Cernan and Neil Armstrong. The first and most recent Boilermakers on the Moon.

2007/10/25

Reading Beautiful Code, Chapter One ...

This is Brian Kernighan's chapter, on Regular Expressions. This amuses me, because Regular Expressions are widely considered to be an ugly thing. More than just ugly, too. "Some people, when confronted with a problem, think 'I know, I'll use regular expressions.'" wrote Jamie Zawinski. "Now they have two problems." I'm not there. I can read Perl-style regular expressions,

(I'll drop into an aside here and complain. Why is it that Perl has begun to complain when I write something like this:
my $foo = '' ;
print "XXX" if $foo =~ m{xxx}mx ;

????
Seriously, if a string has nothing, it clearly will not have the string xxx in it. '' should no more pop up an error than 'aaa' should.)

This chapter focuses on an implementation of a regular expression engine written by Rob Pike for the book The Practice of Programming. Chosen because it's a clear usage of recursion that isn't Quicksort or walking a tree. If I was Norm MacDonald, I'd note that programmers love recursion like Germans love David Hasselhoff. I suppose I might anyway.

But it's clear that Kernighan is fairly uncomfortable with the concept of beauty as applicable to computer science. He says "elegant" and "novel" and "compact". Those are three common metrics for beauty, but then, the standard of beauty would be Ingrid Bergman. She's beautiful, true, but hardly the only standard.

2007/10/24

Working on a book review ...

So, I've been meaning to review Beautiful Code. I can give you the capsule, but not the deep. Capsule:
Beautiful Code is not the kind of book I normally go to O'Reilly for — it will not tell you how to code beautiful — but it helps you thing about your code in a deeper, better way, and you will be better off for having read it.
But I do need to do more than a capsule. I need to do a bigger thing.

Elsewhere, I've done memes and mindless link propagation. I will try not to do that here. But the last two really are. Well, yes and no. Revision3 hosts videos. Videoblog videos. One of the video blogs is systm, who talk on tech issues. For the most part, think of LUG meetings on video. I was sending myself a reminder to check out the video on Asterisk, which is a Linux-based Open-Source PBX. If you ever thought "I want to have my own voicemail setup", Asterisk is what you need. Anyway, that's that.

The other thing is an inexplicable looped video clock thing featuring dancing Japanese women in coulottes. It seems it's there to sell sweaters. I like the music, but can't control the volume, so I turn that off, and there's something unseemly about leaving a screen worth of dancing Japanese girls running all day, even if there isn't as much as a bared midriff (as far as I know), so I don't stay on long.

So, it is my endeavor to blog on reading a chapter a day (weekends excluded) until I have a proper review of Beautiful Code.

Telling the world ....

From the first time I tried using an external mail-reader, I became convinced of one thing.

POP3 sucks. IMAP rules.

Well, rules enough. In comparison. I still preferred pine and a shell.

Then GMail came. And I tried it, and it was good. But it was Web and POP3, and POP3 sucks.

I did the web interface for a while, building rules, building folders. The POP interface ignores those rules, ignores those folders, so, in Thunderbird, I had to recreate all the rules and folders I had built in GMail. Which sucks. Beyond, of course, the inherent suckiness of POP.

Now, GMail is offering an IMAP interface.

I don't know if it'll do everything I want it to. Strictly speaking, if I make a DrDobbs folder in GMail and a rule to put the Dr. Dobbs mail in that folder, I want whatever mail interface I have to respect that. So, we'll see.

Of course, nothing beats having Procmail or MH. (I prefer the rules language for MH, but SpamAssassin works with Procmail, so I use Procmail.) But if your mail host disallow executing abstract code triggered by email, then some sorting and IMAP's the next best thing.

2007/09/04

Penguins are not only Linux


This is a penguin from a bio company I got swag from. More later.

This was first a phone-blogging exerciese, and yes, it seems like I can't keep my phone company from adding a lot of useless text.

Installing Ubuntu @ Work ....

I had a momentary hitch, where the partition mojo wouldn't work because I had the drive I wanted to partition mounted. Surprised that didn't work.

Been thinking recently. A recent Slashdot article asked "What would you change in Linux development if you could?" It made me consider the changes I've seen in Linux.

I first started dealing with it as an undergrad, around 1998. I made a 386 router (with great help from friends) and later had my work box at ECE running Red Hat. I had been using Solaris workstations and servers before, and, as a user, the only difference I really noticed was that both GNOME and KDE looked lots better than CDE. And just got better.

I can see some differences in stark relief, because my main connection to Linux during my time working at the clinic was my account on CSociety, and during that time, lots changed. Linux ~2000 was close to a classic workstation/server configuration. It was an OS that loved to know who it is and where the next bit, the next watt and the next file were coming from, and where they should be headed. Linux ~2007 is lots more laptop-friendly. Plenty goes to advances in hardware design, especially 802.11b and so on, and in 2000, DHCP was new enough that a friend (who I always trust as a Linux hand) needed to install it at an installfest to make his machine work), and it's part and parcel now.

The biggest and coolest thing I've seen recently is FUSE, or Filesystem in USErspace. As a user, not root, I can check out my local SMB network or mount UNIX filesystems securely over SSH. It's just the coolest thing. The one thing that, given an attempt to be mobile with 2000 technology, I would've asked for. With DHCP, Linux can work out where it's bits come from and go to. With FUSE, it can work at user request to more and more dynamically interact with whatever environment it meets. That's so cool!