Sunday, April 29, 2007
Stop Watches and Yardsticks
I build software. If, instead, I were to dig ditches, we could easily measure the volume of dirt displaced. But what metrics does one apply to the construction of software? Lines of code? Bug Reports? Cyclometric complexity statistics?
Last Tuesday, John Cunningham of Band XI spoke at the West Michigan XP group and described some of his frustrations doing XP within IBM. He would faithfully deliver the numbers to his higher ups that they requested and know they were utterly misleading. I knew exactly what he meant, because I've done the same.
You record the time spent doing tasks and what gets lost is the utter non-value spent in some of those tasks and the absolute priceless-ness of chance encounters that come and go in two minutes. The former are reported to management and the latter are not. They serve to push management a step away from reality.
In short, I object to measurements that mislead, or can be gamed. Once I understood this I sought a metaphor that I could use to communicate what I have in mind. Consider a track meet, what measurement tools are used there? Some officials carry around stop watches and other officials carry tape measures.
In particular, consider the high jump competition. You set the bar a measured distance above the ground and the best athlete is the one who doesn't knock it down. You measure this performance with a tape measure.
But suppose an official who's been watching footraces all day comes along with stop watch and no tape measure. He's perplexed until he notes that the guy who jumps highest also stays off the ground longest. He decides to measure the athlete's performance with just a stop watch.
What would happen then? The athletes would jump differently. But would they jump higher? Subtly, the fact that the measurement has changed will change the way the athletes jump. I don't think those changes will result in higher jumps. Performance suffers due to using the wrong measurement.
It seems silly to measure the high jump this way, but suppose you had lots of cheap stop watches and only a few expensive yardsticks. Or suppose you don't understand the field of endeavor well enough to see how yardsticks are better than stop watches.
Conversely, it'd be silly to take a yardstick or tape measure to a footrace.
So, I'm not saying "don't measure." I'm saying that you have to understand what you're doing well enough to select the correct measurement.
And you have to use, and not misuse the correct measurement.
Let's go back to the Big Brother consideration I touched on earlier. In the UK there is now one video surveillance camera for every 14 people. Those cameras are in place to "catch" wrongdoing. Contrast this with a training context where your coach videotapes your jump to analyze your form, a one frame at a time. He's got a purpose that you and he agree upon. He's not out to "catch" anything except those things you want to correct in order to jump higher. He's your Coach, not your Policeman.
Do you see a cop with a radar gun? Slide into something's radar shadow and decelerate. Then look at your speedometer. You change your behavior so he won't "catch" you speeding even when you're doing nothing wrong.
The relationship between Big Brother and those under his thumb is adversarial, whereas the relationship between Coach and athlete is cooperative. The fact that "Big Brother" even comes to mind speaks volumes of the culture of an organization.
Measurement in an adversarial context is a negative-sum game. In this context, everyone is encouraged by the system to replace reality (that might cast me or my political allies in a negative light) with whatever figures we can spin into a Potemkin village filled with smiling happy peasants, each tugging on their forelocks as the Empress sails by.
The cultural question probably hinges upon a question to the measurement taker that John Cunningham raised last Tuesday: "Do I want to know what's going on, or do I want to impose my will upon the situation?"
Wednesday, April 11, 2007
std::min and std::max versus Visual Studio
C:\dev\sdk\boost_1_32_0\boost\archive\iterators>svn diff
Index: transform_width.hpp
===================================================================
--- transform_width.hpp (revision 201)
+++ transform_width.hpp (working copy)
@@ -142,7 +142,7 @@
}
else
bcount = BitsIn - m_displacement;
- unsigned int i = std::min(bcount, missing_bits);
+ unsigned int i = min(bcount, missing_bits);
// shift interesting bits to least significant position
unsigned int j = m_buffer >> (bcount - i);
But was this the most righteous solution?
Just last week I had to code away from a righteous std::numeric_limits
The real problem isn't in boost, but in Visual Studio. This sent me googling to this link that said:
The Standard Library defines the two template functions std::min() and std::max() in theheader. In general, you should use these template functions for calculating the min and max values of a pair. Unfortunately, Visual C++ does not define these function templates. This is because the names min and max clash with the traditional min and max macros defined in . As a workaround, Visual C++ defines two alternative templates with identical functionality called _cpp_min() and _cpp_max(). You can use them instead of std::min() and std::max().To disable the generation of the min and max macros in Visual C++, #define NOMINMAX before #including .
Therefore, I REVERTED my change to transform_width.hpp. Since I do not #include
It works and I feel more righteous.
Sunday, April 08, 2007
Viewer Discretion Required
It became obvious that viewer discretion may be required, but for the photographer and the photograph-ee, discretion was pretty much absent.
Friday, April 06, 2007
C++ Templates Are Wizardry
I had a map
Though you wouldn't normally think of it, map requires a comparator to function. C# calls the same thing a sorted list, b/c they don't hide the fact that in order to work, the data structure has to be sorted on keys, and this comparator keeps the keys in sorted order. This comparator was what I needed to make my map work.
If I have two equivalent keys "Thing" and "thing.subthing" and want them to map to the same value, I can do so with a comparator function. Simply declare my map as map
class comparator
{
public:
bool operator()(const string& s1, const string& s2) const
{
string t1(s1);
string t2(s2);
transform (t1.begin(),t1.end(),t1.begin(), tolower);
transform (t2.begin(),t2.end(),t2.begin(), tolower);
//(more goes here later)
return t1 < t2;
}
};
The boost string algorithm is the way to go here. You should make it your friend. This handles the string insensitive part. If that's all you need. You're done.
Note: you MUST implement a LESS THAN function or the std::map template won't work.
I had to ignore all the stuff to the right of the decimal point. So, I added the following bit:
size_t dot1 = t1.find(".");
size_t dot2 = t2.find(".");
if (dot1!=string::npos)
{
t1 = t1.substr(0,dot1);
}
if (dot2!=string::npos)
{
t2 = t2.substr(0,dot2);
}
I was a little disappointed with this solution. I had hoped to just adjust the end iterators of the transform() calls above. However, it got gnarlie and harder to understand than this. If you know how can replace the transform() call with something using a back_inserter(), let me know.
After I got this working, I was impressed at how unhelpful the compiler and the language were in diagnosing the errors I'd made. I mentioned to a colleague that templates are the greatest thing ever invented, but they require a wizard to use gracefully. He agreed and suggested that if I did this every day, I'd be more efficient at diagnosis. He's right. When you work with something every day, you grok the philosophy of why things work, and you get a feel for why unhelpful compiler error messages say what they do.
Tuesday, April 03, 2007
A Righteous Way To Get The Fonts Directory
Thus, after a bit of googling I came up with this code that worked consistently until this afternoon.
string result = System.Environment.ExpandEnvironmentVariables("%WinDir%");
result += "\\fonts\\";
This works because on Windows systems, you can find the WinDir environment variable set to the system directory. That quit working today when I encountered a weird interface problem with an ancient C++ program (written well over 10 years ago) that invokes a new, cool .NET program that uses the code above. The failure was an interesting one.
The old C++ code looks like this: (Maybe you can see what the problem was.)
loadParms.segEnv = 0;
loadParms.lpszCmdLine = commandLine;
loadParms.lpShow = show;
loadParms.lpReserved = NULL;
HINSTANCE hinst = LoadModule(exeName, &loadParms);
The loadParms struct has a segEnv handle that references the environment of the child process created by the LoadModule(). However, since it is not initialized to anything, the child process has NO environment defined. Thus the reference to %WinDir% gets nada instead of the correct directory. The newer program worked fine from the DOS command line and failed within the LoadModule() call above. This was the only clue to my problem.
I came into my boss's office chuckling about how the old system goofiness had screwed me over and pointed out the use of the %WinDir% environment variable. He countered that what I'd done above to use %WinDir% in the first place was not as righteous as using the various Environment.SpecialFolder methods/properties to get the same thing. I'd tried to do this months back and I'd failed to google up a better solution than the one using %WinDir%.
But I'd forgotten my earlier failure to find a more righteous solution. It took me a couple hours of googling to remember that I'd done this before without success. Happily, this time, I didn't give up and came upon the clues that yielded this snippet of code:
///
/// get system font path
///
///
static public string GetFontPath()
{
string systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
string result = Path.GetDirectoryName(systemPath)
+ Path.DirectorySeparatorChar
+ "FONTS"
+ Path.DirectorySeparatorChar;
return result;
}//GetFontPath()
This works in two parts, the Environment.SpecialFolder.System gets me to C:\Windows\System32, which is too deep in the directory tree for me. But the 2nd step, invoking Path.GetDirectoryName(systemPath), strips off the "\System32" that is in my way. Then I can add back the FONTS myself.
A righteous hack. I hope this will make the next guy's googling a little easier.
Sunday, April 01, 2007
Write It Now: Relationships
This isn't that review. It's more of a first impression. Just one aspect that I have some opinions upon: Relationshps.
WriteItNow lets you define characters in your novel. I'm working through that right now. Each character has a description, relationships, and personality. The description is just plain flat text, with a drop-down box for sex. This could be improved by adding some structure for eye-color, hair color, height and other physical attributes common to everyone. The Date Of Birth would be better replaced, or perhaps augmented, with an age when story takes place. When I am designing a story, I like to think of it in terms of "today" or "five years from now." If you have in mind to use historical figures in your novel, the Date Of Birth feature will serve you well.
Each character can have a collection of relationships. When you define a relationship, you get a dialog that has two drop downs. The first specifies the nature of the relationship: it says "wife of", "husband of", "aunt of", "neice of" and so on for about 27 choices. When I entered the first relationship, this was a problem, because I wanted the character to be the "tutor of" another character. Not in the list. Hmmmmm. No "mentor of" or "protégé of" either.
Only later did I discover the drop-down let me type in anything I wanted if it was missing from the drop-down.
A nice touch is that relationships can have "start" and "end" dates. But my complaint about birth dates applies here, too. Instead of saying that Chaz and Kim were married 3 years before Kim files for divorce, I have to specify some Saturday in June 2004 and some Wednesday in March 2007. Some specificity is good, but I'd like to hang loose on some details before I make other design decisions.
So, I started defining relationships between characters. And I noticed another problem. If I said, that Kim was the wife of Chaz, it didn't automatically say that Chaz was the husband of Kim. I saw this was a potential difficult thing to put into a program. For instance, if I say that Art is a lover of Jennifer, Jenifer may not be a lover of Art: she might just be stringing him along.
But just now a solution occurred to me. In the bowels of the source code for Write It Now, there must reside a software entity, (called a class) named something by the programmer. I'll name it "Relationship" for now. This class would be responsible for holding everything associated with a Relationship between two characters. Right now, I suppose it holds a string that specifies the type of relationship (e.g. "husband of"), two date objects for start & end, and a reference to a Character object. I here propose a refactoring of that object. Replace the string that identifies the type of relationship with a RelationshipType object.
The relationship type object I'm proposing has a boolean attribute: Reciprocal. Some relationships are reciprocal, others are not: e.g. Chaz is a husband of Kim and Kim is a wife of Chaz, but Art is a lover of Jennifer, but Jennifer has no such relationship with Art. With this distinction in mind, the programmer can associate reciprocal relationships automatically. When I add a "husband of" relationship between Chaz and Kim, it creates a reciprocal relationship "wife of" between Kim and Chaz. If I change my mind and want to I delete a reciprocal relationship, the software must goto the other character and delete its reciprocal relationship, too.
If you buy into the notion of a reciprocal relationship, you also have to worry about the polarity of that relationship. When I look at a relationship between Chaz and Kim from the perspective of Chaz, I want to see "husband of" and when I look at Kim's relationships, I should see "wife of". In graph-theoretic terms, reciprocal relationships are "directed" arcs between characters and this notion of polarity or direction, captures this distinction.
This would entail updating the Edit Relationship dialog to add a checkbox for Reciprocal or not. And also a "polarity" flag to select between "husband of" and "wife of" when displaying the relationship.
This also has an impact on the Relationship drop-down. I don't think free text in the combobox works any more. Instead it has to enumerate all the known relationships plus one called "other" selecting other would bring up a dialog where one defines:
- reciprocal or not,
- relationship description (e.g. husband of)
- reciprocal description (e.g. wife of).
While writing this, it occurred to me that the WriteItNow folks would also do well to refactor their Date object. Sometimes dates are important to know exactly, other times exactitude is a disraction or should just be a deferred decision. This argues for "fuzzieness" in the specification of dates. The date specifier dialog in WriteItNow have some checkboxes for Month, Day, Week Day, and BC. I'm not quite sure how these work and should start searching the documentation. (They govern presentation of the date. Bad form to confuse data entry and presentation. There's no Help button on the date specifier dialog. It's unclear how the red X is different from the Cancel button, either.)
Instead, I think every Date object needs to recognize the distinction between absolute and relative times. Absolute times are points like 2:57 pm GMT June 2, 1934. Relative times are points like 5 years ago. Let's suppose I have in mind that Damien is 13 when the story takes place. If I write the story is to take place "now," his birthdate can't be specified absolutely. Similarly, I may want to defer decisions about how old he is exactly. I'd prefer to say Damien is between 12 and 15. When I know more, I'll narrow it down.
Same goes for absolute dates. I may want to say that an event takes place "during WW2" but I'm not sure exactly when. I had a story where my hero lost an arm (and a fiance) during a Nazi bombing attack. When exactly? I didn't know more than between 1939 and 1945. And I didn't need to know until later.
WriteItNow will do a better job if it enables the writer to capture artistic decisions in relative terms with some degree of fuzziness. Thus I think its Date object should be refactored to mind these two distinctions: absolute versus relative, and inexactitude. Relative times are tricky, I'll come back to them momentarily.
Fuzzieness can be handled by adopting intervals. Any fuzzy date is really a range between the earliest and the latest times of an event. My hero's injury starts out at [1 Sep 1939 - 2 Sep 1945]. Since my hero is an American I decide he has to be hurt after Pearl Harbor: [7 Dec 1941 - 2 Sep 1945]. So it goes, as I research and refine dates and narrow the range. Exact dates are simply zero-width intervals. In my example, these are all absolute times, but relative times may prove useful. e.g. Damien's age mentioned above.
Relative times are tricky because they are "relative to what." WriteItNow enables the writer to define events. Events seem to be the best candidate for providing reference points for relative dates. What makes them tricky is that you can have multiple narrative tracks in a story. Neal Stephenson's Cryptonomicon tracked WW2 and contemporary events in parallel, for example.
In my current story, I figure Chaz will be found dead in a locked room. (Someone named Chaz should always be found dead at some time in the story.) I figure he'll be married to Kim about 3 years before that, and she'll file for divorce about a month before that. Meanwhile, Art and Damien are establishing a love-hate relationship as tutor and student. I don't know exactly how those two narrative threads will merge. I don't want to decide that yet. I'll want to specify all Kim and Chaz events relative to each other. And i'll want to specify all Damien, Art and Jennifer events relative to themselves.
Where it gets tricky is when I try to harmonize multiple the narrative flows. I'll need to float all the dates in one narrative to let me slide it forward and back to match up with the other. And I need to check for contradictions. Like Chaz getting killed before he can insult Art at a dinner party. Thus the Date object must be made fuzzy to some extent, and must be either absolute or relative. Similarly, when events are "linked" (I haven't gotten to that part of WriteItNow yet), some kind of consistency check between them will be needed.
More on that later.
Saturday, March 31, 2007
21st Century Camping
Grand Haven State Park advertises that they have WIFI, so I decided on a little expedition to test this. Last winter the website for the park allowed reservations on 30 March, and that's what I put in.
The first challenge was sneaking out of work. Since I work at home Fridays, that should be easy. But there's a release that occasioned a lot of hand-wringing that resulted in a clutch of phone calls from QA and one big conference call with the product manager and the big boss. The conference call wasn't too long and I got on the road an hour and a half later than hoped. Traffic slowed me and I didn't get to Grand Haven as quickly, either.
The Wifi works (i'm using it now). I was pleased to note not one, but two wireless service providers within range of my laptop. I signed up for a one-day plan, but I could have gotten an hour's access for free.
And I was able to get on IM. I told my colleague in QA that I had to move my trailer, and asked if all was well. I didn't say how far I'd moved it. Later I chatted with my boss noting that it was cold and windy and raining, but that I was warm and snug and had Wifi. He was impressed with the geek factor.
Grand Haven State Park is perfect this time of year. It's cold and windy. And there's almost nobody here. I don't think I'd like it in July with no shade and crowds of noisy teenagers.
I have a friend who writes articles for outdoors magazines. I mentioned my purchase of my trailer and asked about some good camping destinations. In the course of the conversation he sniffed, "if you're using propane, it isn't camping." I suppose you'd say he's old-school. When I tell him about this expedition, I expect to see his head spin around three times or something like that.
Monday, March 26, 2007
How To Get Anna Nicole Smith Off The News
1) you'll need guns, lots of guns. (A Matrix-style black leather coat is optional.) and ammo.
2) show up at the nearest TV network.
3) shoot up the place.
At this point, you have two options.
a) save the last bullet for yourself.
b) give yourself up so that you can have this month's "trial of the century." This will keep Anna Nicole Smith off the news for a few more weeks.
Sadly, you can only do this once. If you want to keep Anna Nicole Smith off the news for more than a few weeks, you'll have to recruit help. This shouldn't be hard. On the Internet, you can hook up with anybody about anything.
Sunday, March 25, 2007
Thespians Have Invaded My Church!
This morning, we got to church relatively early. In the foyer outside the auditorium I noticed a lot of people milling about in costumes, apparently from the 1920s or '30s.
When we got into the auditorium, I was instantly consumed with lust. There on the platform gleamed a vintage Packard roadster. (It's odd that when you tell a man you covet his car, he'll smile. How many of the 10 commandments can you violate with that response.)
Around the Packard was a number of set decorations with that '20s or '30s theme. Old Coca Cola signage and so on. It was a remarkable piece of work. I remarked to my wife, "where are the TVs?" Blythefield has three huge projection screens on which videos, the words to songs and sermon notes are projected. None were visible, just the stage props.
When the service started, the thespians invaded the auditorium all in their costumes. Over a hundred of them surged onto the platform. They do this each year, except they wear different costumes each year. They sang and then segued into a song-and-dance routine that was as good as any musical production I've seen in Grand Rapids. I joke about the dancing girls at church, but today both men and women were kicking their legs up.
I appreciated the skill and work that went into the show. That's one of Blythefield's strengths, the show before the sermon. I realized that my opinions notwithstanding, this could be what reaches some people who'd otherwise be consumed with ennui or absent.
One of the thespians is a tall fellow with a beard, you know the kind of beard you've seen in every picture of Jesus you've ever seen. Jesus goes to my church. I see him every Easter season. This year, Jesus was easy to spot because whereas all the other thespians were wearing costumes from the early 20th century, Jesus wore the bathrobe costume we imagine the ancients clothed themselves with.
Then someone flipped a switch and a projection screen unfurled to allow projection of the words to the songs we were to sing. (It wouldn't be church without video, would it?) And after some peppy songs with a solid back-beat, they showed a video on that big screen.
But I found the video confusing. I told you that Jesus goes to our church. But the video showed a different guy in a beard who wore the bathrobe costume. He didn't look like the Jesus who goes to our church. Perhaps Jesus is like Santa Claus: the guy in my church and the guy in the video are just his helpers. (Someday, I'll ask some hard questions about the 2nd commandment.)
Last year, two movies came out, "The Illusionist" and "The Prestige" that each featured magicians. I rather liked the latter, but haven't seen the former. They seem to have set a cultural theme. As Evangelicals are wont, my church has (six months late) latched onto the fad and the Easter show this year has some kind of magical theme or story-line where some kind of magician comes to town in the early 20th century (thus the costuming indicated above). Perhaps next year all the guys with great pectorals will be recruited for a "300" rip-off.
30 years ago, Francis Schaeffer challenged Evangelicals to engage contemporary culture and I suppose that what I just described is what this entails. I think our failure is that we're six months late, and that we're not setting the pace for others to follow.
Wednesday, March 21, 2007
Theorem and Non-sequitir
If reason is reasonable, the conclusion will be as true as the premises and the validity of the steps to the conclusion.
There's a similar process in forensic procedures where cases are made tallying up the arguments in favor of and counter to the point of dispute. When making cases, facts are marshaled to serve as the premises of a reasoned process leading to the advocate's position.
In the forensic setting, we can't count on the neat set-piece logic of the mathematical proof. So, the arguments tend to be more inductive and the logical steps of the argument somewhat less rigorous.
Now, what has this to do with thinking? There's a cartoon that came out when I was in college. I'm wearing it on a t-shirt as I write this. That was the constant temptation when I was getting my Masters' in Mathematics: I'd be in the middle of a proof and realize the next step I needed to take, but I didn't know how to do it. I dearly wished I could say, "then a miracle occurs," to make the missing step. They don't let you do that in Mathematics.
In Law, I think it's a matter of getting away with it. If you try it in law school, it depends on how closely the prof is watching, or in court, how closely the judge is watching. If they catch you, you'll be handed your head.
There's a term-of-art for the unsubstantiated step in an argument: the non sequitir. The step does not follow. It should be cut and dried, but that's not necessarily so.
When I was taking Calculus, the prof would write up proofs on the board and I would not understand the step that he took. My dullness of mind could not perceive how one step followed from another. The ultimate math-prof cop-out is to say, "this is left as an exercise for the student."
So then, it requires some subtlety to distinguish between the theorem one does not understand and the non sequitir. Charity demands that when someone throws something that appears to be a mismash of non sequitir and gratuitous assertions, that it not be dismissed out of hand. But how hard must one work before throwing up one's hands and saying, "I'm not this stupid," and decide that whatever you're looking at is no theorem, but non-sequitir. Is this from a deep thinker or from a braggart dilettante?
One strategy suggests itself. If your interlocutor has demonstrated mastery of a broad spectrum of difficult subjects and familiarity therewith, it suggests the former. Conversely, if he clutches a small handful of facts that he has difficulty integrating with other ideas, it suggests the latter.
Which am I? I suppose it's safest for me to regard myself a dilettante until proven otherwise.
Tuesday, March 20, 2007
The Spinning Sound That You Hear
This pattern dominated SF writing from that point forward and became a tired, stale stereotype. Everybody wrote robot stories that cast robots in this same negative light.
Then Isaac Asimov thought that perhaps it might be interesting and novel to break the stereotype. He wrote stories about these two engineer-scientist-troubleshooters who had the job of going around diagnosing and fixing interesting robot problems. And the engine of these stories, the plot device that powered them all was the Laws of Robotics: Robots can't harm humans, etc. The structure of the "positronic brain" was such that it was impossible for the Laws to be broken. These short stories were collected in book form and published as I Robot. It was one of my favorite books when I was a kid.
This same riff persisted in the Caves Of Steel novel and the other stories involving the robot detective R. Daneel Olivaw. Also favorites of my youth.
Times wounds all heels, and in 2004, I Robot made its way to the silver screen. I saw the hypes and thought they showed a movie that it wasn't true to Asimov's central idea. So, I made a point to not see this movie.
Eventually, it made it to cable TV and I told Tivo to record it. What a horrid film. The spinning sound you hear is that of Isaac Asimov in his grave.
It seems that computers are truly a sinister, corrupting force, and you can see it in I Robot, the movie. But not the way you think. Pervasive CGI rendering allows the filmmaker to set up scenes where hundreds or thousands of robots can fill the screen and crawl around the screen like ants. Too many movies just sort of omit things like character and story and fill the screen with CGI. This is the sinister corrupting force of computers in cinematography.
That's bad, but what makes I Robot worse is that the nature of CGI in this film. Filling the screen with a hundred bug-like robots all moving around is just wrong. And when they did use the CGI for things like cars or traffic scenes, it looked obviously fake.
Oh, but wait, after the movie's been going on and on and on, the robots take over. Wow, imagine that. Sure, they say that it's to protect us from ourselves. But you know, robots always take over and kill their masters. If the robots don't think of it themselves, they can get the idea from old Star Trek reruns. And then Will Smith has to get the "plot device" and shoot it into the MCP. oops, that was Tron. Well, you can predict any movie's last minutes once they realize they need to push the Big Red Button and you know everything bad will happen to provide obstacles for the hero en route to said button. And when he stands/hangs/lies next to the Big Red Button, he'll have some Witty Remark that he'll say when he plunges the Plot Device into the MCP or whatever, killing it.
I pine for the Old Days when there were writers who could do better than parody the old tired stereotypes, but come up with novel treatments of something. Like Isaac Asimov did in I Robot, the BOOK not the movie.
Sunday, March 18, 2007
Twelves Gates To The Printer
OK, we need fliers, but they're on Forrest, not Grant. Mary made the fixes on Forrest. Then it was time to print the fliers. I have three color printers: HP990, HP8400 and HP7400 that we use for fliers, for photos, and for correspondence, respectively. Since Forrest is seldom used, printing has become problematic. First I tried the HP990, and the network flaked out resulting in wasted paper half-printed with the fliers. And the HP990 ink jet printer was out of black ink. I went to Meijer's and bought a replacement. But the network problem persisted.
Then I tried the HP8400 and MS Publish said "there was a problem". Nothing more useful than that. I went to the internet and downloaded the HP7400 drivers and installed them. On the second try it said the install was OK. Then I printed MS Publish and got the same unhelpful message. OK, Forrest had a network problem I wasn't going to fix.
I was able to copy the MS Publish files to Grant. Tried to open and print from there. NO joy. Grant's copy of MS Publish was '97 and Forrest's copy was '02. What to do? I could not find the Publish 2002 install disk, so I couldn't just update Grant and print from there.
I went back to Forrest and checked "print to file" using each of the printer drivers. Then I copied the resulting PRN files to Grant. Now all I had to do was copy each PRN file directly to its printer.
Interesting. Back in the old DOS days it was simple. Just do this:
Copy/b file.prn LPT1:
But none of the printers are hooked directly to Grant. The HP990 is hooked to a wireless printer server with an odd name of LK96c9ea. It has two queues, p1 and p2. A couple years ago, I figured out how to print directly to it like this:
Copy/b file.prn \\LK96c9ea\p1
But the HP8400 printer has an Ethernet port and the HP7400 printer connects via wireless. It took some doing to figure out how to send bytes directly to these printers. I suppose there's probably a way using the DOS Copy/b command, but I couldn't immediately find it. But after a bit of googling I found I could use netcat or nc to send things directly to the printer's TCP/IP address port 9100. What I found worked for me is this:
nc HPM210QY047Z 9100 < file.prn
The first part "nc" is the program netcat, easily downloaded from the net from a number of places. The second and third parts is the printer/port name and port number, respectively. You can get the port name from the printer properties' Ports tab, scroll down the list until you see one port "checked" and click on configure port. The dialog will appear on which you will find the port name (in my case HPM210QY047Z), a protocol (raw) and a port number (9100).
If you ever find a way to get DOS Copy/b to accept a TCP/IP address and port as a destination, let me know.
Friday, March 16, 2007
Writing Generic / Minimalist Code
But this what-if thinking occasionally pulls my chestnuts out of the fire when someone breaks the promise that they'll never ever need so-and-so (but they do).
Thus, I set my course between Scylla and Charybdis. On one hand, I build something inadequate that must be carefully rewritten to be extended. On the other hand, I build something over-engineered and/or bloated. The principles of Object Oriented offer a path between them. One principle is "program to interfaces."
For the last couple years, I've been doing a lot of Test-Driven development. This week, I put Test-Driven to work in conjunction with "programming to interfaces." I created the interfaces for my current project, and before I had anything more than method signatures and parameter lists, I immediately wrote unit tests to thrash out the interfaces.
My intent was to code up just enough to get Visual Studio reverse-engineer it and thereby get UML class diagrams to use. However, it came together so very well, that the next steps were trivial. Before the day was out, I had gotten much further, much faster than I could have possibly dared to think.
There's one thing to understand OO and what it can do for you. It's another thing to take it to the next level. I'm quite pleased with what I've applied today.
reverse engineered from
These unit tests served to give me an immediate feel for how the software would work and this let me tweak the design so as to get the maximum functionality out of the minimum code.
There is in the principals of Object Oriented software development, a Now, when you have a righteous OO design, it'll manifest open-closed characteristics. The design will be closed to modification and open to extension.
Monday, March 12, 2007
For Mature Audiences Only
All good fun. Strange, but I always thought that "mature audiences" were more like the Masterpiece Theatre crowd. Perhaps an incisive discussion of Hegel or Kant? Nope.
Or maybe it's code: The phrase "for mature audiences only" is code for "immature tomfoolery ahead." Now, don't get me wrong, I like this immature tomfoolery. I just dislike the language being distorted.
Perhaps the disclaimer should be "for juvenile audiences, but not children."
Sunday, March 11, 2007
Consubstantiation
Let's back up a bit. If you have any sort of Christian identity, you know about this business called "The Gospel." You may also know that Christianity denies "salvation by works," and this Gospel is the way God vindicates his justice while offering mercy to all and granting mercy to some. Some. I don't believe I'll see Hitler in heaven. So, if you have any interest in getting to heaven, you've got to concern yourself with this Gospel business.
The ancients worked all this out and there are Latin phrases that say all that I'll paraphrase here. The gospel requires 3 things of a person:
1) You have to know the story that Jesus Christ died on the cross to pay for our sins and that he rose again on the third day.
OK. I also know the story of the three bears and the Goldilocks girl who ate their porridge, etc. But there's a difference between knowing the Jesus story and knowing the Goldilocks story: Christians think the events of the Jesus story actually happened in space-and-time. This leads us to the 2nd thing.
2) You have to believe the Jesus story referred to above is actually true.
One distinction between orthodox Bible-believing Christians and many who claim a Christian identity is our view of history. A hundred years ago folks claimed that it doesn't matter what happened millenia ago, but it is important to follow the ethical standard of Jesus, and dispense with all that mythological stuff of snakes talking, etc. Today you may hear of those who'd "demythologize" Jesus by denying the space-and-time historicity of things like Christ's death on the Cross and his Resurrection. Christianity has a millenia-old insistence that if you are to be a Christian, you must also believe that the story of Jesus' death on the Cross and Resurrection is more than a useful metaphor containing no more than mythic significance.
The above serve as necessary, but not sufficient, conditions for being a Christian. However, Christian teaching has always insisted upon a third element.
3) You have to believe Jesus died on the cross for you, personally and individually. You have to add something more to knowing the Jesus story's details and to believing them to be true. A Christian needs to make a personal claim that those things count for himself or herself.
This always bothered me growing up. I knew the first two parts quite well, but had difficulty understanding that third part. Baptists like to refer to this third step as "accepting" or "receiving" something. I could never understand this. When I got older, I heard an analogy of trusting a chair: that uncertain moment when your knees are bent, you lower yourself and you find out whether the chair will collapse beneath you or not, and this isn't far from Kierkegaard's notion of the leap of faith.
My own spiritual journey took a good turn one time when I was struggling with these things I didn't understand. And I became quite angry with God and told him that I didn't care if he tossed me into Hell, but I told him what I believed his Word promised and that I was going to hold him to keep the promises of his Word and I was here-and-now claiming them for myself.
Now, looking back at that moment, I can see that I came to the end of myself and that I took a sort of Kierkegaardian leap of faith. It wasn't a blind leap: I had been reading Romans 1-5 and had those facts clearly in view.
All this sounds like I did something to unlock grace, but I believe that grace was driving these events, and led me through this process. It only looked like I was taking charge and actively working out my salvation. Instead, grace was working in me and bringing me along that third bit of transforming a "head knowledge" into a "heart knowledge."
So, this business of becoming a Christian is more than just knowing or believing something. There's this added bit that defies concise explanation and formula. I'm sure you can get a better explanation than the one I gave from any of several Christian resources. And depending upon who you read, it'll differ in the details: "letting go," "accepting," "asking Jesus into your heart," and so on. But there's some kind of extra, supernatural bit that isn't magic or ghostly, that gets added to the facts and belief of them.
And that brings us to this morning as I'm looking at the bread and wine. (Because I'm in a Baptist church, I was looking at a cracker and grape juice.) The communion elements remind me of Christ's body and blood.
I really like the Aristotelian idea of substances, and how a substance's essens and its accidens must be distinguished. Aquinas and the Schoolmen were geniuses to apply Aristotle's essens/accidens distinction to the bread and wine becoming the body and blood of Christ. It makes a sort of sense that the "hoc est corpus" should transmute the former into the latter. And since the elements still taste like bread and wine, the Arisotelian essens/accidens business makes it work. Turn this paragraph into a single word and you have "transubstantiation."
But I do not believe in that hocus pocus stuff. (Baptists have an inconsistency, insisting on maximum literalness in interpreting the Bible, but then spiritualizing wine into grape juice. I've never gotten a decent answer, even when I asked in a Deacon's meeting.)
A second way of regarding the elements of communion is called "consubstantiation." I once asked a Lutheran pastor what this means and I didn't get a satisfactory answer. He claimed "consubstantiation" was a strawman made by Calvinists. So, what follows should be ignored if you find a better Lutheran source. As I understand it now, consubstantiation teaches a mingling of the substances: the substance of the bread and wine becomes invested or haunted or charged or infused with the divine substance of Christ's body and blood. My Lutheran friend is now an Orthodox priest, so what I just said may be biased by the Orthodox notion of Incarnation. I am quite enamored with Orthodox thinking about Incarnation, so my perception is further biased at this point.
Officially, what I believe is stated here, but what occurred to me this morning is that something more than mere symbolism is in play during the Lord's Supper.
The ancients' notion of substances have limited applicability given contemporary atomic theory. The bread and wine are made of atoms made of quarks and gluons, etc. instead of "bread" and "wine" substances or mixtures of earth, wind, fire, and water essences.
This morning, I drew an analogy between the Jesus story and the elements of Communion. Could it be that this something more added to the symbolism and symbols? What I have in mind is not quite consubstantiation, but it is close. There's something extra added to the symbols, something that goes past mere matter to Christ's body and blood.
This isn't something changing the substance of the elements through the priest's hocus pocus, but by the individual celebrant of the Lord's supper recognizing Christ's body and blood in them. My Lutheran friend would hold up a photo and ask, "What is this?" and the answer would be a photo. Then he'd ask, "Who is this?" and the answer would be the person I recognized. Partaking in the body and blood so recognized, I promise to myself and to God that Christ's goodness shall be incorporated and lived out in my life.
This last bit is hard to say and as I reflect upon it, I know I've got some bits wrong. The London Confession of 1689 is much more reliable than my ramblings, and even then you should double-check what it says against the Bible verses shown.
Sunday, February 18, 2007
How Not To Pray For Your Kids
A month or two ago, a friend gave me a catalog of Christian kitsch that she said had "bad karma" which I accepted with bemusement. I looked at it and thought, OK. It had some trust cues I look for and thought these guys were probably all right, but I probably wouldn't do business with them. They had lots of resources for home schoolers and were big time into supplying resources to help Christian parents raise their kids right. There were items that I thought were perhaps heavy-handed, but I knew the thinking that went into it and agree with what they're trying to do: raise your kids right.
But something nagged me. The bad karma comment rang true, but I couldn't identify what it was that bothered me about it. I shrugged and it remained a nagging question.
I go to a great church. Blythefield Hills Baptist Church does several things I dislike, but they do some things incredibly well. For one thing, they've managed the cultural shift very well. If you have been in a cave since the 1960s, you'll note there's been some changes to American culture and Blythefield had managed to stay on top of them. You may have also heard of the Psychobabylonian Captivity Of The Church, where the gospel has been recast in terms of psychotherapeutic categories that it is incomprehensible. However, Blythefield, specifically Louis has managed to synthesize the psychobabel and the Bible to come up with a Biblical message that leverages psychology's insights into human nature.
This happened this morning. The notes are available here. Louis hit some really great points that I won't repeat here, but encourage you to read for yourself.
His analysis of anger and fear being "check engine lights" belying wrong beliefs alone is worth the price of admission, but I already said, read the link.
The Bible passage was James 4:1-3 that goes like this:
From whence come wars and fightings among you? come they not hence, even of your lusts that war in your members?
Ye lust, and have not: ye kill, and desire to have, and cannot obtain: ye fight and war, yet ye have not, because ye ask not.
Ye ask, and receive not, because ye ask amiss, that ye may consume it upon your lusts.
And then Louis mentioned two prayers that I would have never considered in this context. Usually, when I read verse 3 of that passage I think of Red Corvettes and Beach Houses. But Louis mentioned praying for your kids. Praying for your kids and James 4:3? How does that follow? Oh. You know how everyone likes to brag about their kids. And if your kids are particularly pious, it reflects well upon your own spirituality, doesn't it? It's a big boost to the old ego and reputation among the other Baptists if your kid grows up to be as big a Baptist as you are. The chest swells with pride just thinking about it.
My sister-in-law is a Missionary. And I love her kids (who are all nearly grown up now) and I recall thinking when they were small how unfortunate it was that their family fortunes, their support levels, were tied to the kids' behavior. I don't know how heavy-handedly they were raised, but I cringe at the thought of what might have been. Similarly, I have friend who was a Christian school administrator (and my kids' guidance counselor). He's also got kids same age as mine. What kind of pressure did HE face when his kids were kids?Now, I think I understand the bad karma remark. My friend who gave me the catalog added a word to my vocabulary last year: individuation. I've often told my own kids and whatever of my friends' kids I could get my hands on that "You have to decide for yourself who you are. You have to figure out for yourself what you believe. Your parents' faith has to become your faith." I thought that was just plain growing up, becoming mature. And my friend told me that is called individuation. I suppose this is one of those psychobabel jargon terms.
The bad karma is when you raise your kids and you pray for your kids for your own vain glorious pride. It's natural to love your kids and want them to exceed you. It's natural and wrong to use them as props in your own little stage play entitled, "look how righteous I am, and how my righteousness has infused my kids."
It is possible to avoid this anti-pattern when raising your kids. I think it starts with priorities: is God ahead of the kids? is your spouse ahead of the kids? are the kids ahead of your reputation? I wonder if my friend's "bad karma" came about because she's seen folks who put their reputations first. Then, acting from those mistaken priorities, sought resources that they misused thereby creating bad karma.
Friday, February 16, 2007
Gracious me!
Next day, the queen was displeased and she vowed to kill Elijah. Shortly thereafter Elijah is cowering in a cave on Mount Horeb. This guy was Spiritual Looooooser, completely ineffectual.
We often take the two stories in isolation. But let's smoosh them together. What changed? Is there some documentary hypothesis where you've got one brave Elijah and another cowardly Elijah? I think not. Instead, we see the difference that grace makes. One guy is Elijah-with-grace; the other guy is Elijah-without-grace. That unseen business of God either backing you up, or leaving you to your own devices. Makes a difference.
So I'm working this afternoon and I hit a stumbling block. My software just isn't matching what it ought to be and I'm feeling like a complete moron. Sometimes I marvel at how inept I am at sorting out a problem and today was one of those times. I got up and poured the last of the coffee. I realized that I hadn't prayed for smarts. So, I send up a quick silent prayer to the effect of asking me to see where I was going wrong.
I sit down and five minutes later I've forgotten the prayer and it hits me and I see that the way these three things interact works differently when one of them is a "premium" versus a "discount" and I change my code accordingly, and voila, it works. This puts me in full-gloat-mode and I'm about to move on to the next issue. I'm feeling pretty good and pretty smart for a change.
And then I remember that prayer of a few minutes earlier, and I remember that Elijah story. Oops, I can't take any credit for what was obviously an answer to that last prayer.
So, if you ever want some software problem solved, I suggest you ask for Steve-with-grace.
Monday, February 05, 2007
Speaking to Post-monogamy
negotiations between
members of hook-ups
I was listening to Austin City Limits and the band that came on was called Rilo Kiley. I'm culturally backward enough that they were new to me. Since I was working, I listened with only half an ear. Toward the end of the set they sang a song that I started to notice the words and then the words haunted me. I had Tivoed the show and rewound and relistened to pick out more words. Google provided the full lyrics. The song was "Does He Love You?"
The song tells the story of with two women who are close friends. One moves away from California, finds a man with whom she gets pregnant and marries. The second woman writes and in the correspondence reveals that she, too has met a man, but that he's married. The gotcha is that the married man is her friend's husband. The non-California woman doesn't know the California woman has snaked her man, but she does hear her husband on the telephone promise to leave his wife and goto California. She, in turn, calls her California friend, not knowing her role in the tragedy. I've done the lyrics poor justice, you should read them for yourself.
The eternal triangle: the stuff of a thousand stories. As I thought through the lyrics and thought through the mindset and culture behind the lyrics. My first thought was, "polygamy would solve this problem (while creating several new ones)." A more serious thought had to do with the impermanence of marriage in our society. Singles don't lightly enter into marriage and seem to spend extended period of "hooking up" before they do. But when singles do marry, their unmarried peers float around like free radicals that might disrupt the marriages that do form.
It's common to think that the world is going to hell in a hand-basket and that this younger generation is all fouled up, then reflect fondly upon the virtues long ago. "Ah, the good old days, when men were men, and women were property." In my youth, the Women's Movement asserted that the patriarchy's institution of Marriage was hopelessly sexist and the Liberated woman would do well to avoid it. Society compromised and the no-fault divorce became popular and one was honor-bound to leave a marriage that interfered with one's self-actualization. Or maybe you should ignore a marriage if your special someone is already married.
It seems this is the mindset when I read the lyrics of "Does He Love You." Hook up if it's useful. Hook up with someone else if things change. In the song, the lyrics are from the perspective of the women. The male is depicted as moving from mating partner to mating partner so as to spread his seed as widely as possible. This thinking is post-monogamous.
The result is a an extended series of negotiations between the sexes that are completely alien to old fogies like me raised in a monogamous culture. But the negotiations are a normal consequence of people taking a utilitarian approach toward life and relationships without the constraint that marriage be permanent.
My daughter came back from college over the weekend. She's become disenchanted with her church and trying others. She's annoyed with the pastor who's from a broken home and who seems to make a focus of that brokenness in his or her ministry. "Enough of the sociology already, let's hear some bible teaching." What a great daughter I have. Conversely, I've heard a lot of folks complain that Bible-teaching churches ignore social problems like divorce.
I think that something in the middle is needed. We can't ignore the post-monogamous character that contemporary society has taken on. In fact, we should pronounce judgment upon it, condemning what the Bible condemns and remaining silent where it is silent. The Bible has aspects of it that are pre-monogamous as we see in the family life of the Old Testament patriarchs. It also depicts aspects that are decidedly monogamous, such as where Christ asks the woman at the well to bring her husband. We should see the societal brokeness and the commonly broken homes around us through the lens of the Bible's depictions of such arrangements.
Having difficulty with step-mothers and step-fathers? Or not getting child support from that deadbeat dad? What did Hagar do? and how did God say that she should be treated? Or take that story about Onan. Everyone thinks God disapproved of him because of his sexual practises, but given the larger economic context within which he acted, I think it had more to do with God disapproving of his cheating his brother's widow of her inheritance. I think that the Bible's Old Testament has a lot of useful information about how families behave outside a monogamous culture.
People do become disenchanted with monogamy and respond by doing things that have consequences as sure as Isaac Newton dropping an apple. The Bible takes a dim view of those who treat their spouses as disposable or fungible objects. This has something to say to our society about common practices like "the starter wife" or the mid-life crisis "spouse upgrade." These are economic considerations. There are other, emotional considerations to be minded, particularly when children are involved.
Sunday, January 28, 2007
Trademarks and Copyrights
I hold a healthy distaste for commercialism in religion in general and in Evangelical Christianity in particular. I've whined about that long and loud elsewhere. This Sunday I was watching the Christian Education minister of my church give a presentation that ended with recommendations for several helpful resources that the church will provide to families AT COST. I've no gripe with my church for offering what looked to be a quality, professional set of materials guaranteed to...
idunno, guaranteed to do everything humanly possible to...
well, you know, make your kids, uh...
you know, turn out right.
Hmmmm. I've always had a distrust for Christian Education professionals, too. But I digress.
There on the three huge projection screens at the front of the church were beautiful PowerPoint slides of the helpful resources the church recommended and would provide to families at cost. The price seemed reasonable, too. Of course, the price did seem to be more than that of mere paper and ink. It was roughly the cost of a trade paperback book.
I didn't think much bad about that until I saw OneWord.
I don't remember TheWord that was projected on the PowerPoint slide, but it was one of those TwoWord concatenations with the first letter capitalized and AnotherLetter inside was capitalized, too. This is annoying, but I'm innured to this SortOfKitsch.
But riding at the end of TheWord were two little subscripted capitals: TM. YouKnow™ it was trademarked.
At that point, my mind left church. I started thinking about intellectual property law. Intellectual property law exists in three modes: trade secrets, copyrights, and trademarks.
If you own intellectual property, you must "stake your claim" by indicating your ownership via placing a copyright notice or trademark on your work. And you must insist that everyone else mark that thing similarly. This is just complying with the law of the land. When you open the hymnal (remember what those looked like) or see the last slide on the PowerPoint display with a Copyright notice, it is there at the insistence of the copyright holder.
No doubt, the ™ I saw at church had been placed up there at the insistence of the people that my church was buying these resources from.
It is their right. It is the law of the land.
But Why?
The trademark exists to do only one thing: it asserts the right of the trademark holder to sue someone who misuses the trademark. It gives the trademark holder the right to sue. The right to sue. To sue.
There is a book that was written so long ago that no copyrights on it are possible. It was a compilation of several authors, one of whom a tentmaker who said this:
Dare any of you, having a matter against another, go to law before the unjust, and not before the saints?
Do ye not know that the saints shall judge the world? and if the world shall be judged by you, are ye unworthy to judge the smallest matters?
Know ye not that we shall judge angels? how much more things that pertain to this life?
If then ye have judgments of things pertaining to this life, set them to judge who are least esteemed in the church.
I speak to your shame. Is it so, that there is not a wise man among you? no, not one that shall be able to judge between his brethren?
But brother goeth to law with brother, and that before the unbelievers.
Now therefore there is utterly a fault among you, because ye go to law one with another. Why do ye not rather take wrong? why do ye not rather suffer yourselves to be defrauded?
Nay, ye do wrong, and defraud, and that your brethren.
Know ye not that the unrighteous shall not inherit the kingdom of God? Be not deceived: neither fornicators, nor idolaters, nor adulterers, nor effeminate, nor abusers of themselves with mankind,
Nor thieves, nor covetous, nor drunkards, nor revilers, nor extortioners, shall inherit the kingdom of God.
Now, given the aforementioned. We can draw some reasonable inferences. The Bible forbids two Christians from suing one another. However, it does not forbid a Christian from bringing suit against a non-believer to assert his rights. Nor does it forbid a Christian from defending himself in court against suits brought by non-believers.Obviously, the purveyors of trademarked or copyrighted materials who insist that their marks appear on PowerPoint slides or in hymnbooks or church bulletins cannot be sure that the people they want the right to sue are Christians or not. Perhaps these vendors believe that any customer who'd violate a copyright is a non-Christian.
Conversely, it seems more likely to me that the vendors themselves are not Christians and thus free to bring suit against anyone.
Monday, January 15, 2007
The Time Of Second Dreaming
This quote has stuck with me and I've tried to unpack its meaning. For one thing, I think of myself and my ambitions. I've noticed that there are times of my life when I've been more ambitious and less. And I've been reflecting upon the dreams I dreamed as a teenager. I think that my substance today is the product (as in multiplication) of my ambition times my dreams.
I've enjoyed a modicum of financial success. I'm comfortably middle class, and I've made more money than my father. That's what I had to have. I had vague dreams of being rich, but I never put a lot of effort to that end. Let's say someone dreams of being a millionaire and his ambition is 10%, then maybe he'll end up with $100 grand.
Dreams set the course of our futures. But merely setting the course does not suffice. Something has to power our lives and that is ambition. I've seen dreams and ambitions wax and wane over the years. And I think of that thing I went through called Midlife Crisis.
When a man goes through Midlife Crisis, he realizes there are some dreams that will never come true. Or perhaps, if he's ambitious enough, he realizes he's achieved his dreams and he's restless about what to do next. Some wig out, buy a red Corvette and a blond spouse-upgrade. What's going on?
I think Midlife Crisis is the time of Second Dreaming. You look at your teenaged dreams, and what you've accomplished at the midpoint of your life, and you start dreaming a mid-course correction. I did this several years ago and what came out of that time was a recollection of my interest in philosophy. I had been quite good at it and quite interested in it in college, but in grad school and in work afterwards, I left the philosophy alone and concentrated upon geekish and professional considerations. And I also started writing then.
Now, I'm looking at my ambition, at my drive. I can coast or float, Or I can stomp on the gas pedal and crank the volume to 11. My decision really.
I speak of teenage dreams and midlife dreams as if they are the only times one dreams. I think this is not wise. We ought to periodically look at ourselves, where we are, who we are, what we have and decide whether we need more, less, or different. It's the difference between Big Up Front Design versus Incremental Deliveries.
I'm probably not making sense. It's late and I shall go to sleep.
Perchance to dream.
Sunday, January 07, 2007
Love and Mercy
That's love. Not mercy.
Let me give an example. In Dashiell Hammett's short novel "The Thin Man" Nick and Nora Charles are the married protagonists. Nick has married extremely well, but he has the reputation of being a lady's man. A former client's daughter has grown up with a crush on Nick and is now in her early 20s. At one point, Nora walks into the girl's bedroom and finds Nick on the bed hugging the girl. Looks bad, right? Turns out that Nick is not putting the moves on the girl. He's comforting her. Nora doesn't get all jealous and huffy. She extends Nick the benefit of the doubt. Nick is truly innocent of infidelity and Nora treats him as if he's innocent. This is love.
I have marveled at how much worse I treat those closest to me than I treat strangers. Why?
With strangers or recent acquaintances I know nothing about them. There's a whole ocean of doubt. Lacking a context within which to interpret their words and actions, I put the best possible spin thereon. This isn't anything special. It's just loving my neighbor. Simple Christianity 101.
I once described love as giving the other every benefit of every doubt. The person I was talking to asked me, "how is that different from being a doormat?" I replied, "what do you do when you run out of doubt?" If there is no doubt the other is mistreating you, love doesn't demand that you ignore it.
I can think of people that I've "given up on." I've no desire for relationship with them and I maintain only the minimum contact. In one case, I conversation is like walking through a mine field and I just don't want to blow off my foot again. I have "run out of doubt" where this person is concerned.
You'll recall that Mary and I were having this discussion on the way back from church. Our conversation reminded me that MERCY goes one step past LOVE. Love prompts me to cut the other some slack when they might not be guilty. Mercy goes past that. Mercy prompts me to cut the other some slack when they are certainly guilty.
Like after you run out of doubt?
I know I need mercy. If you ever meet someone who doesn't need mercy, he's not a Christian, no matter what he says.
And I know I should expect the same sort of mercy that I dispense. So when "give up on" people and shrug off further relationship, I'm not being merciful. In fact, my attitude is relatively harsh. And wrong. I desperately need mercy. I guess this means I no longer have the option to "give up on" people.
That's why conflicts with family members are so troubling. We naturally love our family. But we know our family members better than anyone else. Not much doubt. I have two uncles, one jolly and one bitter. The bitter one remembers some insult or injustice done to him as a child. I don't know what it is, and I suspect he's absolutely correct about it. But he won't forgive. And it's made him a bitter old man. He's "given up on" his siblings. I don't want to be that guy.
I think we do not naturally MERCY our families. Or maybe we need to be more intentional about how we MERCY family members. My parents are gone, but my siblings and my wife and my children all have the capacity to do something that makes me disgusted and grumpy, etc. And because I know them so well, I can realize there's no excuse. When there's no excuse, we're most strongly moved to "give up on" people and walk away. When there's no excuse, that's when we are called upon to MERCY the other.
My wife taught me something important coming home from church today.
Monday, January 01, 2007
Realism and Strong AI
This idea was picked up by mathematician Roger Penrose. But he added a spin to it I hadn't considered. If my "soul" is essentially a program, then it has the same ontological status as any other program. That's where some considerations by Alan Turing come into play. Turing was able to define a "space" where all computer programs that could possibly be written reside. Thus, we end up with a result that most Strong AI proponents would find revolting: a sort of metaphysics that defines a platonic realm where mathematical objects, including turing machines, or these Strong AI souls.
What got me thinking this way was something R.C. Sproul said today on the radio. He spoke of human pre-existance--another idea I do not believe in. And referred to a type of "realism" that teaches that before one is born, he exists "in the mind of God." This is another thing I don't believe, but it makes some sense.
This all fits into a Platonic metaphysic where mathematical objects like the theorem of Pythagoras and more complex things like turing machines, have a "real" existence in the mind of God. This also tends to fit with the theonimist stuff that Herman Dooyeweerd's notion of logos.
Saturday, December 30, 2006
Ender Wiggins' Slander
I really liked that line. Coming from Mr. Card's Mormonism, it gave me a look at the world from a perspective not my own within Christianity. I love to look at what I know from different perspectives and understand what the outsider perceives.
"I... learn from my sins." Each of our sins are truly evidence of our need to learn. It is a very good thing to learn from one's sins. Technically, learning changes the mind. And I've always learned that the Greek word for "change your mind" is metanoia, and that metanoia is the Greek word in the Bible translated "repent." When you see the guy in a sandwich board that says, "Repent," the word means, "Change your mind." Thus, Mr. Card's character Ender is voicing the fact that there's a sense in which he repents of his sins. This is an idea at the core of what it means to be a Christian.
I've come to think that Christianity's Gospel has been hijacked with some odd, unscriptural accretions. This business of asking deity, Jesus, to enter one's heart, a pump for blood, never made sense to me. Same goes for "accepting Christ." What exactly does it mean to "accept" deity? These accretions hide what I believe to be the true Gospel: there is Mercy in Christ. Repent and believe to obtain it. Repent and believe. Repent. Change your mind.
Repent of my sins? Change my mind about my sins. Learn from my sins. These are awefully similar if not the same things. So, I'm all with Mr. Card and Ender, by all means learn from your sins for judgment is at hand.
This is not Ender Wiggins' slander.
Instead, he said, "I don't pay for my sins..." before he said he learned from them. Where and how could he get the idea that sins have to be paid for? Rhetorical question. We all carry within us the sense of Justice as image bearers of God. Justice demands that evil be punished. The lady with the blindfold holds scales. The scales of justice must be balanced. Christianity, and Judaism, and I presume Mormonism all assert the necessity for justice.
What Ender Wiggins gets wrong is that he thinks that sins are paid for by the sinner. Or that Christianity teaches that sins are paid for by the sinner. A bit of careful thought by Mr. Card would quickly disabuse him of this notion, for surely he's seen the central symbol of Christianity, the Cross of Christ. The Christian who is truly a Christian never pays for his sins and never thinks that he can and never thinks that he does. The Christian believes Christ does the paying, and that belief is counted for Righteousness. With that out of the way, the Christian can get about the business of learning from his sins.
So, how is it that Mr. Card knows about the Cross, even superficially, yet has Ender Wiggins claim that Christians "pay for" but not "learn from" sins. I think it's the Roman Catholic notion of penance. The Christian, even the Roman Christian, never pays for his sins. But the Roman Catholic often pays a penance. Penance is a mixed thing. When I've offended someone and seek reconciliation of the relationship, a peace offering helps restart the dialog. I'm not Catholic but I've occasionally been assigned a penance by my Catholic friends. And when I've not really been repentant about doing something that I thought right, but my boss would think wrong, I've asked what penance he'd like now that I'd given him a fait accompli.
This notion of penance gives the wrong impression to outsiders. And as you can see it can also serve as a substitute for repentance. And the penance can serve as an occasion for Simony (the attempt to buy grace for money named after Simon the sorcerer rebuked by Peter in Acts). The worst abuse of the penance in history served as the spark that lit the fires of the Reformation, specifically the sale of indulgences. "Sobald das Geld im Kasten klingt, Die Seel' aus dem Fegfeuer springt" As the gold in the coffer rings, the soul from purgatory springs.
I think this is why Mr. Card put slander about Christianity in the mouth of Ender Wiggins. I think the ease with which the doctrine of penance is misunderstood both within and without The Church strongly argues against Romanism. My own Reformed thinking insists that grace is free. Grace is free.
Friday, December 29, 2006
Seasonal Affective Disorder
Last Saturday I had to do some work at the apartments. I own a coin-operated dryer. I tried to adjust the control unit to give my tenants more time for their money. Instead, I halved the time. I'm a better capitalist than I tried to be. Thus, last Saturday I gave the dryer another try. I don't quite understand the process, so I would try something then wait to see how long the timer would stay on. I took a lawn chair and a good light and a book. If I succeeded on the first try, I'd be gone an hour. Instead I would try something and read for a half-hour or so, then try something else. I never quite figured things out, so I was gone a long time Saturday night.
I read and enjoyed the solitude. Mostly, I enjoyed the light. The dryer is in the basement and the basement is not "a clean well-lighted place." So, along with the book and lawn chair, I packed a drywall light to take care of the "well-lighted" part.
If you don't know what a drywall light is, and you live in Michigan, you're in trouble. When days are short, I don't get enough light. I either have to jet south to Florida, or I need a drywall light. It's a stand with two 500 watt halogen lights attached. They get smoking hot and you'll burn yourself if you touch one. They also make a darkened basement as bright as a sunwashed tropical beach.
...just a second...
They also have the same effect on my family room where I'm typing now. Every winter when I start getting feeling grumpy and ticked off at everyone, I pull out the drywall light and set it up in the family room. It isn't something you'll see in Good Housekeeping or any home design magazine. But if you sit next to a drywall light for a few hours, you'll forget how short and how gray the winter days are.
They say that the post-holidays season is hard and that people get all depressed at this time of year. I don't think it's because the days are post-holidays, instead, I think it's because the days are so gray and short. I recommend a drywall light. You can find one at any big-box home improvement store. I googled up this , but if you're feeling ornery, just goto Menards or Lowes or Builders' Square. It will cost less than a shrink or a tropical vacation.
Monday, December 25, 2006
The Emperor's New Haircut
This is why I became a geek. Later in college I took Contemporary Literature and I had minored in philosophy. My opinion of contemporary literature changed somewhat. I figured (accurately) that I could always bamboozle any lit prof by just putting in existentialist philosophy.
A few years ago I started writing and I wanted to write well. So, I started reading contemporary literature again. This included a revisit to Ernest Hemingway and other stories that I'd put down and think "what's the point?" This time I noticed something different. There still wasn't any point to the stories, but I was middle-aged and I had done some living. These "pointless" stories were able to convey something about life and something about human nature.
Mary and I were discussing this on our walk. She mentioned that it's sort of stupid to teach this stuff in high school to kids who haven't lived enough to recognize the truth of such character-driven stories. I agreed. I still think the emperor has no clothes.
All the fuss and bother about Hemingway is indeed the fuss about the Emperor's new clothes. The thing about contemporary literature is indeed much ado about nothing. The Emperor is naked. But he does have a new haircut.
If you're a geek who writes, the way to bamboozle the English majors who happen to be Editors is to make sure you know howto cut hair.
Friday, December 15, 2006
Performance Review
I find that bosses in performance reviews tend to have different approaches. Some, who've read The Minute Manager look for a way to "catch you doing something right." Others tend to look for some imperfection to try to "improve you." I have two different agendas during a performance review. One agenda is to identify what I can do better than anyone else and then do more of it. The other agenda is to identify what I'm failing worst at and then... AND THEN WHAT?
There's two ways to deal with what I'm failing worst at. 1) figure out "how" I'm goofing up and conquer that weakness. 2) figure out how to avoid doing what I'm weak at and do that less.
This is a subtle point that's missed by too many people. If I'm good at X and I'm bad at Y, then I might work at getting better at Y. ME, I'll charge ahead and try to figure out howto get better at Y. This is stupid. Smarter of me is to figure out how to ditch Y, opening up more time to do more X.
But first you have to know what is X and what is Y. You have to know at what you suck. At lunch today we were talking about the Japanese and German attitudes during WW2. It's common to believe they thought they were the ubermen much better than anyone else. Superiority was their birthright. It wasn't, but they thought so. I like to say that "Germans make no small mistakes." You have to acknowledge the possibility that you're ignorant or wrong to have any hope of learning or correcting yourself. If I believe I'm inherently superior in every respect, I'll deny the existence of any weakness in myself. I won't know what's Y unless I can get a clue.
The person who is least likely to learn is someone who thinks he knows everything. The Pharisees could never be forgiven because they denied they'd ever done anything wrong. This idea generalizes. In my performance review, I had my bosses tell me where I'm strong and where I'm weak.
I've got to listen carefully to hear what I don't want to hear. It's human nature to hear bad news and then spend whatever energy it takes to explain it away. When I was a Deacon at Trinity, folks would leave the church, when they'd leave sometimes they'd write a letter explaining themselves. I was always annoyed when the Deacon board would talk and talk until we'd explain it away and make no effective changes addressing the reasons cited.
This brings to mind the Bible passage that Louis is going through at Blythefield right now:
But be ye doers of the word, and not hearers only, deceiving your own selves.
For if any be a hearer of the word, and not a doer, he is like unto a man beholding his natural face in a glass:
For he beholdeth himself, and goeth his way, and straightway forgetteth what manner of man he was.
But whoso looketh into the perfect law of liberty, and continueth therein, he being not a forgetful hearer, but a doer of the work, this man shall be blessed in his deed.
If any man among you seem to be religious, and bridleth not his tongue, but deceiveth his own heart, this man's religion is vain.
I figure the anti-pattern I saw in the Deacons' meeting was finding a way to behold our failures and then finding a way to go our way and forget what we'd just heard. This may not be fair, but it seemed that way at the time.There are some specifics of this passage that I want to point out. I think that the metaphorical glass or mirror of this passage is the law. The next verses speak of the perfect law of liberty. And elsewhere we see that the Apostles taught that God's law serves the role of a mirror, showing us our faces are dirty.
In a business setting, if you find you're weak at Y, you should merely avoid doing Y. In a personal, moral, setting, if you find your face is "dirty" at some point of the law, you should endeavour to avoid more lawbreaking in the future and use the "soap" of grace to clean your guilt.
I almost didn't paste in that last verse. Everything I've said above is supported without it. But it's right there and I think I can take a personal application from it. I think of what I've written and said. I suppose somethings I write well, those are my Xs. And some things I write poorly, those are my Ys. That's what I sat down to express in this little note.
But then I took a delivery from the clue train. I try to make the habit of asking the unwanted question of "am I guilty of this?" And that last verse speaks of bridling one's tongue. Ah yes, I see. I owe some people an apology for speaking harshly and unknindly. I wonder if I'm going to do anything about that...
Wednesday, November 29, 2006
Prophesy Conference
I've seen more than my share of dispensation diagrams. One of the first books I read after I quit being an agnostic/atheist was Hal Lindsay's Late, Great Planet Earth. But it was none of that.
The first time was when I was reading a book written in the 1940s by C.S. Lewis and he precisely described the contemporary NEA. The second time was when I was watching a 10-year-old clip from the 700 Club where Pat Robertson is interviewing Francis Schaeffer and the latter was precisely describing the mainstream media's groupthink. These guys had this amazing ability to say things that would have topical relevance decades later.
So, I was talking to one of my daughter's friends at Umich and learned he was reading How Shall We Then Live by Francis Schaeffer. I related that my job in college involved showing the eponymous film series in various spots on campus, and I had seen it about 3 or 4 times. As well as when I saw Francis Schaeffer in person in Indianapolis and saw the 10-film series then. He disclosed that the DVD was now available and soon after I had warmed up my credit card and purchased it.
Last night I was watching the chapter on non-rationality in culture. It had a lot of goofball 60s drug use stuff that looked terribly dated. And then he moved onto a description of Existentialism and the various post-rational modes of thought. Nothing new here, I thought. I'd been a student of such things back in the day and I'd managed to remember most of it. However, when Schaeffer moved onto neo-orthodoxy, he started talking about Kierkegaard and Heidegger, et alia in terms I found familiar. And as you would expect Paul Tillich and Karl Barth were right there. These gentlemen provided a Christian theological interpretation of religious existentialism. Also familiar.
And also much more interesting b/c I have an ongoing argument with my Sunday School teacher about the orthodoxy of Kierkegaard. I don't think he was. So, my ears perked up a little and then I heard Schaeffer say something I hadn't caught before.
Schaeffer had described the psychodelic movement and the proposals that people be given drugs like LSD to help them find their own truth, to find some truth inside themselves. (As opposed to objective truth.) Schaeffer then characterized these non-rational/post-rational religion users as using religion as a drug.
That's it. The old opiate of the masses business. Karl Marx and Francis Schaeffer agree about this sort of religion for completely different reasons. Marx believed all religions were bogus and fictitious--it just made its adherents feel nice because it was divorced from objective truth. Francis Schaeffer would never assert that all religions are fiction, but he would acknowledge that some are more or less so.
Religion is a drug when it lives outside rationality. Religion outside the bounds of reason to Schaeffer, and every Christian like him, is mere drug use. It's a mere palliative that makes the user feel good, but it does not engage reality any more than a drug trip.
Pope Benedict recently pointed to the rational nature of deity and encouraged others to use rational dialog as the basis of interfaith exchange. I'm not saying anything about Islam today, but I do find it interesting that reason, qua reason, is endorsed as valid in a religious context by both the Reformed Schaeffer and the Roman Pope.
Sunday, November 05, 2006
Reverse Engineering Hemingway
Consider "The Short Happy Life of Francis Macomber." I recently heard an audio recording of a reading of this short story by Ernest Hemingway. When it was done, I went "Wow. What a great story! How could he write that?"
First off, a story like that with a WOW climax is designed from the beginning with Francis Macomber's sudden death. Step backwards, how does he die? His wife shoots him. Step back, why does she kill him? They have an unhappy marriage. Why? Because they despise each other. Why don't they divorce? Because he is terribly rich and she's too old to find a richer husband. Because he is a coward.
A coward, eh? What disturbs the status quo that causes her to kill him now? He finds his nerve. Not all cowards are doomed to stay that way, some grow up and become men. (Remember, this is Hemingway, and men are men and Women are cruel decoration.) If she doesn't kill him right now, he'll leave her.
All right, what setting will have a man manifest cowardice and shortly thereafter find his nerve? Hemingway likes Africa, the American reading public likes Africa, and a big game hunt is a pastime of the rich where there are lots of guns about. Easy enough to make the murder look like a hunting accident. And with Africa being fairly remote you don't have much in the way of law enforcement about, and African big game guides make for better characters than, say, Canadian Indian guides.
Moreover, Hemingway has spent his money from the other stories he's sold going to Africa and doing manly things there. He can use his journals as filler until he gets the word count he needs.
OK. If I were Hemingway, I'd have the outline of the story set (in my head at least and if I'm me, i'll have it on paper). With the outline clearly defined, we can drop a few clues to foreshadow the climactic murder scene, but give them a plausible non-murderous meaning in the immediate context so as not to spoil the surprise when Macomber catches a bullet from his wife.
All right, now Hemingway can start writing.
No, wait. Not yet. He needs a hook. Something that'll cast that "can't put it down" spell on the reader. Start with a celebration that has a dark shadow inside it. Yeah, they return from the hunt with the bearers carrying Macomber to his tent while he's miserable, his wife is openly sorrowful, but subtly contemptuous, and the guide is disgusted and wondering how the rest of the safari will go. OK. everybody's unhappy and the reader doesn't know why?
Great, start writing...
Wait, spin the ending so that the reader isn't quite sure if its murder or not. Yeah, ambiguity is good.
Tuesday, October 31, 2006
John Kerry's Joke
Mr. Kerry and the Democrats in general claim that this was a lame joke that didn't work. Watch the video for yourself watching Mr. Kerry's body language and the expression on his face. Now, goto YouTube and enter the search term "stand up comic," and watch ANYBODY, noting his body language.
Now look at Mr. Kerry's video again. Does it look to you like Mr. Kerry is telling a joke?