Turning the Users Loose

You never find all the bugs in anything until you turn real users loose on it.

Yesterday at work, while the library was closed, I made the changes to our network infrastructure that have been in the planning and testing stages for several months now. Instead of one firewall protecting our network from the outside world and the subnets from one another, we now have two firewalls: an outer firewall that protects the whole network from the outside world, and an inner firewall that protects mission-critical systems from the rest of the local network. At both points there is no ethernet path past the firewall, so the isolation is at the physical level, and the only stuff that goes through is what the firewall expressly forwards.

I tested everything I could think of to test, of course. My testing checklist, which I spent weeks compiling, was a full page, and many of the lines read along the lines of "Test foo, bar, and baz on all of the staff workstations". I tested ICMP echo. I tested ssh. I tested the web. I tested the ability to access our web catalog. I tested the ability to access our cgi server, and whether each of several internal databases thereon automatically authenticate the user by IP address (which they *are* supposed to do for staff workstations, and *not* for anything else). I tested ftp. I tested the ability to print, to each printer. I tested all of that on each and every computer in the building.

But I forgot to test encrypted websites (https). Naturally, this morning at 9:30 (we open at 9), about five users discovered this oversight at more or less the same time (within the space of a couple of minutes).

I had to actually go in to find out what was wrong, because my coworker who was describing the problem to me on the phone was too flustered (what with several people hounding her about it at once and everything, and not being very technically inclined anyhow) to explain it very well.

So all the way there I was thinking that the internet was completely not working, and I'm like, but I *tested* that right before I left. I tested *every* computer. They could all access the internet last night...

When I got there, of course, I walked over to a patron, who promptly explained that she could access Yahoo mail, but when she tried to "do anything" (which she demonstrates by clicking a "log in" button), ... Ah, yes. I did indeed forget to test any encrypted sites. (I even tested sites that have you log in, but the ones I tested were low-security sites where the only thing at stake would be a little public profile information, so they didn't bother with SSL...)

Sure enough, port 443, although I had intended for it to be forwarded, wasn't. Well, it was from some parts of the network, but not from the patron subnet. Oops. Fixing it, once I figured out what the problem was, was a simple matter.

You never find all the bugs until you deploy.

No, Your Child is Not at the Library

Earth to parents:

No. If you have to call the library and ask if your child is here, the answer is no. I know your child probably told you he'd be at the library, but what that really means is he didn't want to tell you where he was going to be, either because he hadn't decided yet, or because he just doesn't want you to know. This is true for children of all ages, but of course it goes double for teenagers. The library is the number one leading lie American children tell their parents about where they are going to be. This was true even before the Spiderman movie a couple of years ago gave the idea to the other 7% of kids who hadn't already come up with it on their own or picked it up from a friend.

Almost all kids who come to the library come with their parents. If you aren't here, then your kids almost certainly aren't here either.

Yes, we do have kids in the library all the time who are not accompanied by their parents, but it's the same two or three dozen kids all the time. (Some of them are here almost as much as they're in school.) If your child were one of them, you would know.

Let me reiterate that: if your child were one of the ones who comes to the library, you would know. If you have to ask, then he's not here. Please stop calling the library and asking if your child is here. Your child is not here.

Most Abused Scripture Passages: Ephesians 5

I have for some time intended to document my frustration with the carelessness and disregard with which some people treat the scriptures and, in particular, certain famous passages. In his Mother's Day sermon, Pastor Simpson used Ephesians 5. He handled it correctly (our church is fortunate), but I was reminded of some of the ways I've seen the passage handled in the past, and of my intention to write about this subject.

Marriage too has been on my mind of late, primarily since this May-July this year see me attending three wedding ceremonies in as many months (which is rather unusually many for me).

Note first of all that this passage (and the entire book of Ephesians, really) is primarily talking about the church. The passage certainly does speak to marriage, but people who ignore the larger context often get confused about what it says about marriage. The worst offenders quote just verses 22-24:

Wives, submit to your husbands as to the Lord. For the husband is the head of the wife as Christ is the head of the church, his body, of which he is the Savior. Now as the church submits to Christ, so also wives should submit to their husbands in everything.

These three verses, out of context, have been used to prooftext all manner of dire heresy. I will not dignify most of it with specific responses, except to say that anyone who quotes just these three verses in isolation from the rest of the context is invariably up to no good.

The bare minimum you can quote at one go and have a reasonable chance of doing the passage anything resembling justice is verses 21-33:
Submit to one another out of reverence for Christ. Wives, submit to your husbands as to the Lord. For the husband is the head of the wife as Christ is the head of the church, his body, of which he is the Savior. Now as the church submits to Christ, so also wives should submit to their husbands in everything. Husbands, love your wives, just as Christ loved the church and gave himself up for her to make her holy, cleansing her by the washing with water through the word, and to present her to himself as a radiant church, without stain or wrinkle or any other blemish, but holy and blameless. In this same way, husbands ought to love their wives as their own bodies. He who loves his wife loves himself. After all, no one ever hated his own body, but he feeds and cares for it, just as Christ does the church— for we are members of his body. "For this reason a man will leave his father and mother and be united to his wife, and the two will become one flesh." This is a profound mystery—but I am talking about Christ and the church. However, each one of you also must love his wife as he loves himself, and the wife must respect her husband.

