11.12.03
Posted in MainPage at 9:52 pm by admin
2003, November 12th
Here is a story I tiraded about last year. It was, in fact, my most recent Tirade. I guess I’ve mellowed.
Anyway the reason I bring this up now is this story recently published in the Arizona Republic which follows up on the reason for my Tirade. I could not help but laugh at the quote: “Beware of what you ask for.”
I think the lawyers would have been better off if My solution had been implemented. <grin>
Permalink
08.02.03
Posted in MainPage at 9:50 pm by admin
2003, August 2nd
About 23 years ago (as of this writing) I descended into the murky depths of Fantasy Role Playing Games, most notably Dungeons & Dragons. It was several years later that I finally clawed my way out. Don’t get me wrong. I enjoyed the experience. I see nothing wrong with FRPGs. For me, however, they turned into something of an addiction. (Aside: for an amusing attack on FRPGs, inaccurate in its entirety, visit: www.chick.com For pity’s sake, an 8th level Cleric getting invited into some real life cabal, yeah, right. You gotta get at least four characters to 16th level before that happens.
From this experience, I made some life long friends and learned many valuable lessons in human interaction. My friends and I also developed some interesting (to us, anyway) thoughts on language. One was sparked by an article in Dragon Magazine which described the language of thieves in the D&D world. This language is called “Thieve’s Cant.” And is supposed to be this ultra-secret way for thieves to communicate. Dragon magazine published a primer on the language along with notes on some of its eccentricities.
Our favorite was the fact that Thieve’s Cant has two different words that each translate to, roughly, the first person plural pronoun, “we.” The first of these two “we(1)” words is used to indicate the speaker, the person or persons addressed and (perhaps) others. The second, “we(2)”, is the more amusing of the two. It means the speaker and some others but specifically excludes the person or persons addressed. They gave an example of the typical use of the second form that went, essentially: “You two guard the door while we(2) count and divide the treasure.” If one were to attempt to get the same meaning across in spoken english, one would have to emphasise and extend the terms “you” and “we(2)” and accompany them with several gestures.
We(2) began to refer to this second sense of the word as the “Thieve’s we(2)” while the first sense became known as the “Common We(1).”
This important but subtle distinction festered in our little minds to the point that we(2) noticed other uses of the overloaded word “we.” Such as, the “King’s we(3)” which means me and no one else, but we(3) are so important that “I” is insufficient to refer to our greatness. Then there is the “nurse’s we(4)” meaning only the singular party addressed, as in “How are we(4) feeling today.”
The final sense of “we” that we(2) identified, we(2) called the “Manager’s we(5).” This sense is typically used when assigning some particularly odious task or identifying a shortcoming. It’s meaning is intended to include the person or persons addressed, perhaps some others, but specifically not the speaker. A prime example of the need for this distinction is the observation, “We(5) need to be more careful how we(5) clean out all the human excrement from beneath the toilet tank.” Clearly, a manager would never involve himself in such a task, so the correct meaning of the word is obvious.
Props to my bud, D.M., who reminded me that I really needed to write all this down. We(5) may owe him a debt of thanks.
It should be noted that Dungeons & Dragons, D&D and Dragon Magazine are probably trademarks, possibly even registered ones, of someone and that this article is not an authorized work of any of those trademark holders.
Permalink
06.02.03
Posted in MainPage at 9:49 pm by admin
2003, June 2nd
I work for SGI. SGI laid off 10% of its workforce last week. Given my track record, I would have assumed that I was in the 10% and not the 90%.
I still work for SGI.
Will miracles never cease?
Permalink
03.21.03
Posted in MainPage at 9:48 pm by admin
2003, March 21st
A little lesson on the cumulative effect of: The Gulf of Mexico, solar heat, a low-pressure centered over New Mexico, the Rocky Mountains and up-slope cooling.
So, we had all of these conditions this week. The effect of the Gulf is that there is a large mass of humid air at sea level in the area of Texas. The effect of the sun is that this air is warm and stays humid as it crosses into Oklahoma and Kansas. The effect of the low pressure zone over New Mexico is that it forces the humid warm air quickly north through Oklahoma and Kansas and then west across Colorado. About a third of the way through Colorado, this warm, wet air meets the Rocky Mountains and goes up. As the air goes up, it must become less dense, hence cooler, hence less able to hold moisture.
Practical upshot of these effects? Three feet of heavy, wet snow on my front lawn, driveway and street in less than 2 days. I missed work on Wednesday. I could not get my 4-wheel drive truck turned up the street to get out of my neighborhood. So we stayed in.
Other effects that have only become apparent since digging out? We lost the top 6 or so feet of our blue spruce. Two of our neighbors trees were up-rooted and/or utterly destroyed by the snow. Nice green grass in the areas where the snow has melted. Apparently, grass loves snow.
We still have a few cubic yards of snow where the sun hasn’t melted it. Anyone want some?
Permalink
01.28.03
Posted in MainPage at 9:47 pm by admin
2003, January 28th
Shoot. It went down. It went down BAD!!!!
I had to rebuild my server from scratch today and restore a 2 month old backup. Very little data was lost. The most recent comment, “Why did the cat cross the road?” is now gone forever. Oh well, it wasn’t very good anyway.
If anyone out there wants to take credit for crashing my box, send me email. I am moderately impressed by the thoroughness of the attack. I hope my more recent OS install is more robust and secure. We’ll see.
Love and kisses — Joel
Permalink
08.13.02
Posted in Lectures at 9:58 pm by admin
2002, August 13th
I would like to expound upon a theory that I have held for some time that, conceptually, GUIs can lead to poor management practices.
First, let me discuss the alternatives to graphical user interfaces (GUIs.) Since GUIs were designed to replace command line interfaces (CLIs) and there was really nothing before the CLI and nothing new since the GUI, the only alternative is the CLI. Well, OK, there is the menu driven interface that was the shadow between CLI and GUI, but the concept of a menu driven interface is more similar to GUI than CLI, so I’ll just lump it in.
A CLI is a model for interacting with a computer system based upon command/response pairs. An example command might be “dir bob” which could mean, “Computer, I would like a listing of the directory ‘bob’.” The computer would probably respond with a list of things which could be found in ‘bob’ assuming that this is a command that the computer in question understood. Keep in mind that the CLI was invented in the infancy of the computing science and there are quite a few different ones to choose from.
In the early days of computing, we wasted a lot of paper. Some would argue that we still do, but in this case I am refering to the printing console. It may seem archaic in the modern era of the monitor console, but we used to go through boxes of graybar paper every month by using paper to hold every command/response pair. This was horribly wasteful because, in general, a computer user only needed to see the response for a few minutes or even seconds. Still, the mechanism created a permanent record.
For a single user computer, like the early IBM PC, the computer spent most of its time waiting for the user to tell it what to do next. So, if a user ran the “dir bob” command, and never touched the bob directory again, the response would be valid forever. With multi-user systems, this is not true and users have become familiar with this concept. A good example is a command that outputs the current time. Since the computer doesn’t distinguish between a printing terminal and a monitor terminal for normal commands, the time does not update on the screen, just like it would not update on the paper. Users are familiar with the idea that the information output by the computer is out of date the instant after it is displayed.
By the early 1980s higher end systems had terminals with screens, but the command line metaphor of the screen as a piece of paper still held true for basic interaction with the computer. Certainly there were word processors and other applications that were more interactive, but once you exited the word processor, you were back to the command/response behavior. The CRT terminal was so successful that when IBM came out with their PC, even though it could work with a terminal, IBM built in the keyboard and the ability to interact directly with the monitor rather than requiring a seperate terminal device.
Enter the GUI.
The original GUI was developed by Xerox at the Palo Alto Research Center, Xerox PARC. The original design called for a WYSIWYG (what you see is what you get) word processor. After a while, the development team decided to use this “Desktop Metaphor” to interact with the computer at every level. So, instead of creating directories with files, you would create file cabinets with files. Each of these objects had a little picture that represented it on a graphical screen. Just as you can close a file cabinet or drawer and not see all of the folders in it, you can close the little picture of the file cabinet, hiding its files. This proved to be a wildly successful method of making the computer concepts accessable to non-computer savy individuals.
Because the lab at Xerox PARC was designing a system from the ground up with a GUI interaction in mind, their GUI had hooks into the behavior of objects. This meant that, if the state of an object changed, its little picture on the screen could track that change. For instance, if one user deleted a file from a particular cabinet and another user had that cabinet displayed on their desktop, the picture representing that file in that cabinet disappeared.
Unfortunately, this behavior is not pervasive while the expectation of this behavior is. Many software developers, recognizing the success of the GUI developed GUIs for their systems that would run the command line equivalents and display the results graphically. This sounds like a good idea. It is frequently not a good idea. The reason it is not a good idea is that the GUI and the real state of things can get out of sync.
An example: Suppose that you manufacture a large disk array and that the management software was written using a command line. Now you want to create a GUI “wrapper” so your customers will like you. So you do, but you don’t change the command line, you just run the commands and display the results graphically. So, two users have the GUI open and one allocates a bunch of disks in the array, but the second one doesn’t know about it. When the second user comes back, he still sees the allocation of disks when he started his copy of the management GUI. So, he selects several disks and allocates them. Unfortunately, he selects some of the same disks user 1 already allocated. If the command line isn’t designed well enough to realize that this is a mistake, it may very well allow this behavior and destroy user 1’s data. Oops.
OK, so you fix this by either having the software poll the array periodically or you update the GUI before allowing any actions. Polling is slow, and frequently costly of system resources. In any case, it doesn’t solve the problem; you can still be out of sync, just less frequently. So, you go with option 2 and force an update of the GUI state before any action takes place. You still have the problem that user 1 can update and start and action and before it finishes user 2 updates and starts an action and they collide.
The only solution that makes sense is one where the GUI interacts with the managed system and constantly updates the screen with correct information. If the user of the GUI selects an object, then the fact of that selection must be reflected instantly in all other copies of the GUI. Any other behavior leads to chaos.
Permalink
08.12.02
Posted in MainPage at 9:46 pm by admin
2002, August 12th
Some of you may know that I have a couple of animals that live with me. Specifically, I have a dog and two cats. You can see their pictures in the album, if you are interested. The black and white cat is named Sonic. Well, that’s part of his name.
Anyway, I got tired of cleaning cat boxes and cat hair and such and decided that the kitties (and my house) needed some fresh air. Both cats have all of their natural armements, and both have escaped in the past and returned, if not psychologically, at least physically unharmed. So, they are outdoor kitties now.
For those of you who think this is cruel, let me explain something. I live with two women who were willing to try to make me feel bad about kicking them out, but neither volunteered cat box duty as a means of convincing me. So, I have two outdoor cats now. Deal with it.
The other night, at about 3:50 AM, my wife and I both sat bolt-up-right in bed, awakened by some noise. I got up to investigate and Pamela went right back to sleep, secure in the knowledge that, whatever nefarious agent produced the sound, I would deal with it in the manly way that she has come to expect. Or she just didn’t think it was all that important.
Above I mentioned Sonic. He is the older of the two cats. He has obviously led a life of adventure. He is missing half of one canine tooth and has been a victim of general poor health since I got him but he can take care of himself. When I started down the stairs from the bedroom portion of the house to the main level, I was greeted by a smug and smudged Sonic on his way up.
“Hang on a sec,” I thought to myself. “This is wrong. I put the cats outside.” The fog clearing from my sleep-deprived mind, I set about to discover how Sonic came to be inside. It didn’t take long to deduce from the fireplace cover lying on the floor what had happened.
Sonic has always shown an unnatural interest in the fire place, which we have never used as a place for fires. Any time the cover has been opened or removed, he has wandered in to investigate. Apparently, the chimney is even more alluring. That’s right: Cat covered in soot + fireplace cover on the floor + cat inside + significant damage to cats face = cat came down the chimney!
Sonic’s little misadventure has lead to $450+ dollars in vet bills to remove the remaining whole canine tooth (it was fractured at the root and unsaveable) and general cleanup following surgery. Stupid cat. Anyway, I think the whole experience has convinced him not to try again. (9-1=8)
And, Yes, the cats still live outside. I am considering building them a candy-cane cat condo to commemorate the event. Maybe with a little sign that reads, “North Pole.” The real concern that I have at this point is, when winter comes, will Chip’s nose start to glow?
Permalink
06.25.02
Posted in Tirades at 10:02 pm by admin
2002, June 25th
Our Supreme Court (and by “Our” I mean the one operated by the United States of America) has discovered the argumentative technique called “reductio absurdom”, reduced to the absurd. It seems that last year, they decided that a judge could not impose a “Hate Crime” bonus penalty and the reprecussions have been, shall we say, absurd.
In a double knee-jerk reaction, the various lawmakers in the US drafted laws which were heard by the Supreme Court and struck down as unconstitutional. This occurred because of two highly publicized cases involving protected minorities, one a gay man, the other a black man. In each of these two cases, it appeared that the perpetrators sought out a member of the minority at random and viciously killed them. Calls for the heads of the criminals lead to knee-jerk #1, Hate Crime legislation, laws that tack a bonus penalty on to the base punishment for crimes motivated by irrational hate.
The second knee-jerk came when the Supreme Court reviewed a case that appeared to have been motivated by irrational hate. The court decided that the criminal in question (and let there be no confusion about this, this person was convicted by a jury of his peers making him a convicted criminal by definition) was somehow denied his right to a trial by jury because the judge, acting within the context of the new Hate Crime laws, extended his sentence. The important thing to note is that the judge only had the authority to impose the bonus punishment after the conviction by a jury.
A quick review of how trial-by-jury works:
- A grand jury is called to determine if a crime has been committed.
- The grand jury hands down an indictment naming a crime and defendant.
- A petit jury is impanelled and trial is held.
- The petit jury finds the defendant guilty.
- The judge imposes sentence based on guidelines established by lawmakers.
Notice that there are two “outs” here for the accused. The grand jury may not find that there is sufficient evidence to support a trial. The petit jury may not find that there is sufficient evidence to support a conviction.
The problem with the Hate Crime legislation is that the trial is supposed to be the finding of fact. However, if the judge must then base his sentence on a finding of fact outside of the jury’s finding of fact, then there was a second trial. In some states, a jury hands down a sentencing recommendation or there is a hearing after the trial, again with the jury present, where sentencing is determined. So, the Supreme Court has determined that only a jury may find fact (in a trial) and that the judge is constitutionally prevented from finding fact.
Now comes the Supreme Lunacy. A convicted murderer has appealed, not his conviction, but his sentence to death to the Supreme Court who overturned, not the conviction, but the sentence. Here is their reasoning: The judge in the case found that there were special circumstances that warrented the death penalty as required by the laws in that state. However, judges are not allowed to find fact, that power is reserved to juries. So, in spite of the fact that everything was done by the law as written by lawmakers in the state in question, the judge over-stepped his constitutional authority. In one decision, the Supreme Court has (once again) killed the death penalty and 150 death-row inmates are no longer in danger of dying in prison, until a jury has determined the special circumstances.
But wait! There’s more! Because of the Expost Facto rule, it may not be possible to impose the death penalty on those already convicted of crimes that fall under any judge’s “special circumstances” ruling authority.
My solution to this delimma is simple. Rework the laws so that there is a presumption of hate crime and a presumption of special circumstances and then give the judge the authority to find that these DO NOT exist in a particular case. Therefore, any crime must have an extra two years penalty and the judge must determine that the criminal did not act with irrational hate in commiting the crime. In this way, the judge is given the opportunity to reduce a sentence, not increase it. Simple. Stupid. A semantic change and nothing else. But it is constitutional because the judge’s finding of fact is in the favor of the defendant.
Permalink
05.31.02
Posted in Tirades at 10:01 pm by admin
2002, May 31st
I have been coming to grips with a word recently and thought I might share the experience. The word is “atheist”. It is interesting for a few reasons that I will now try to explain.
Starting with the term “god” and taking it’s (I think) Greek root, we get the term “theist,” a person who believes in the existance of, at least, one god. Adding the negating prefix, “a-”, we get “atheist,” a person who believes in the non-existance of, at least, one god. I would say that everyone on this planet is an atheist in one form or another because they either believe in No god, or think at least one other group has it wrong and don’t believe in that one. Hindus are probably the only exception because they think that the one god has many aspects. In any case, it is a stupid word.
Let’s take another word, “agnostic” and chew it up and spit it out. First, we have the negating prefix, “a-” followed by “gnos” from the greek, “gnosis,” to know, and stick on “tic” because that is what we do to make the verb into a nouner of that verb. We get “to believe not knowing” which we take to mean “person who believes that we cannot know.” But, this begs a question, “Know what?”
The popular understanding of “agnostic” applies to the belief in a supreme diety. Now, let’s get this straight here, the agnostic believes that it is impossible to know whether or not there is a god. Got it. Now, if there is a god, and that being is in fact all powerful, could it not be said that such a being could make us believe? Hmm, so if there is a god, then agnostics are wrong about what they believe. So, any person who is agnostic must actually believe that there is no god until proven otherwise. If there is no god, then you cannot prove its none existance because, maybe you have the definition of “god” wrong. So, if you prove the non-existance of god, then could not the term “god” simply be redefined in terms that you cannot disprove? Isn’t that what has happened over the years?
With all of that said, let’s get back to the term “atheist.” This is the one that gives me trouble. Looking at the dictionary, I find that the term “God” means “the ultimate expression of reality” and that “atheist” means “one who does not believe in the existance of god.” Now, I believe in reality. So do most of the people I know. So how can I possibly believe it doesn’t exist? The point here is that the term “atheist” is not informative to anything that I do believe. Even if it does seem to be informative of what I don’t believe, it is not because, by at least one definition of “God,” I do believe. But, then again, I “must” be an atheist because there are so many definitions of god that I don’t believe in.
For instance, I don’t believe in Odin. I don’t believe in Cthulu. I don’t believe in Allah. I don’t believe in Jehovah (or Yahway or whatever you want to call the Judeo-Christian god.) I don’t believe in Vishnu. So I am just full of atheism, and yet, I believe in reality so I am not an atheist.
So, I propose that we dump the terms “theist”, “agnostic” and “atheist” because each of them presuppose a definition for “god” that, if it is true and accurate, would be foolish if not impossible to dis-believe. I propose that instead we use the terms “groveler” and “non-groveler.” These are simpler terms and much more accurate. I am a “non-groveler.” That is, I choose to believe that if there is an all-powerful supreme creator of all things, it don’t give a boar’s hind teat what I do with my time on Sunday. And if there isn’t an all-powerful supreme creator of all things, well, all the grovelling in the world isn’t going to change that.
So, all you grovelers out there, let me know when god is coming to visit and I might come by to have an interesting conversation with it. Until then, grovel away, but do it in private or at least in-doors and keep me out of it. I really don’t care what the grovellers that came before you grovelled, especially the grovellings that they put in books so that they could be re-grovelled over the centuries by their grovelling progeny.
Permalink
05.15.02
Posted in Lectures at 9:57 pm by admin
2002, May 15th
Take a class on networking at any major university or take any networking equipment vendor’s network training and they will trot out the Open Systems Interconnect (OSI) model of a network. This is a lame model. Real networking doesn’t even remotely resemble this model. However, despite the overall uselessness of the OSI model, some people have gone to the unreasonable extreme of redefining TCP/IP in terms of that model. This is even more ridiculous
TCP/IP was not designed; It has evolved as our understanding of computer communications has evolved.
The OSI model was developed by a seven committee working group of the ISO. (Don’t worry. There won’t be a quiz on this material.) The seven committees provides one possible reason that the OSI model has seven layers.
The seven layers of the OSI model are:
- Application
- Presentation
- Session
- Transport
- Network
- Data Link
- Physical
The theory of operation with each of these layers is that, as an application, you need only understand the Application layer in order to use the network. When designing the Session layer, you need not be bothered with implementation details of the Network, Data Link and Physical layers. Each layer hides the implementation details of the layers above and below. In the real world, for reasons I wish I could adequately explain, this is a very slow network.
My inadequate explanation is: speed and accuracy are the most important parts of a network. You will likely write a program that does a networking task once for millions of actual uses of that program. In order for the 7 layer model to work, each layer must hide implementation details of all layers below and all layers above. This means that you cannot depend on a particular behavior in the Physical layer at the Session layer. So, suppose that your Session layer could be simplified for the case of a reliable network. You cannot take advantage of that and skip all the intervening layers to just deliver the data. Your data must slog its way through four more layers to get to the consumer and then four layers there to get back to another Session layer. This takes time. More importantly, it represents “latency” which is sometimes hard to overcome.
Another example: Let’s suppose that you have an application that, for locally connected systems uses a broadcast behavior but for distant systems uses a monocast behavior. This allows the local systems to each receive the data using minimal bandwidth and the remote systems to receive the data in a more reliable stream. If the implementation below the Presentation layer is hidden from you, you cannot see which systems are local and which are not. So, you cannot write that application
The problem is that an application that doesn’t understand how networks work is poorly written.
An aside: There are a few lines of code that appear almost identical in almost every TCP/IP client program and another few that appear in almost every server program. These lines were published in some textbook or some journal and now everyone uses them. They are almost used as incantations, without any understanding of what they do on the part of the programmer. They are popular because, for 90% of networking, this is all you need to make the connection from client to server. Unfortunately, in many cases of the other 10%, these code fragments are misapplied or are simply inappropriate resulting in bad operation or performance or unusual behavior.
With the academic success of the OSI model, the TCP/IP networking community redefined their model of a network in terms of the OSI model. This model has the following five layers:
- Application
- Transport
- Network
- Data Link
- Physical
It is important at this point to discuss why you make a model of a system. In architecture (buildings) you build a model to show the customer what the finished job will look like. In software systems, a model is more like the architect’s blueprints. It allows a single team to coordinate the behavior of a great deal of code that they may never see. So, why design a model for an existing system? Simple, it becomes a teaching and behavior predicting tool. A good example of this is “The Ideal Gas Model” of physics. It is a pretty good predictor of the behavior of gases. It is wrong at the extremes of temperature and pressure, but it provides a teaching tool and a set of equations that are “close enough” for everyday use. It is obvious that we didn’t come up with the Ideal Gas Model and then design the behavior of gases around it. It just happens to “fit” the behavior pretty well. There are many examples of this sort of model in physics.
So, the next question becomes: Is the 5 Layer TCP/IP model a “good” model of TCP/IP networks.
Duhhh, No. It is not.
TCP/IP is really a 2 layer system. The TCP/IP part of the system is one layer and the Physical/Data Link is the other. While you can certainly design a thing to replace the TCP part of TCP/IP, it would no longer be TCP/IP then, wouldn’t it? Likewise, TCP was actually designed before IP. IP was designed to solve the problem of multipley interconnected networks. Before IP was designed, however, there wasn’t something else performing its functions at a software layer in TCP/IP because there was no such thing as IP. Get it?
The reason that there are only two layers is simple. You cannot write a program and interact with only the TCP layer because you have to use code that finds out the IP address of the system you wish to contact. This means that the TCP layer does not hide diddly-squat from you. Those magical lines of code mentioned in the aside above interact at every layer except the bottom two. These two layers are typically some form of Ethernet, at the host level, which defines them both and hides neither.
TCP/IP, while it is not “layered” is “encapsulated.” It works like this. Your application creates a hunk o’ data, HOD (which may be a single byte, or octet) and says to the network library, “Send this stuff.” If you are using TCP/IP, this HOD is wrapped up in a thing called a TCP packet and passed to the IP part of the library. There, the new packet has an IP header attached to the fron and the whole schmear gets handed over to the network card driver. That driver interacts with the network card itself to load the packet of data into a transmitter circuit in the appropriate format for transmission. So your data is encapsulated by a TCP packet. That is encapsulated by an IP packet and THAT is delivered by some means determined by you network hardware to an appropriate reciever (which may be the end host or a router.)
The key to all of this is that, while it looks like TCP sits on top of IP and IP sits on top of the network card driver and the network card driver sits on top of the network card and the network card sits on top of the interconnection, nobody designs things this way. Even if they did, you couldn’t use TCP without knowing that IP (or something like IP) was under it. The software interface is just not designed as layers.
Some of you may be wondering why I wrote all this. The truth is, I have to take a test in a few days and for that test I have to know the OSI and TCP/IP network “models.” Learning academic overkill crap just to get a little symbol on my business cards (which I don’t have) irked me a bit.
Thus endeth the diatribe.
Permalink
« Previous Page — « Previous entries « Previous Page · Next Page » Next entries » — Next Page »