Libronix or the Real World

Concordia Publishing House was offering a smokin’ deal on Luther’s Works in the electronic format of Libronix. Though Libronix has a pretty snazzy-sounding name (almost as snazzy as “Unix”), it’s still a pretty lame piece of software. Don’t get me wrong. Its technical achievements are probably astounding, and its usefulness is probably flabbergasting. For me, though, it’s the most cripplingly bloated piece of over-hyped software ever written. Why is that? Because in order to use it, I have to have a separate partition on my hard disk, or a virtual hard disk inside virtualized hardware. On that partition, I have to have a copy of a 100% proprietary operating system (with planned obsolescence) that’s useless for anything else, and which the makers of Libronix don’t even support. This operating system, a prerequisite for using Libronix, actually costs quite a bit over and above the cost of Libronix itself. I appreciate that you get a free copy of Libronix with Luther’s Works, but if Logos Research is truly serious about making their library platform in such a way that we only pay for the books themselves, they have failed both completely and miserably. How much does a Windows license go for these days? And how long will that be useful? Last I checked, Microsoft wasn’t giving Windows away. Besides that, even a free copy of Windows is more of an impediment to me than a help.

I use Linux on all my boxen. Well, I guess my Palm Pilot doesn’t run it, but that’s just because I can’t afford a Palm Pre. I can do everything I need in Linux. I don’t even really need Luther’s Works on CD, because I have it all on paper. (Real books are much easier on the eyes, more satisfying for the fingers, and more stimulating for the brain.) Still, I can’t pass up an electronic copy of Luther’s Works for half price. It’s an index on steroids. Lots of steroids. The only problem is I have to boot up that usually-dormant partition on my hard drive before I can even launch the index-on-steroids, every time I want to use it. Thanks to some hardware virtualization in Linux (hardly dreamt of in Windows world), I might not have to leave my Linux environment completely to do all that, but that speaks more to the strengths of Linux than anything else. We’ll see.

Now, if Logos Research would work with Codeweavers to make Wine capable of installing and running the Libronix Library System (which it already does) in addition to unlocking a collection (in Wine) with the legally-purchased serial number, then I will gladly withdraw all my criticisms and pronounce Libronix ready for use in the real world. Until then, you’d better buy an extra-large hard drive, and budget for a lot of waste.

Bad formatting (Updated)

Sorry about the bad formatting of that last post. I’ll have to do some checking when I have the chance. Something is amok with Markdown.

OK, it seems to be working now. I turned off another feature that had suddenly broken. There was also an Apache-related memory leak. It’s hard to say just where, though, because Apache does so much. Chances are, it was somewhere in the general area of PHP.

No, there’s still that memory leak. It’s pretty severe. I’m monitoring things now to see which process is causing it.

Stardate 200905282308: Memory usage has been normal. The site is still up. I think it might work.

Nope. Went down again. Turns out that Mysql is freezing up. After getting back to real life for a few days, I’ve repaired the Mysql tables with the server offline. We’ll see what happens now.

For Joe:

# mysql --version
mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using readline 5.2

I’m looking to see what updates there are in Debian.

Getting Things Done with Mutt (updated)

My mail client of choice is Mutt. It works. It works well. It works well over SSH, and will do just about anything I ask it to, as long as what I ask it to do is to manage my mail. Plus, it’s fast.

I also have been using David Allen’s system known as Getting Things Done, or GTD. Tonight I did a little Mutt configuration to automate some of the GTD-style email reading I’ve been doing.

The principle is to have every incoming mailbox completely empty by the time I’m done reading it. The messages get deleted or sorted into other boxes where they either wait for more information or generate actions for me to do when the time is right.

A little googling revealed that others have done something similar in recent years, but there were two problems. First, messages were tagged by adding an “X-Label:” header, which supposedly required a patch to Mutt’s source code. Possible, but a bit ugly. I vastly prefer custom configuration to custom software, when possible. Second, a number of the pages about using Mutt in a GTD way are no longer available.

But this one is available. Unfortunately, it also relies upon the “Add an X-Label header” patch to Mutt’s source code. But I had an inkling it could be done another way, without the patch. A few hours later, after a little Reading of The Fine Manual and some experimentation, I have the answer.

