Tuesday, July 01, 2008
Proto-thoughts on “You aren't gonna need it” back before Extreme Programming hit the mainstream
Here's one of the rants I handwrote about a decade ago. I don't know … I think I may have lost my mind back then. There were a few bits I couldn't make out—I tended to be a bit lazy in the handwriting department, and I suspect I inherited my Mom's inability to write legibly.
The Lego™ Theory of Programming
Okay, I should point out that I have no idea what the following has to with The Lego™ Theory of Programming. It's not even close to what I understand The Lego™ Theory of Programming is today, and I have to question what I was thinking back then.
Hmm … I seem to be fisking myself here. But oh well, I'm having fun with this, and I can always claim to have changed my mind in the presence of more and better information.
Onwards …
This goes beyond the Theory of Software Reliability. Software Reliability simply states that software should be written with reuse in mind. This leads to the following Theorem:
Um, not quite. “Software Reliability” has nothing to do with “software reuse” and everything to do with “not crashing and losing a hours of work, or maybe a patient or two (or twenty-one).”
So, the names are bad. But not necessarily the theory itself.
The more general the subroutine, the slower it is, the larger it is.
Proof:
int a; int b; int c; c = a + b;anon a; anon b; anon c; c = a + b; if (typeof(a) == int && typeof(b) == int) c = intplus(a,b); else if (typeof(a) == string && typeof(b) == string) c = strcat(a,b);The more general the code, the more code is required to isolate the needed cases.
Proof of b)
larger: more code is required to isolate the particular case, or to extract the particular result from the general case.Proof of [GD?] ([Anon?] B)
Code that isn't there executes faster than code that is executed. Duh!
I'm not sure if I would accept that as “proof” or not, although it does get the point across. And generally speaking, I'm not a fan of generalized code not because it bloats code, but because it complicates the code unnecessarily. And I'm not the only one who feels that way (link via flutterby).
I should probably expand my thoughts on this …
Wednesday, July 02, 2008
A quick bit about the NT kernel
NT is a hybrid kernel that took a fairly elegant approach to kernel design, especially for the early 90s, as it was a new conceptual kernel of the time, taking some existing kernel architectual models and some of the best kernel theories that had not been implemented before.
For example NT has some MACH conceptual ideas and lightweight kernel API set for performance, but then hands this off to increasing levels of APIs conplexity. This gave NT the ability to be very lightweight at the core, but have extended functionality that didn't weigh the core kernel down.
NT's HAL for example was under 64KB, and even on Vista is still 256KB(slightly larger in Vista x64), which for modern hardware is still extremely small. Going from the HAL to the lower kernel and API layers is still very small, especially compared to other OS kernel models in use today. This is how and why the MS Embedded OSes (XP/Vista) can and do work so well, as NT was simply broken apart as needed for the Embedded versions to make them very light (As in used in a router light).
The essential design of the NT kernel is both object based and a client/server model. This is not normal, or something that you will find in any other consumer level OS out there.
Via Flares Into Darkness, Comment about NT
Mark was always impressed with the Windows NT kernel (but not necessarily with the rest of Windows) and this comment goes into some of the details of what makes the NT kernel so well designed.
WALL•E
Bunny, Mark and I went to see “WALL•E, the latest Pixar film about a love story between two robots, who also happen to save the world.
The reviews are right—this is a fantastic film (albeit one that may piss off the far-right crowd for its message of pro-environmentalism and anti-consumerism as much as “The Incredibles pissed off the far-left crowd for its message of individual self-reliance and strong family values) that doesn't waste a moment of screen time. It's amazing just how emotive Pixar made the robots (which don't really speak as such). It's just incredible story telling; so much with so little dialog that it could be a silent film and still be just as good.
What I haven't seen in the reviews is mention of the opening cartoon, also by Pixar. I don't recall the name of the opening cartoon, but it was one of, if not the, funniest cartoons I've ever seen, about a stage magician and his rather hungry bunny. The entire theater was rolling on the floor in laughter during this cartoon (and this one had no dialog what-so-ever).
Both are well worth watching.
Thursday, July 03, 2008
The Case of the Non-Mounted File System
I felt like I was in an episode of House.
I found myself at The Data Center, waiting for one of our customers, R, to show up to let him in (he forgot the access code). While there, I was attempting to extracate a KVM cable he could use when I pulled the wrong cable and unplugged a power strip.
The upshot: I took down some of R's equipment that wasn't having problems.
Sigh.
R shows up, and we check on the equipment that experienced the unplanned power outtage and one of his Linux boxes was in trouble. It was running Asterisk and it had the most amusing problem: it kept core dumping on an illegal instruction and upon crashing, would restart itself.
But in troubleshooting that problem, it became rather apparent something else was terribly wrong:
GenericUnixRootPrompt# df Filesystem 1K-blocks Used Available Use% Mounted on GenericUnixRootPrompt#
Nothing mounted, but I could still see files.
fdisk
showed two partitions, /dev/hda1
and
/dev/hda2
. fsck
worked fine on
/dev/hda1
but failed on /dev/hda2
since it didn't
know what type of filesystem was on it. Odder still, /dev/hda1
was the boot partition, containing only the kernel and related files
required for the initial operating system boot, but yet, here I was, in a
shell, running Unix commands like fsck
and fdisk
and more
.
Yet fsck
and even mount
had no idea what type
of filesystem was on /dev/hda2
.
Yet, it must be the root filesystem, which I was currently
using, because /dev/hda1
didn't have fsck
,
mount
, more
much less /bin/bash
.
Worse still, what I did have, including /tmp
, was in
“read-only” mode.
The Asterisk crashing problem would have to wait.
I was able to get the box on the network and backup everything to another
system. While that was chugging along (took about an hour) I realized that
the system was somehow mounting /dev/hda2
, otherwise there'd be
nothing to backup. Checking /etc/fstab
didn't help much:
GenericUnixRootPrompt# more /etc/fstab # This file is edited by fstab-sync - see 'man fstab-sync' for details /dev/hdb1 /media/cdrom auto user,noauto 0 0 GenericUnixRootPrompt#
I then checked /boot/grub/grub.conf
(since
something was being mounted as the root filesystem) and found that
the root partition wasn't /dev/hda2
but something like
/dev/VolGroup00/LogGroup00
. Using that I was able to check and
remount the fileystem as read/write. I was then able to add that to
/etc/fstab
, reboot the system and have it come up fine, thus
saving R from having to nuke-n-pave the system. How /etc/fstab
ended up without the root filesystem is something I don't know (but I
suspect it may have been trying to update that file when the power was
cut—hey, it's as good a theory as anything), but at least the system was
back up and running.
That just left the little problem of Asterisk continously dumping core in
an illegal instruction. A recompile of the program (since R and I thought
maybe the executable was corrupted) didn't solve the problem. A compile of
the lastest version didn't solve the problem, but we did notice that there
were a few modules for Asterisk installed that don't come with the default
install of Asterisk. And one of those modules had
pentium4-sse3
in the name.
I checked the box—it was a Pentium IV with SSE2, not a Pentium IV with SSE3.
That would definitely explain the crashing.
It seems that R hired someone to install a particular codec for Asterisk and they grabbed the wrong version (or rather, the version for the wrong processor) and the only reason Asterisk hadn't crashed was that it hadn't actually been loaded into Asterisk. Well, until the reboot that is. We removed that module and Asterisk started up fine.
And then it was time to turn to the problem that R had come to The Data Center to investigate …
Friday, July 04, 2008
The Fourth Of July
Ah, National Blow Stuff Up Day today, although given both the weather (the Miami fireworks show was cancelled) and how under the weather I felt, I didn't do much else but sleep.
I think it was something I ate.
Monday, July 07, 2008
Criminals? You don't say …
In the six-and-a-half years that the U.S. government has been fingerprinting insurgents, detainees and ordinary people in Afghanistan, Iraq and the Horn of Africa, hundreds have turned out to share an unexpected background, FBI and military officials said. They have criminal arrest records in the United States.
Via , Post 9/11 dragnet turns up surprises
More stuff like this, and less security theater, and I might start gaining a bit more confidence in our government's ability to protect our borders.
More from the “Generative Music” Department
I'm guessing this is in reference to my generative music post, but Dad sent a link to laptop orchestra out of Stanford. Interesting stuff …
Tuesday, July 08, 2008
And I thought I was crazy for sticking with C …
Wow.
An XML parser written in x86 assembly language for Unix and Windows. This sounds like something I would have done about fifteen years ago when I programmed almost exclusively in assembly.
The code makes some interesting design choices (I mean, besides the obvious choice of langauge)—it only parses XML in memory and as a result of that, the entire document must first be in memory. It also allocates memory in large blocks (the size in some of the examples is 16M) to avoid the overhead of calling malloc()
.
It also doesn't support XML namespaces (nor does the author want to support XML namespaces, as namespaces “make parsing more complicated and slower”).
But still … wow.
A quick dip back into assembly with some curious results …
Speaking of assembly …
One of the instructions of the x86
architecture I've been curious about is ENTER
.
Oh, I know it's there to support higher level languages like C and Pascal
that use stack frames for local variables. It even supposedly supports
nested function definitions (ala Pascal) using the second operand as a kind
of “nesting level.”
But I've never seen an actual instance of ENTER
used with a “nesting level” greater than 0. The only instance I've ever
seen used has been
ENTER n,0
Which is equivilent to
PUSH EBP ; or BP if 16-bit code MOV EBP,ESP SUB ESP,n
(And in fact, that sequence is generated by GCC as it's
actually faster than ENTER n,0
and C doesn't allow nested
functions to begin with.)
But being curious about what ENTER
actually does, I decided
to play around with it. I wrote some simple code:
bits 32 global sub0 extern pmem section .text sub0 enter 8,0 mov eax,0DEADBEEFh mov [ebp-4],eax mov eax,0CAFEBABEh mov [ebp-8],eax lea ebx,[ebp+4] push dword 0c0000001h call sub1 leave ret sub1 enter 8,1 mov eax,0DEADBEEFh mov [ebp-4],eax mov eax,0CAFEBABEh mov [ebp-8],eax push dword 0c0000002h call sub2 leave ret sub2 enter 8,2 mov eax,0DEADBEEFh mov [ebp-4],eax mov eax,0CAFEBABEh mov [ebp-8],eax push dword 0c0000003h call sub3 leave ret sub3 enter 8,3 mov eax,0DEADBEEFh mov [ebp-4],eax mov eax,0CAFEBABEh mov [ebp-8],eax push dword 0c0000004h call sub4 leave ret sub4 enter 8,4 mov eax,0DEADBEEFh mov [ebp-4],eax mov eax,0CAFEBABEh mov [ebp-8],eax push dword 0 push dword 0 push ebx push esp call pmem add esp,16 leave ret
And the following C code:
#include <stdio.h> #include <stdlib.h> extern void sub0(void); void pmem(unsigned long *pl,unsigned long *ph) { assert(pl < ph); while(ph >= pl - 2) { printf("\t%08lX: %08lX\n",(unsigned long)ph,*ph); ph--; } } int main(void) { sub0(); return EXIT_SUCCESS; }
Nothing horribly complicated here. pmem()
just dumps the
stack, and the various sub*()
routines create deeper nestings
of stack activation records while creating enough space to store two
four-byte values. The results though?
Curious (comments added by me after the run) …
BFFFFD1C: 0804853C return addr to main() BFFFFD18: BFFFFD20 stack frame sub0 BFFFFD14: DEADBEEF local0 BFFFFD10: CAFEBABE local1 BFFFFD0C: C0000001 marker for calling sub1 BFFFFD08: 08048591 return addr to sub0 BFFFFD04: BFFFFD18 stack frame sub1 BFFFFD00: DEADBEEF local0 BFFFFCFC: CAFEBABE local1 BFFFFCF8: 08049708 ? BFFFFCF4: C0000002 marker for calling sub2 BFFFFCF0: 080485B1 return addr to sub1 BFFFFCEC: BFFFFD04 stack frame sub2 BFFFFCE8: DEADBEEF local0 BFFFFCE4: CAFEBABE local1 BFFFFCE0: 00000002 ? BFFFFCDC: 400079D4 ? BFFFFCD8: C0000003 marker for calling sub3 BFFFFCD4: 080485D1 return addr to sub2 BFFFFCD0: BFFFFCEC stack frame sub3 BFFFFCCC: DEADBEEF local0 BFFFFCC8: CAFEBABE local1 BFFFFCC4: BFFFFCD0 ? sf3 BFFFFCC0: 4000F000 ? BFFFFCBC: 02ADAE54 ? BFFFFCB8: C0000004 marker for calling sub4 BFFFFCB4: 080485F1 return addr to sub3 BFFFFCB0: BFFFFCD0 stack frame sub4 BFFFFCAC: DEADBEEF local0 BFFFFCA8: CAFEBABE local0 BFFFFCA4: BFFFFCD0 ? sf3 BFFFFCA0: BFFFFCB0 ? sf4 BFFFFC9C: 40011FE0 ? BFFFFC98: 00000001 ? BFFFFC94: 00000000 push dword 0 BFFFFC90: 00000000 push dword 0 BFFFFC8C: BFFFFC8C ? supposed to be ebx BFFFFC88: BFFFFC8C ? supposed to be esp BFFFFC84: 08048618 return addr to sub4
From my understanding of what ENTER
does, each “level”
creates a type of nested stack activation record with pointers to each
previous “level's” stack record. And while each level has the required
number of additional entries, the actual contents don't make sense.
Running this on a different Linux system produced similarly confusing
results. I'm not sure if ENTER
is horribly broken these days
(I wonder how often the instruction is actually used), or perhaps, it is
indeed a
Linux problem? Not that I'm going to be using assembly any time soon
… I'm just curious.
Wednesday, July 09, 2008
It's hard to troubleshoot when the gun is jammed …
Smirk gave me a router to configure for a customer and asked that I save the current configuration before I make any changes. It's a Cisco router, so saving the configuration is just copying it to a TFTP server. Nothing terribly hard—I already have a TFTP server installed on my workstaion, and I can easily configure the spare network port on my workstation to match one of the ethernet ports on the router, string a cable (which I already have lying around) and voilà. Nothing to it.
One Hour Later …
I'm ready to kill. I'm thinking one of (or all of) the CentOS maintainers, since I can't imagine the maintainers of logrotate
, syslogd
, xinetd
or tftpd
(is that even maintained any more?) all botching it in a perfect storm of stupidity.
tftp
is controlled and run by xinetd
. But the Cisco router can't save the configuration file. It's not a networking issue since I'm logged into the Cisco router over the network. The configuration in xinetd
to run tftpd
looks good, but what the heck, I decide to restart xinetd
and check the logs anyway. That's when I find that logrogate
isn't. Or rather, it is, but it's failing to tell syslogd
to reopen its log files. And the configuration files for logrotate
look okay as far as I can tell.
But even worse, syslogd
appears to be buffering the logs in memory, maybe updating the files every 30 seconds or so. And the syslogd
configuration I have specifically states otherwise. It could be that xinetd
is really slow, but I have a hard time believing that it takes xinetd
a full twenty seconds to digest a 13 line configuration file (and there are about 30 such files—do the math) on a 2.6GHz dual-core box—the harddrives aren't that slow (heck, Firefox comes up faster than that on this system).
Sigh.
I really hate it when the tools I expect to work don't. It's one thing to know going in that the tools don't work, or aren't there. I know I'm going to get sidetracked and can make better time estimates. It's making a time estimate expecting the tools I work with to work and then getting sidetracked debugging tool issues that pisses me off, because now I'm under a time crunch.
It's even more frustrating when the customer isn't even there to accept the router.
Unix is nothing but obscure commands rarely used
And speaking of Unix …
I've been using some variation on Unix for almost twenty years now and I'm still coming across new commands that apparently have been in Unix since the Version 6 days (or so it seems). About a month ago I just heard mention of the seq
command, which prints a sequence of numbers (seems pretty silly but it can come in handy when manipulating say, photos from a digital camera from the command line).
And yes, sure enough, it found the command on The Company's servers. But they're running a relatively recent distribution of Linux, I thought. Surely it's some new command.
“No it isn't,” said my over ten year old install of RedHat 5.2, “and stop calling me Shirley.”
I suppose that's expected since I haven't bothered to read all the man pages on any Unix system I've used. But then again, my over ten year old install of RedHat 5.2 has 1,306 possible commmands to run. My even newer CentOS 4 install has 3,117 possible commands to run.
That's a lot of man pages to check.
Assuming every command has a man page to check. There's this gconfd-2
command that's running, yet there isn't a man page for it, so it's off to Clusty …
This also extends to the various APIs installed on the system. I've been using Linux for easily over 10 years, and just the other day discovered the ffs()
function (which, to tell the truth, I haven't a need for). Big deal—there are a lot of libraries installed that I don't use, but this isn't in some obscure library. It's in the Big Kahuna of libraries—glibc
—the one library that every single program is linked against!
Blimey!
I'm beginning to suspect that program bloat is less about sloppy code and more about duplication of code due to ignorance of what already exists.
Vote for him! He's not the incumbent!
I rang one doorbell and heard someone on the other side of the front door. I think they were looking at me through their peephole when I heard a man yell “No solicitors!” without even opening the door. “I'm not a solicitor!” I sort of yelled back through the door. “I'm a politician!”
There was a pause.
I wondered if he had gone away, and then he yelled back, “That's even worse!”
I met Sean Tevis years ago when he lived in South Florida through my friend Ken at his house warming party. I found Sean to be a smart and witty person and so I've been following his blog for a few years (although since he updates sporadically, I read his blog sporadically).
So it was rather surprising to stumble across his campaign site for Kansas State Represenative, and he's blogging his campaign experiences, which I think is cool.
And he has a good sense of humor about it.
Thursday, July 10, 2008
“If you build it, they will come, but NOT IN MY BACKYARD!”
“I'm all for Wiffle ball and apple pie and baseball and the American flag, but there are plenty of fields in town they can use instead of building something in people's backyard,” said Liz Pate, who is building a new house behind what's now home plate. “If I come home at 6 at night after working all day, I want peace and quiet. I can't have that. I have dozens of people behind my house playing Wiffle ball. If their parents think this is so great, let them play at their house.”
Via Instapundit, Build a Wiffle Ball Field and Lawyers Will Come
As a kid, I remember my friend Duke and me wandering out alone in the forests that surrounded his house at Connestee Falls (which wasn't the gated community that it is now) for hours at a time, and later, roaming around the neighborhood when his family moved into Brevard proper.
I also remember wiping out rather spectacularly a few times on my bike (say, landing in a ditch, twice, same one, same day, trying the same stupid trick each time) and managing to come out okay (bloody, but no broken bones and a greater skepticism of my “elite” skills on a bicycle).
My, how times have changed.
At times, I really wonder what happened to us, how did we as a nation become so fearful? So coddling?
Where did we go wrong?
But rest assured, whatever happened, it wasn't in my back yard.
Sheesh.
Sunday, July 13, 2008
Implications
Friday was a bad hair day. Let us not talk about Friday.
…
Actually, lets talk about Friday.
Okay, I'm not going into details about what happened Friday (it was my fault for not fully testing the configuration, but really, what did Cisco do to break DHCP in IOS 12.3?) but I do want to talk about the insane incipid stupid? ill-thought out … I'm not sure how to diplomatically state what I think this is.
I think this stems from an incident last week when F (a company that's also a customer of ours) experienced an outtage. I suspect that everyone suspected their consumer grade router that was suspected of going out (resetting it seemed to have fixed the issue, which points to the base problem, but it's not what you think it is) and Smirk thought that a Cisco router (that would connect us to them via Ethernet) that could switch over to a DSL connection as a backup was a good solution (I'm guessing here; I don't know the actual details that lead to this solution).
And that right there is the problem I have with this scenario.
Let's see … our Ethernet connection to F goes down (I can't see how it can, seeing how Cisco routers rarely fail, and we have a cable that runs down the hall from our Data Center to their office). Their Cisco router sees this, and thus the default network route through us (populated via OSPF) is removed, and the backup default route through the DSL (static route with a higher metric than the OSPF default route) kicks in. But since the DSL is being provided via another party, F's public IP address suddenly changes. Any ongoing TCP connections they might have had are now gone.
I'm not even going to mention the email issues that come up.
The change-over is noticable, and annoying enough to possibly prompt a call to us asking us what the aitch-ee-double-hocky sticks is going on (or even worse, what the fudge is going on).
And that's the best case scenario!
Most likely is a routing issue with our upstreams that cause the outtage (and affecting not only F, but us and all our customers). F's connection to us is still fine and thus, the Cisco router sitting in their office has no reason to switch over to the DSL connection. It would have to be done manually and well … that's a call to us.
Then there's the fact that they have 8 static IPs through their DSL provider because, hey, why not? They only have one static IP through us. I don't see this as being a Good Thing™.
But I still don't like country music
When culture was a product consumed by the upper classes, it wasn't viewed by them as being subversive or tasteless since it was created for them. However, when you start getting a growing middle class who were not aristocrats but who did begin to have the kind of money and leisure to consume culture, there is the beginning of strain. Cultural products could be produced to appeal to the middle class sensibility, and to the upper classes this was low brow, unsophisticated, something to be scorned, and also perhaps something to be feared, because it could be politically subversive. So the upper classes generally used their disproportionate influence with the government to impose varying degrees of censorship to suppress that which was considered vulgar or dangerous (to their dominance).
…
None of [the US media, reflecting US culture] was being produced with the intent of delivering some sort of ideological message, but it turns out there is one, and it runs deep, and it's one of the big reasons it's popular in the world and why it is scorned by the elite everywhere.
…
The message we're delivering is that the individual is not the group to which he belongs, and doesn't have to be bound by that group. We're delivering a message of personal freedom, and it reverberates at least somewhat with all who hear it who are under the control of their betters. (And some of us here who embrace “identity politics” deeply disagree with that message …)
And we in the US prove that when the lower classes cast off the upper class, and rule ourselves, that we can actually be better. The US is the triumph of the gutter, the land of the vulgar and unsophisticated, the huddled masses who became free, who are led but not ruled by their government; and in nearly every way we're leaving all of the nations ruled by the upper classes in the dust.
We're not just complacent about being from the gutter; we're proud of it. A lot of our culture still glories in coming from the ghetto. Some of the attraction of Rap is that it comes out of the black ghetto, and even when it's put on there's almost a requirement that it keep referring to that experience. We gleefully absorb culture from all over the world, and equally gleefully share ours with the world.
For years I've been trying to track down an article I read (on the web) about culture, and how what has traditionally been called “culture” is really the “pop art” of the aristrocracy, and why most governments around the world dispise our “culture,” yet most people around the world love our “culture.”
Here is that article, found deep in my bookmarks file (containing almost 2,600 bookmarks—I should go through my bookmarks file more often).
Monday, July 14, 2008
Funny, I would have thought this would be made by an American company
Despite the title “Living In A Garbage Truck” (link via L. M. Orchard), it's not—it's a Unicat (a VXL 16HD to be exact), a highly mobile home on wheels (whose gas consumption is measured in “gallons per mile”) that has a bit more oomph than your traditional Winnegago (if you are viewing the pictures on the garbage truck page and wondering where the windows are in the exterior shots—the top folds down when driving).
I especially like the EX70-HD / MAN TGA 6x6, which includes a small four-wheeled bike stored in the back of the vehicle.
The desert does strange things to the mind …
And speaking of living on the road …
Of course, I am not truly “homeless” in the purest sense. I have a car (currently a rental), and I have the resources to rent some storage units in town. I have a basic medical plan. I shower at a health club, and if I am overwhelmed with hunger, I can always check into one of our fine casino buffets. I have a cell phone and wireless internet access.
I am not without resources, only without a dedicated place to spend the night. I am not an alcoholic or drug addict and have no known mental health issues. I don't stand at freeway off-ramps with a sign, “Please help.” I do not believe I smell too bad, at least as far as I can smell myself.
My only luxury is a rental car, which is a relatively cheap commodity in Las Vegas. Since my own car blew up, I have seen no need to buy a new one. Now, I get a nearly new car every two weeks, use it intensely, get it quite messy, then turn it in for another. The cost compares favorably to the payments on a new car, but without any obligations. There are also no maintenance or insurances costs. (Insurance is covered by my credit card for rentals of up to 15 days, hence my two-week cycle.) Having a car for only two weeks forces me to “clean house” periodically, which I otherwise might not do.
Las Vegas has the ideal climate for homelessness. The temperature rarely falls below freezing and rain is uncommon. Contrary to what you might think, summer is the most comfortable season. Highs of 110° in the day translate into nighttime lows in the 80s, at least outside the city. I sleep out in the open in the Mojave desert. I use an air mattress but rarely a tent. In the desert, there are almost no insects except after a rain. In the summer, it is like sleeping in a nice comfortable bath, looking up at the stars.
He certainly has an interesting idea about car ownership; it might be interesting to actually look into perpetually renting a car to see how it works out financially, although in his case, it's probably a moot point since his car (for various values of “his”) is his home, so he comes out ahead financially anyway.
The person in question is Glenn Campbell, not to be confused with Glen Campbell, the country singer, and I first became aware of Glenn-not-the-singer while researching Area 51. He and Bob Lazar did more to bring Area 51 to the forefront of our culture in the 90s than just about any one else.
He ran the Area 51 Research Center out in Rachel, Nevada. By the time Hoade and I visited Rachel, the place was only open on the weekends (so we missed meeting him by two days). Today, the place doesn't even exist anymore.
Tuesday, July 15, 2008
“There was no deity involved, Mr. Scott. It was my cross circuiting to B that saved them.”
I'm not sure where my mistake was, but I ripped out the DHCP settings, added them back in with one small difference (the DHCP settings are tagged with a name, which I originally had as LAN_ACCESS
but renamed it 10.10.10.0/24
) and that seemed to do the trick—DHCP was working fine under IOS 12.3. Why that fixed things, I don't know. Maybe I knocked some bits loose or something.
Now, testing DHCP and NAT on the Cisco router—that proved to be a bit more challenging. I needed one computer to act as an upstream, and another one to test that DHCP and NAT were working. Getting a few computers wasn't the problem. Getting a few computers that worked without issues was the problem. It was mostly networking issues. One, my Linux laptop, with a supposedly 10/100Mbps interface, refused to link to the 10Mbps port on the router. And the Windows laptop … well … yeah, it's Windows, running a few different firewalls that all needed to be shut off, and extraneous interfaces (such as the wireless interface) shut off and …
Ick.
Anyway, router is good to go.
I hope.
Also, I talked to Smirk about the non-automatic routing changes that have to happen at F. Smirk's answer to that? If that's the way it works, that's the way it works.
Oh well.
I can only hope that the problems F is experiencing are due to an overloaded consumer grade router and that once this Cisco goes into place, there won't be any more issues.
Wednesday, July 16, 2008
Vote for him! He's not the incumbent!
Looks like Sean Tevis hit the big time in his campaign (link via columbina and then via Joey deVilla) and the surge in traffic pretty much killed his campaign site. The donation page, however, is still working and it looks like he's on track for breaking the Kansas State Representative donor record of 644. I just checked and he's up to 596 donors.
I wonder how long it will be until he gets a mention at Instapundit.
Friday, July 18, 2008
Electric Clarinets
Back in middle school I played the clarinet. The first year, I rented an all-plastic clarinet and had trouble understanding why the other students had trouble getting a nice clear sound out of the instrument. It was the following year when my Mom got me a real clarinet that I found out just how difficult they could be. I ended up faking my way through the rest of the that year and never bothered to continue playing the instrument. Of course, that didn't prevent me from playing the electric clarinet during college (it's a joke—some friends and I formed a joke band called the Blender Children (also known as “The World's Most Dangerous Peer Group”) and threatened many times to go on tour).
So I'm amazed that what looks like high school students actually made an electric clarinet. Or rather, a robot that can play the clarinet (link via kisrael.com).
Wow.
Monday, July 21, 2008
Bad user interface mixed with uncertainty in debit card transaction processing leads to a frustrated customer, but in the end all Oligarchist Cell Phone Companies are equally bad so it's no use switching providers
Sigh.
All I wanted to do was pay a portion of the cellphone bill (Spring is getting the other half). I log into the payment site, and yes, they do have an option to pay a partial amount.
Good. I type in 68
for the amount. Then the debit card
information, yada yada yada, hit submit, and find out that I paid 68¢
of the bill.
Blink.
Blink.
Okay, I admit, I missed the confirmation screen, but I was concentrating on the “Debit Card Transaction” option:
Debit transactions may be processed via the STAR, Pulse, ACCEL, or NYCE networks. Please uncheck this checkbox if you do not want your transaction processed via the STAR, Pulse, ACCEL, or NYCE networks so your transaction can be routed through the Visa or MasterCard network, as appropriate.
Okay, whatever that is.
See, I'm already distracted from my primary task, which is to give the Oligarchist Cell Phone Company money.
I select the “What's this?” link:
If this box is not checked, the debit transaction will be processed through the Visa or MasterCard network. Contact your financial institution for more information about what the different methods of processing mean for you.
Um … whatever. I just want to make a partial payment, and that's why I didn't notice the 68¢ payment amount before authorizing the transaction.
I would like to think there was some discussion about
interpretation of inputs. I know myself, if I were paying 1¢ for
payment, I would type in 0.01
, and for paying a dollar, I would
probably type in 1
, seeing how I just typed in
68
.
But I could see the rational here—there's an option to pay the entire bill, so the user wouldn't have to type in any amount and with a partial payment option, I suppose it's possible that someone would be likely to pay less than a dollar, although I find that odd myself. And they do have a confirmation screen, but the “Debit Card Transaction” option drew more attention than the actual data I just typed in.
This wouldn't be so bad but now I'm having trouble paying $67.32, because all I get now is:
PM700: We're sorry, but we are experiencing a temporary system error that prevents us from processing your payment.
Is that because I'm trying to do back-to-back debit card transactions? Do I need to wait? Or is there an actual error because the transaction server is down? Or the link to the bank is down? Or what?
Sigh.
Tuesday, July 22, 2008
Thoughts on copying text between computers via a mouse
If i select a block of text with a mouse, hit “copy”, unplug the mouse, and bring it to another machine, i should be able to paste it.
Via L. M. Orchard, Scott Lawrence
My first thought: What a stupid idea.
My second thought: But I can see how someone not well versed in how computers work might think that should work though.
My third thought: But really, now often do you actually move mice between computers? All my computers that need a mouse already have a mouse.
My fourth thought: What a stupid idea.
Wednesday, July 23, 2008
The Dark Knight
I saw “The Dark Knight last night. In a word—
Wow!
From the opening bank heist (which is … just … oh my God) to the final scene (which I can't reveal because it's a spoiler) is just …
Wow!
Character wise, this is perhaps the truest portrayal of the Batman characters in a movie I've ever seen. Heath Ledger's portrayal of the Joker is as stunning as it is disturbing (and really, it's scarier not knowing his background). Gary Oldman's James Gordon is lifted right out of the comics. And the tragedy of Harvy Dent clearly comes through.
The only gripes I have with this film, oddly enough, are with The Batman himself. It's not that I have a problem with Christian Bale's portrayal per se, it's just that I didn't like his “let me attempt to disguise my voice so no one recognizes me but make it plainly obvious that I'm trying to disguise my voice” Batman voice. I don't think it worked. My other gripe is that The Batman is a world-class detective (even studying criminology in college) but you would never know that in this film (and the only reason I'm griping this much about an otherwise excellent film is that The Batman is my favorite superhero, and this film is about as letter perfect as a superhero film can get).
(You want a better review? Okay, here are some that are worth reading).
That's finally done!
So I'm back installing the router. I told Smirk to tell the customer it would take two hours, even though I was expecting it to take at most half an hour.
Good thing too—because just as I was finishing up, 45 minutes after starting (due to some driver issues on my laptop, I could only use the serial port (to configure the main router) or the ethernet port (to test the network) but both at the same time—sigh) the customer asks if the wireless portion still works.
Excuse me?
You see, they were using a consumer grade wireless access point (with four ethernet ports) to handle their office, and much to my surprise, they were actually using the wireless portion for a few devices. I wasn't aware of this.
It turns out neither was Smirk.
So I spent the next hour reconfiguring the wireless router (which I had to completely reset because the administrative password had long since been lost) to work on their network. Fortunately, the customer had saved some critical information (WEP keys) that made the process just a tad less painful for both of us.
Total time: two hours.
Fancy that.
Thursday, July 24, 2008
Notes on a conversation between a network administrator and The Monopolistic Phone Company over a non-functioning T1 circuit
“Hello, this is The Monopolistic Phone Company Business Repair Unit. What is the billing or circuit ID in question?”
“Hello. The circuit ID is XXXXXXXXXXXXXX.”
“Okay. Hmm … what state are you located in?”
“Florida. Boca Raton, Florida to be specific.”
“Okay, oh dear! My computer just crashed. It'll be quicker for me to transfer you to another rep than to wait for my computer to reboot.”
“That's okay.”
Ring.
Ring.
“Hello, The Monopolistic Phone Company Business Repair Unit here. What is the billing or circuit ID in question?”
“Hey there. The circuit ID is XXXXXXXXXXXXXX.”
“Is that in Tennessee or Florida?”
“Florida. Boca Raton to be exact.”
“What name is the account in?”
“It would either be XXXX XXXXXXXX which is located at XXXX XX XXXXXXXX, Boca Raton, Florida or XXXXXXX, which is located at XXXX XX XXXXXXXX, Boca Raton, Florida.”
“Hmm … let me put you on hold for a bit.”
“Okay.”
[S/X: Musak, followed by a recorded voice saying the call is very important to us but that all available representatives are busy helping other customers but someone will answer the call as soon as possible, followed by more musak. Repeat twice]
“Welcome to The Monopolistic Phone Company Business Repair Unit. What is the billing or circuit ID in question?”
“Hello. The circuit ID is XXXXXXXXXXXXXX.”
“Thank you … is that XXXXXXXXXXXXXX?”
“Yes it is. XXXXXXXXXXXXXX.”
“What name is the account in?”
“It's either under XXXX XXXXXXXX, located at XXXX XX XXXXXXXX, Boca Raton, Florida or XXXXXXX, which is XXXX XX XXXXXXXX, Boca Raton, Florida.”
“And what seems to be the issue?”
“There's an alarm on the circuit.”
“You received an alarm?”
“Yes, the T1 doesn't have a connection.”
“Thank you. Hmm … please hold … ”
“Okay.”
[S/X: Musak, followed by a recorded voice saying the call is very important to us but that all available representatives are busy helping other customers but someone will answer the call as soon as possible, followed by more musak. Repeat twice]
“Hello, this is The Monopolistic PHone Company Billing Department. What is the billing number for this account?”
“Excuse me?”
“What is the billing number for this account?”
“I'm sorry, all I have is the circuit ID. I don't have access to accounting records.”
“Well, what's the circuit ID then?”
“XXXXXXXXXXXXXX.”
“Hmm … XXXXXXXXXXXXXX?”
“Yes.”
“I can't seem to locate any information about this? Are you a reseller?”
“I believe we are.”
“Who do you send the bill payments to?”
“I'm sorry, I don't have access to that information. I'm just a tech trying to get a T1 back on-line.”
“So it's down?”
“Yes.”
“You have no idea where you send the billing to?”
“Sorry.”
“Well, you know that The Monopolistic Phone Company just purchased The Regional Monopolistic Phone Company so that may be why I can't currently access this.”
“Yes, we originally received the T1 from The Regional Monopolistic Phone Company.”
“So if you can just give me a billing number … ”
“Sorry, I don't have that information. Thank you for your time.”
“You're welcome. Please call us again sometime.”
Click.
Ring.
Ring.
”Hello?”
“Smirk, I have some good news … apparently we no longer have to pay The Monopolistic Phone Company any more money for that T1 … ”
Monday, July 28, 2008
A pitch machine—you know, a machine that can change the pitch of a human voice—would have been just as good …
“What would you have done differently?” asked Bunny. “I didn't find Batman's voice all that bad.”
What would I have done?
Well, if you can suspend your disbelief enough to accept a billionaire playboy dressing up in a black BDSM masked suit and beating up on criminals, then I suppose one could just have the actor portraying Bruce Wayne/The Batman use the same voice, same as every other incarnation of The Batman (although Bunny doesn't like that idea, claiming that people aren't dumb—“Hey! You sound just like that billionaire dude—Wayne something or other!”).
My other idea (and I suspect this isn't going to be popular at all) is to use two different actors—one for Bruce Wayne (I thought Michael Keaton did an excellent Bruce Wayne in Tim Burton's Batman, but made a lousy Batman) and a different actor for The Batman (I felt Val Kilmer's Batman was much better than his Bruce Wayne in Joel Schumacher's Batman Forever). This would help (I think) to underscore the dualistic nature of Bruce Wayne/The Batman.
Either of those two options, in my opinion, is much better than having Christian Bale imitate a 90 year old 5-pack-a-day smoker when talking as The Batman.
I still suspect he's paying too much for his airline travel …
I am a furloughed airline employee recently laid off due to service cutbacks. Bad news? No, great news! I get to keep my free travel benefits until the airline decides to rehire me!
I am passing my good fortune on to you by making this offer: For $500 plus the actual cost of gas, I will drive your car, van, light truck or RV anywhere in the continental USA or Canada. Since my return flight costs me nothing, I'll charge you nothing for it. Vehicle delivery usually in 5 days or less. I'll even take your pets and care for them along the way!
National Car Transport Service for $500 plus gas—Pets, too!
Not only does Glenn Campbell live in a car, but he's got an unusual job now too.
Tuesday, July 29, 2008
Virtual Meetings
I found this week's Weekly Company Meeting annoying.
I mean, more than usual for a meeting.
Since we no longer have an Office, we've been moving the location of our Weekly Company Meeting from place to place, depending on what's more convenient for all three of us (our recent meetings have been at a local (to us, not to The Data Center) Starbucks—cliché I know). We've even had a few phone-based meetings (when Smirk was sick enough to possibly infect us, but not sick enough to call off the meeting).
Usually, the face-to-face meetings last around an hour and a half, and most of that is due to tangential discussions like beverage selection and the snarkiness levels of the local baristas—you know, typical water cooler type stuff if we actually had a water cooler. The phone-based meetings were shorter—around half an hour, mainly because holding a conference call is painful enough for all the participants to enforce a “stay on target” mentality (and I can be anywhere for those, which is quite nice).
But this week's meeting was over IM (a private Jabber server to be technically pedantic). And it was one of the longest meetings we've had since going techno-nomadic—nearly two and a half hours.
Mostly this is due, I suspect, to continuous partial attention, where we can do other stuff on the computer (important things like Solitaire) while waiting for the other participants to finish typing (I don't consider myself a fast typist, but I've yet to meet anyone else who can match my typing speed). And in my experience, this can kill a group activity (one of the reasons I dislike the Friday D&D Game—a scenario that might take a few minutes ends up taking a few sessions to get through).
Mostly my griping about today's meeting is that I was hoping for a short meeting (dinner date with Bunny, who's going out of town for the next week and a half) and ended up with a marathon session. I will admit that being able to check on certain things (such as set the administrative password for our new trouble ticket system) during the meeting and not having to worry about it afterwards was nice. And I definitely dig the whole telecommuting aspect of my job, so I shouldn't be complaining all that much.
Still, I like the phone meetings since they tend to be short and to the point.
Wednesday, July 30, 2008
Hmm … didn't think of that.
There is another aspect of an IM-based meeting—I don't have to get dressed, and no one can see just how bloody sleepy I am.
And mercifully, today's virtual meeting was quite short.
Garkov
Why yes, it is yet another take on Garfield (it's not like I'm not obsessed with Garfield or anything), this time with the dialog automatically generated using a Markov chain.
While maybe not quite as good as some of the other takes, it has the potential to be quite amusing:
Then again, it could be argued that Jim Davis has always generated the strip's diaglog using a Markov chain.
Thursday, July 31, 2008
It's Christmas time in the city stores
I'm reading about the latest signs for the End of the Civilization (the latest items that can be sold at your local comic book shop) when I see some Christmas-themed items. And that was enough to remind me of a small incident that happed a few days ago.
Bunny and I went to The Cracker Barrel for dinner, and in passing through the gift store section (which you have to do to get to the dining room area) we came across a few Christmas-themed items for sale.
It's not even August yet!
I mean, I could understand seeing Christmas-themed merchandise this early if you were in Christmas, Florida (although I didn't see any Christmas-themed stuff the last time I went through there). But I'm not in Christmas, Florida.
Then again, I'm one to talk—we still have our Christmas wreath on the front doot at Casa New Jersey.
Holy Headless Bards, Batman!
And from a comment from said End of Civilization post comes this: The Secret Remote Control Shakespeare Bust as seen on TV`s Batman!
I am at the same time, scared that it exists, and lusting to own one (but at $295.00 I can hold off).
Some musings about webcomic layouts
I'm not sure anyone has actually noticed this or not, but each time I've posted a cartoon, each frame has been a separate image. I got the idea 6½ years ago, although from where I don't recall.
I do think it's still a good idea because it facilitates a liquid layout for a comic (the frames only take up as much horizontal space as needed) while allowing for a larger frame. The frames on my experimental comic are 320×240, which are large compared to most online comics, while at the same time, allowing for a very narrow browser window.
I've even put the idea out there and had some positive feedback on it, but I've yet to see any online comic actually implement the idea, and I don't understand why. Perhaps it's not as good an idea as I think it is? Or it's, oddly enough, too constraining? Perhaps Howard Aiken was right when he said, “Don't worry about people stealing your ideas. If your ideas are any good, you'll have to ram them down people's throats.”
I don't know, it seems like an obvious idea to me.