Older blog entries for jbucata (starting at number 11)

When I checked Advogato today, I noticed that I'm now a Journeyer! I guess I have robocoder to thank/blame for my new position. (I can't tell how much influence gilbou had in giving me this rating. raph: Can we get something like the diary ratings report for certifications?)

I've had some thoughts on the whole certification process that I want to write up at some point--but <story of="my life">I've got too many ideas for the free time I've got</story>. Triage, triage...

Galeon: I apt-got Galeon a few days ago. Ignoring that Galeon has a few more bugs that I trip over than Mozilla did, I'm very impressed with it. Mostly the bookmark and tab management are what I noticed. Session saving is quite interesting too--especially after a crash!

This is the first Gnome application I've really used (occasional use of gaim doesn't count), and I'm impressed with Gnome, too. I'm otherwise such a text mode/command line junkie that that surprises me... I started thinking a bit about this after reading this article, and I'm now starting to wish for more integration between my comfortable command-line environment and GUI applications like this. It ties in a bit with my remarks here.

In particular, I really wish for a "gmutt". There are two things in particular that I'd want before switching to a GUI MUA while running in X:

  1. Having the same power/features available in the GUI client as in the text client--basically means bringing a GUI client up to Mutt's level
  2. Having the same settings in both clients--using the same mailbox format is the easy part, but I'm thinking about aliases and other settings that my .muttrc currently has
  3. (Nice but maybe not necessary) Being able to use the same editor (vim/gvim) in both clients

djm: See this article in addition to the above ramblings of mine :).

abg: I like it. You've got a few two-syllable words in the list though. At work we've got some DNS addresses that are about a factor of two longer to type (though perhaps easier to remember) than the IP address would be. If you go out on the Internet it's not hard to find other, more egregious examples. Makes you think.

How about sorting down the word list so that if you take any anagram of the 12 letters (or more--personally don't see the need to limit it to 3-letter words as long as they're one syllable), they sort uniquely down to the encoding of one IP address? Makes for potentially more meaningful mnemonic names for certain sites if one is feeling creative with what the base algorithm produces.

On a related note...

yeupou: Looks like you've got the makings of a full Advogato article there. If you extend and polish up what you've got, don't confine it to just your diary...

tromey: Hmm. So you're saying that the ragtag band of developers has to give the large CMM-level-X corporate behemoth how to implement software processes? Am I the only one who sees the irony in that? :)