The goal is to provide simple keystrokes that will add an X-Label header or change an existing one right from the index listing or the pager. Then, folder hooks can change the index listing format when needed to include the X-Label header — or at least a few characters of it. That way, I can process messages when they come in, slap a label on them, and then save them into an appropriate folders for later review at the right time. When I browse those folders later, I’ll see my labels, and know what to do even before I read the messages. In addition, I can set up automated summaries of my GTD folders, including how many messages are there, and what their Labels say. The summaries might appear on my desktop, or wherever else I might want them.

I ended up doing most of what’s mentioned on the page linked above. The chief difference is that I haven’t patched Mutt. So instead of using the “edit-label” command (which doesn’t exist for me), I used the following somewhat long binding (inspired by this thread) in my muttrc:

macro index,pager Cl "<enter-command>set my_editor=$editor<enter>\
<enter-command>set editor='~/bin/mutt-setlabel.sh'<enter>\
<edit><enter-command>set editor=\$my_editor<enter>"

The magic keystroke is Cl, available in the index or the pager. Everything else is the macro this keystroke performs.

First, we save the value of the current Mutt editor variable to a custom variable, cryptically named my_editor.

Then, we set the Mutt editor to a shell script, which I’ll include below.

After that, we issue the Mutt command, which edits the current message, using the script we specified a moment ago.

Finally, we restore the original value of the Mutt editor variable. The backslash is needed here because we want this variable to be expanded when the macro executes, rather than when it is defined.

The shell script is as follows:

#!/bin/bash
read -e -p"Enter an X-Label: " value
file=$1
formail -I "X-Label: $value" <$file >$file.tmp
sleep 1
mv $file.tmp $file

Ignore the first line. It’s how shell scripts work.

First, on line 2, we have Bash ask for a new label value. Since Mutt runs in a terminal, this is no problem at all.

The third line takes the filename parameter provided by Mutt and puts it into a nice, descriptive variable, just because.

The fourth line uses a command-line utility to do the heavy lifting, using the value we just obtained in line 2. Shell redirection is used for input and output.

The fifth line pauses for a second, because supposedly Mutt will assume the file is unchanged if the final timestamp is unchanged.

Finally, we move the modified message to the original filename for Mutt to pick up.

And that’s it. The rest is similar to the first link above. But now, it’s late. My next action is to get some rest.

Digital Television Transition

Congress, at the request of the President, has been trying to push back the date for the digital television transition that this nation has been preparing for two years. On the surface, the reason for this is concern for those who are still unprepared. So out of that concern, the federal government may spend millions of its constituents’ tax dollars to delay the transition for another six months or so.

I could understand the concern if the issue were a transition from 60Hz electricity to 50Hz electricity, or 120v household voltage to 220v. There are some whose lives would be in jeopardy if they were not prepared for such a change. But television? It doesn’t make sense.

It didn’t make sense, that is, until I asked myself what essential role television plays for our elected representatives. See, TV is not really essential for we the people, but it is essential for those who need our votes. If a sizeable number of “poor” people are bereft of television, they might just turn on the radio instead. There are some in power who would gladly pay millions of our dollars to prevent that, especially if those poor people might listen to an AM station between noon and three Eastern time.

Even worse than tuning in to AM radio, those “poor” people would no longer be coached on how to think. They might begin thinking for themselves, and evaluating the performance of their elected officials purely on the basis of their own sense and principles, and in the best interest of their families. Some political agendas would certainly suffer.

Television is like the Matrix, with one important difference. Instead of turning human beings into batteries, it helps turn them into votes. To certain officials of our government, uninterrupted television service to their constituents is absolutely essential. It will be interesting to see if their secret fears are realized.

Webkinz Access

Most of the people in my family use Webkinz, especially the little kinz. My involvement is to provide Internet access only to the Webkinz site for one of the computers on our little home network. I’m accomplishing that by attaching the machine in question via a separate subnet to our always-on server. That is, the server has two Ethernet cards, each with a network address on a different subnet. Through one card it lives on the primary subnet in our home, and through the other it’s attached to the limited-access Webkinz machine. This should be possible with most any operating system.