You can see there the mutual nature of the relationship. It's not entirely symetrical, but it is very much cooperative on both sides. And yes, I have looked at verse 21 in the Greek, and it says the same thing as the English translation I quoted. If there is a word there that someone could reasonably take issue with it is "reverence", which could also be rendered "fear". Doing a detailed study on fearing the Lord would take us far off track, and in any case it would not change the basic meaning of this passage. People have been known to take issue with the word "submit", but again any wording that can reasonably be chosen (e.g., place yourselves under one another) would not change the basic meaning of this passage. "One another" is the part of this verse that we cannot get around, and it is borne out in any case by the verses that follow.

Now with that said, the wording and emphasis are quite different on the two sides of the relationship, because the man fills one role in the family and the woman another. And it is true that the man is to be the head of the household (and this is even more clear in other passages). Yet the relationship is very much reciprocal in nature, and if a man is treating his wife as some kind of servant or lesser partner, he is absolutely missing the mark.

It is worth mentioning too that the very closeness of relationship herein implied is fundamentally alien to popular culture's concept of marriage, wherein a much greater separation and individuality is retained.

But we still have not touched upon the main point of the passage. Paul explicitely states in verse 32 what should be obvious to anyone who has been paying attention to the general flow of the whole letter: he is talking about the church. A proper treatment of this passage really should look at 5:21 — 6:9 as a unit. 5:21, in particular, is a concise statement of the whole passage, which is expanded then in three main parts: 5:22-33 (wives and husbands), 6:1-4 (children and parents), and 6:5-9 (slaves and masters) — all of which is talking primarily about proper relationships among believers within the church, and all of which also ties back into what was said in chapter 4.

So if you see a man use Ephesians 5:22 as an excuse to live his live selfishly, making decisions without consulting with his wife, expecting her to work a side job in addition to doing all the cooking and laundry and whatnot while he sits in a chair, and generally treating her badly, tell him to go back and read it again.

Wow, it feels good to vent. There are plenty of other frequently abused passages in scripture. Perhaps I should write up a few more in the coming months.

Scripture taken from the HOLY BIBLE, NEW INTERNATIONAL VERSION®. Copyright © 1973, 1978, 1984 International Bible Society. Used by permission of Zondervan. All rights reserved. The "NIV" and "New International Version" trademarks are registered in the United States Patent and Trademark Office by International Bible Society. Use of either trademark requires the permission of International Bible Society.

Lightening and Brightening: Color-Safe Bleach for Digital Photographs

I recently mentioned the technique of using an unsharp mask to brighten a dark image, and someone asked me how "sharpening" can compensate for underexposure. This post is an attempt to explain. First, I should note up front that it's better to get a good clear photo in the first place. For the example, though, I have chosen one that is, in a word, not. The end result would be a bit better if the starting photo were a bit better, but using a really poor photo makes it easier to see what is going on, so for the sake of example, that's what I'm doing. This photo was taken using a cheap old consumer-grade digital camera. Here it is in mostly undoctored form:

I say mostly undoctored because I've cropped it. The curious can see more of the context here (this is part of the second photo there), but this much will do for the sake of explanation.

When a photo is terribly dark like this, the first thing most of us want to do (assuming we don't want to just throw it out) is lighten it up. There are various ways to do that, each with advantages and disadvantages (brightness/contrast, gamma correction, channel curves, ...) but the method I usually use in this kind of situation is the levels dialog box. (I'm using Gimp here, but other photo editors presumably have something similar.)

This photo was so underexposed, a significant band of values at the bright end was entirely unused in the original. So I brought the rightmost of the three sliders left to the point where the graph tapered off into nothing. Additionally, the darkest values are over-represented (note the giant spike on the left side of the graph), so I dragged the middle slider to the left a bit in an attempt to compensate. There is, however, a limit to how far you can go with this. After a little experimentation, these are the positions I ended up with:



The color is now rather dull, especially in the background. It was dark, and we've lightened it a bit, but lightening it too much more would wash it out. Instead, at this point I opted to use the unsharp mask filter. Again, I'm using Gimp, but other photo editors (well, ones serious enough to have filters) probably have something similar. Note that I ran the radius up to 50 pixels:



With a small radius (the default in Gimp is five pixels) the unsharp mask exaggerates changes in color across short distances, which helps blurry edges to seem sharper (though, technically, they aren't actually made sharper as such). With a larger radius like this, though, the changes in color are measured, and exaggerated, over larger distances. Rather than picking out edges, this picks out whole areas of the photo and makes them seem more distinct from one another. This has an overall brightening effect, making the colors seem bolder. Again, it can be overdone, but this image really needed it. Look at the difference in the woodwork around the windows from the image above to the one below. The snowflake also now looks white instead of dingy gray.


Finally, this image, in addition to being dark, was also rather grainy. Fortunately, it was taken at a larger resolution than I needed for the web, so I was able to solve this problem simply by scaling it down to a factor of its original size. Note the use of the cubic interpolation: chintzier scaling algorithms like nearest neighbor are not recommended, as they can actually exacerbate image quality problems. Here is my result:



It's still not the best photo ever, but if you scroll back up and look at the original again, you will notice how much worse it was. This really is an improvement. Of course, starting with a better photo initially will yield better results.