I agree, though, they need to be better enculturated to our way of doing things. (Hope that's an actual word; Onelook seems to think I just invented it.)

Found a bug in Perl 5.6's handling of lvalue subs, while working (at the last minute) on the solution for last week's Perl Quiz of the Week problem. foo() = 'bar'; works fine when the program is run normally, but become a no-op when run under the Perl debugger. I know the feature is labelled "experimental", but...

"Allez Cuisine!": Got back from the Detroit area tonight. While I was there I grabbed the videos of the Iron Chef marathon they ran last year at Thanksgiving. I'd taped them, and my high school/college buddies and I watched some, and I kept the videos with Mom since I figured I'm more likely to watch them with that crowd. Turned out in the intervening year, I kept saying to my local friends that we should really get together and watch them sometime, as soon as I get the tapes from Detroit... and of course the few times I visited Detroit during that time, watching Iron Chef was just about the furthest thing from our minds.

After getting home I watched the Cuttlefish Battle, and then popped in the 21st Century Battle, which included the Bobby Flay rematch. Wow... that was exhausting. The Cuttlefish Battle helped me get warmed up, but the 21st Century Battle was about 15 degrees (Fahrenheit) hotter.

I'm a bit concerned that in this respect, Iron Chef is like eating spicy food: You eventually get acclimated to a certain level, and you need more and more to keep getting the same level of enjoyment. So I might need yet another special event, taken up yet another level, to satisfy me now that I've tasted this.

...Naaaaaaaah.

pphaneuf: Heh. No, I actually spotted it on Wiki. It's a small world [Wide Web] after all. Maybe sometime soon I'll get to really Read The Fine Articles.

osullivij: Well, Ruminations on C++ has three mentions of the FTSE, but I think I got it from reading his regular column in C++ Report back in the day. I get the impression that he just coined the term for it.

Gnome: Saw this article on LinuxToday. I like the idea. It helps that I'm thinking about my CCM (Computer Crazed/Challenged [and still Windows-using] Mother), whom I'm going to visit imminently, when I read it. It's also apropos given the recent Mozilla usability flame skirmish.

pphaneuf: Interesting. I read up a bit on it but I don't have time to delve into it very deeply right now--I have to get to sleep soon. But I'll indulge in some random commentary:

It looks like you subscribe to the Less is More/YAGNI philosophy. Since you're going as XP as you can, the latter makes sense.

It also looks like you're trying to use Andrew Koenig's Fundamental Theorem of Software Engineering: "Any software engineering problem can be solved by adding a level of indirection." One thing I've always wondered about that is whether you can, by adding a level of indirection, solve the problem of having extremely poor performance as a result of having too many levels of indirection. It actually looks like that's what you're after, though: "XPLC itself won't have anything in it related to remoting, but I intend on having a framework to support remoting available separately...." So instead of either forcing the users of the system to have to deal with a system that's too simple to meet their needs (forced local/GDI), or too difficult/bloated to be workable (forced into CORBA), you let them choose which of several approaches they prefer. I like it...

I wonder if you can somehow use that same approach for your other "controversial" design decisions: Not including exceptions nor supporting threads (if I read right).

One thing that concerns me is that the abstractions will leak. In other words, designing everything now to assume a local address space must necessarily break when remote objects are added into the mix--if object remoting is a goal, it turns out that "you needed it" all along, and bolting on a framework later won't do the job. (I don't know XP well enough to know how the other practices balance YAGNI out, so this might be something you've already accounted for.)

Thanksgiving: At the relative last minute, I decided to go visit Mom & friends for Thanksgiving. I managed to get a decent rate on a flight leaving Thursday morning and coming back Saturday evening.

In an excessively circumloquatious E-mail to an old friend of mine and to a recent girl-space-friend of mine at church, I referred to the holiday as corporate exercises in communal gratitudinous communiqués. I had fun later explaining what that, and the rest of that whole E-mail, actually meant.

pphaneuf: Didn't they say the same thing about X-Windows back in the day that you're saying about object protocols? Specifically, that:

  • It was too slow/unnecessarily bloated;
  • Remote access isn't that important anyway?

I realize the situation is a lot different since they already had X-only terminals to connect to more powerful central computers at the time, but I think the parallel still holds if you replace "using the technology at all" with "trying to use the technology in more places than just the few areas that truly need all its capability".

Layoffs not the best policy: I don't know if this is worthy article fodder, so it goes here. Via WebWord: Poor leadership leads to layoffs. I definitely agree with the list of woes that layoffs induce, but the prime example the article gives is a steel manufacturer, which presumably employs hourly workers. How do you do such cutbacks for someone on a salary? If we all switched to becoming consultants/contractors I guess that wouldn't be a problem (and software craftsmanship sounds better all the time).

Quines

A quine is a program that prints its own source code as output. (See here and here if you're new to them.) At work, I recently wrote a Perl program that makes use of quines.

For a project I'm loaned out to (not one of my several normal ones), I'm generating a PL/SQL stored procedure to do some Oracle database work. The procedure has very repetitive almost-identical blocks of code that can't be factored meaningfully, unless I switch to dynamic SQL--and given dynamic SQL in PL/SQL, I'd rather copy and paste large swaths of code. Rather than cranking out all this code once manually, I wrote a simple Perl script to spit it out. If I need to make changes to something, I just change the Perl script and rerun. Consequently, that Perl script is important, since I don't want to ever have to modify the stored procedure code by hand. I don't know if the rest of the team has any source-code control (I rather suspect not), and if they do I don't have access to it. I wanted to find a way to make sure that the Perl script would always be available to somebody who had the stored procedure source (which they could always get out of the Oracle data dictionary if they needed to).

I hit upon the idea of putting the Perl script in a comment block near the top of the procedure. It would be an easy edit in vi to read the source in and shove the comment delimiters at the front of each line, but that's editing the stored procedure, which I said I don't ever want to do. It could break the procedure if something is mistyped, and it's a manual step that later tinkerers might or might not do, if they happened to receive the script by other means and didn't see that the original's output included a block of comments with the script source. So somehow I had to have the script place the script source in the comments for the invoker without the invoker needing to do anything special... et voila, the idea is born.

The biggest problem was finding a quine that would let me embed a code intron. Some quines will let you store arbitrary text and have it reproduced along with the program itself; what I needed was for arbitrary code--the code to generate the stored procedure--to be reproduced and run. In fact, I also needed a way to have the printed source be modified to add the comment delimiters and indentation in front.

I found this nugget by njaharve@uwaterloo.ca:

#!/usr/bin/perl
$_=<<'eof';eval $_;
print "#!/usr/bin/perl\n\$_=<<'eof';eval \$_;\n${_}eof\n"
eof

which is really straightforward and is probably what I would have come up with myself. The thing to note here is that the code within the eval can be anything you want; whatever you put there gets executed and printed (when you run the magic print statement within the block of code). So I took this quine and turned it into a quasiquine that prints the stored procedure, with the script source (after applying :%s/^/\t--/ to it) inserted near the top.

Church

Had a very nice weekend. Two pastors who used to be at my church but moved away came back and did a seminar here. Life-changing stuff. Their messages managed to help answer some big questions about faith that I only recently realized I needed answers to. It's like they decided to spend the entire weekend teaching about what I've been going through--without them knowing anything about my situation beforehand. I only wish I didn't have to get back to the daily routine of work and such--going to church, when it feeds you, is way more fun (yes, even than writing quines).

I started reading The Cluetrain Manifesto--the dead tree version. So far I've finished chapter one, and I might try to read some more before I go to bed tonight. I've got a lot of thoughts stirring around inside me about it, and I'm thinking very seriously of typing them and posting them somewhere, but I'm wondering whether it's best to do that sort of thing as occasional diary entries here, as I have reactions to what I read, or if I should wait until I'm done and write a big position paper at once. I've got several other books I've either read or have in my pile to read that would be useful as supporting sources.

My basic position is a big "very true, but..." on what they say. Recent events (the original manifesto and subsequent book were both written pre-Y2K) shed some light on things that they didn't originally think about. Maybe the book will address my objections as I go through it.

If I write a big essay, it's a lot easier to link to and get comments on/reactions to/general net.exposure for it than if it's a series of diary/blog entries somewhere. OTOH, writing something like that would require enough continuing enthusiasm for me to get around to doing it once I've read enough. All that and anti-corporate muckraking is time- and energy-consuming anyway.

So what happens if I get through and I decide that I have at most a few paragraph's worth of stuff to write, and that I could have been writing about it the whole time while my reactions were fresh? Maybe I should just do both...

At any rate, just from reading the first chapter, I went and bought a stack of additional dead tree versions to give away to people. I just learned that they posted it on their site too, but it's more effective to get somebody to read something you want them to read if you hand it to them and they have to do something physically with it.

sej: Doesn't look like you can search them all at once. Googling for +site:lists.debian.org isn't quite the same, depending on how well-crawled the site it. Sounds like an excellent idea for a wishlist bug...

digdude: I've been using Debian for over two years now. What with the recent hype over RedHat 8, I thought about giving RedHat another try, but in the end I simply couldn't go back to no dpkg/apt-get. No way can the RPM port of apt be the same; at least with dpkg you've got the foundations for a thoroughly intelligent package management system in the file format, with the surrounding software supporting its features to varying degrees (Suggests: and Recommends: aren't handled too well ATM). With apt-rpm you don't have those features, and you don't have the ability to write it in the future without extending the RPM file format. Then again, they've been through, what, three different versions of the RPM format now, so it's not like that's out of the question, either...

I'm curious whether your Ethernet chip is supported by the stock kernel itself, and Debian's prepackaged binaries simply don't have support compiled in. If somebody's written a driver for a network card, especially if that somebody is Red Hat, I'd think they would have sucked it into the main tree as quickly as they could get it tested. If that's the case, just compiling your own kernel might fix that for you. (XFree86 is likely to be another story.)

So anyhow, I'll be curious to see how RH8 goes for you, and how bad the withdrawal symptoms are ;).

Let's see if I can post two diary entries in rapid succession...

sej, the official interface to all of the official Debian mailing lists is lists.debian.org, including its all-powerful search interface. I didn't even know that some of the lists were gatewayed to Usenet, but IMHO it's definitely best to go straight to the source.

2 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!