On that always-on server, I run Squid (which you can Google if you want more information). Following the documentation, I’ve set up Squid to be a caching proxy for the limited-access subnet, and have set up the access rules such that only Webkinz servers can be accessed, and only within a certain window of time. Then, the web browser on the limited-access machine can be set up to get to the Web via the proxy server. All of these machines are running Linux, so in the always-on server, it’s important to turn IP Forwarding off. That prevents it from allowing all traffic from the restricted network online. The result is that only Web requests allowed by the Squid restrictions ever reach the Internet.

The real challenge is to figure out what servers Webkinz uses to provide their online experience. There are many. According to this FAQ, a list of eleven IP addresses will suffice to allow access to Webkinz. (Click the question about Parental Control software.)

Complaints from household Webkinz users have shown that this list is not complete. Looking at the Squid access log, I can find the IP addresses to which access has been denied. Adding those to the list has usually resolved any problems with Webkinz world. Occasionally, however, Webkinz experiences glitches of its own, which can be identified by a lack of corresponding “DENIED” records in the Squid access log.

As of this date, my expanded list of Webkinz servers for Squid is as follows:

66.48.69.98/32
66.48.69.99/32
66.48.69.102/32
66.48.69.104/32
66.48.69.106/32
66.48.69.123/32
66.48.69.124/32
66.48.83.130/32
66.48.83.158/32
66.48.83.160/32
66.48.83.161/32
66.48.83.162/32
66.48.83.163/32
66.48.83.164/32
66.48.83.165/32
66.48.83.212/32

The /32 after each “dotted-quad” specifies how many bits in the IP address are significant. Since we’re talking about individual servers here, all of the bits are significant.

X11 Keyboard Customizing

One area where the Linux experience is not as polished as Windows is keyboard customization. Yes, KDE provides a nice little configuration dialog with lots of national flags, but only for predefined layouts.

Long ago, I started out using xmodmap to redefine a few keys, and that worked well for quite a while. Then came xkb, which supposedly brings flexibility, power, and abstraction to keyboard customization. I could never find enough documentation to make it do what I wanted, so I went back to xmodmap, which I’ve been happily using ever since. I just run it from my KDE Autostart directory, and I’m good to go.

But now, here’s a recent and promising link I need to keep around (the reason for this blog post) and try later. Sometime after Christmas. http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11

The Hidden Cost of Embarq DSL

When you look for an ISP, you might some time consider Embarq. If you do, then you need to add a certain undisclosed installation fee when you compare Embarq’s prices with those of other providers. This might also be true for other providers too, so caveat emptor.

The extra amount to add in the case of Embarq is about $173.99, as of this moment. If you already use Microsoft Windows, then you have already paid the extra fee, and will continue paying it. But if you use MacOS, Linux, or any number of equally capable operating systems instead of Windows, then at the moment, you’d better factor in the extra $174 when you consider Embarq.

To be fair, it seems that this fee is not tacked on by Embarq itself, but by some other entity that Embarq uses to handle new account set-up. Nevertheless, when you attempt to use http://install.embarq.com, even in Mozilla Firefox, it won’t work. This is by design. The Embarq installation process requires Windows as a prerequisite. Here’s a bit of Ecmascript code from a relevant install web page to demonstrate:

var is = new Is();
if(!(is.win98 || is.winme || is.win2kSP4 || is.winxp || is.winvista)) { //alert(“You are using a VA UnSupported OS”); }

The good news is that Internet connectivity seems to work whether or not you have completed the Embarq DSL installation.

We’re Baaaaaak.

After much shuffling and learning of hardware, and much software shuffling, and much waiting, the Plucked Chicken is back. The fan I mentioned in the last post, which went up on the very day that my hard drive crashed, has been replaced. That’s the third power supply fan in that box. (Don’t let anyone tell you that it’s not worth replacing just the fan. You just have to replace it before the old one quits entirely, leaving the power supply and other components to cook.) The stodgy old hard drives in that box have all been replaced with the somewhat newer ones that were in my desktop machine. They’re so much bigger that I’ll be able to use this as a file server after all.

The new hard drive is a(n) SATA drive. I was delighted that my desktop motherboard has a built-in SATA host, but it turned out to be old enough that it couldn’t communicate with the drive at first. I had to configure the drive (with a jumper that didn’t come with it) to limit its transfer speed. But finally, all was well and we’re up and running.

I also decided that, since I’m starting with a fresh, empty drive, I’d give the AMD64 architecture a try by using that branch of Debian. I’m glad I did. It’s the quickest computer I’ve ever had. As usual when you increase the speed of a machine, the desktop feels instantaneous. I’m even using all the glitzy bells and whistles in KDE, which I’ve never done before. Give it a few years, and it will feel like I’m waiting again, but for now, I like it. The disadvantage is that this install of Debian doesn’t automatically include any support for “legacy” 32-bit programs, and there are a few things that are only made available that way. One appears to be Macromedia Flash. Another seems to be Opera. In time, I hope to use a 32-bit chroot environment to run those things, but for now it’s a small irritation.

It’s my biggest fan

The machine hosting this blog has an AMD K6-3D processor, running at 333 Mhz. It’s in a full tower AT case. If it takes a while to load the blog in your browser, the problem isn’t the slow speed of this machine, but the tiny upload speed of our Internet connection.

By the way, it’s absolutely ridiculous the way Internet access providers artificially and arbitrarily limit the upload speed in relation the the download speed of the link we pay for. I think it begins further upstream than the ISPs that end-users deal with. Whether you realize it or not, the access providers we know also buy access from other companies, and I think outgoing traffic often costs more for them than incoming traffic. Unless, perhaps, your access provider is a company like Embarq. I suppose they own large chunks of the basic Internet infrastructure in the US, and will charge whatever the market will bear.

Imposing artificial limits on the upload speed betrays a certain conception that Internet users are all only consumers of content, not creators and providers of content. It may be a widespread misconception, but it is nevertheless absolutely false. The Internet is really just a huge network of computers, and as such, it should be equally possible and practical for any of the computers on it to receive or send information to any of the other computers. So as it is, the Internet “access” we pay for is a one-sided access. Yes, there is plenty of access to consume information, but only a severely hamstrung access to provide it. That’s why it takes a while for the Plucked Chicken to load across the Internet. End of rant.

Anyway, the machine hosting this blog is old, and the power supply fan has begun moaning and groaning every 5 to 10 minutes or so. It’s a replacement itself, which I salvaged from an old IBM XT case. I was thinking to replace it this morning, but I don’t have any other fans that size. It’s my biggest fan. Since I’m heading to Minneapolis today for the ELS General Pastoral Conference, it will have to wait until I return. We’ll see what happens. I hope it lasts until I return, so I don’t end up with a toasted power supply. There’s life in these old bones yet, and I’d rather keep using them as long as possible.

If the Plucked Chicken becomes unavailable in the next few days, at least you’ll know why.

Blogs and Allegiances

The Church is not a business, though some aspects of business experience are helpful when managing earthly aspects of the Church.

Because of that, a Christian congregation is also not a business. Likewise, a synod or larger church body is not a business.

The business world is a bit like the military world. Decisions are made by a few, and everyone else has to follow them. Dissent is not tolerated. The leader(s) determine the principles of the organization, and anyone who contradicts them is terminated or disciplined.

This has been extended to publications. If an employee writes a book or blog that somehow comes against the principles or interests of his company, then he is in trouble. His allegiance, even in his privately published writings, is to his company. Personally, I think some companies have taken this way too far, but it’s a free country. They have the right to be wrong, just like the rest of us.

In the Church, our primary allegiance is not to our own congregation, nor to our synod, per se. That would be a kind of idolatry. It would be denominationalism, like backing the Red Sox only because you live near Boston, rather than because they have any particular virtue or skill. Applied to baseball, that approach is fine. Applied to churches, it’s wrong. Some churches and synods are more virtuous than others, because they hold to the Word of God in doctrine and practice better than others.

Continue reading “Blogs and Allegiances”