How to Avoid Unpacking, in One Easy Step

In the first day in our new house, the movers had just finished dropping off our stuff, and we’d finished the pizza we ordered for dinner.  We hadn’t unpacked any trash cans yet, so I figured I’d take the pizza box all the way to the cans in the alley.  It never occurred to me that I wouldn’t make it.

It was already dark, and the 100-year-old house was new and unfamiliar, so I wasn’t sure where the light switches were.  I found a switch inside the enclosed porch, but nothing happened, so I opened the back door and leaned out to see if there was a switch outside, or a bulb.  There was a fixture, and I took a step off the porch to get a better look.

A step … into the air.  I had managed to miss the steps entirely, which weren’t quite where I expected them to be, and also managed to catch one of my shoes on the porch.  This propelled me face-first onto the concrete about six feet below, where I caught myself with both hands.  My arms gave way, and I crumpled in a heap.

Sure, it hurt, and yes, my arms wouldn’t move, but I didn’t realize they were actually broken until the next morning, when it was perfectly clear that my arms still refused to move when told to do so.

Since we had just moved in, neither one of us had any idea where the closest hospital was, so my wife called the man I worked for, who lived nearby.  We’ll call him Dave.

Wife:  “Do you know where the closest hospital is?”

Dave:  “What happened?”

Wife:  “I think his arms are broken”

Dave:  “Never mind that, is he going to be at work tomorrow?”

Broken Elbows

Broken Elbows

The closest hospital is called Resurrection, which, unfortunately, is less a bold statement about their medical abilities and more an indication that it’s run by Catholic nuns.  I couldn’t hold a pen, so my wife took care of most of the paperwork, after which the nun behind the counter pointed at me and said, “You.  Go through that door.”

I looked at the door, which had a pull handle, and at my broken arms, stuck in a position that made me look like Beavis.  “How?”

“You pull,” she hissed, as if my trouble with the door were a conceptual problem.

“With what?” I asked, having moments before explained to this woman that I could not move my arms.

My wife hurried over to open the door for me, while the nun called after her, “you can’t go in there!”

X-rays showed that I had managed to fracture both of my elbows, and the doctor explained that due to an increase in popularity of rollerblading, they had seen a lot of this kind of injury, and knew just what to do.  “Usually not both elbows, though,” he explained, and put me in splints that went from my neck to my fingertips.

I don’t think I ever really appreciated my elbows before I no longer had the use of them.  Like many people, I took them completely for granted.  Now, I could not reach my face, put on my own clothes, hold or lift anything…  My wife called Dave to let him know that no, I would not be in the office tomorrow.

My wife immediately called the local cable company, and asked them to turn on the cable.  The cable itself was already there, and I had the presence of mind to connect it to the television before breaking my elbows, so there was little for them to do except actually switch it on.  They explained that they’d have to “send somebody out,” and my wife took the earliest appointment on Friday.  I wasn’t going anywhere, so it seemed safe enough.

Meanwhile, she had to go to work.  I was in no real condition to fend for myself, so she dressed me in loose fitting clothing I could kind of work off myself, and cut food into cubes on the coffee table, along with drinks with straws — so I could kneel and eat with my face.  It worked out pretty well, though I did have to defend the cheese cubes from Loot de Doot Doot, my cat, who hovered nearby.

During the week, we went out to Northwestern Hospital, where they replaced my splints with another set of splints designed so that I could type, so I could get back to work the following week.  Friday came and went, and nobody from the cable company came by or called.

Apparently, it’s best for injuries such as mine to start physical therapy right away, so that Monday, I was in physical therapy already.  I could take the bus to the hospital, but if I didn’t get a seat I had to “surf,” because I couldn’t hold on to anything.  I was gone for about an hour, and surely enough, when I got back, there was a note on the door from the cable company.  “Sorry we missed you!”

It was attached to a flyer from the cable company that promised $100 if they missed an appointment … like the appointment I had on Friday that nobody showed up for.

By then, we had gotten a speaker phone set up so I could call the cable company (I could dial a phone, but not lift the receiver or hold it to my ear) and I didn’t have much better to do than sit on hold, so I finally got through.  I explained what the flyer said, and asked for my $100.

“We only give out the $100 if we miss an appointment,” the cable representative explained.

“Well then, I certainly expect $100.  My appointment was on Friday.”

“No, we moved it to Monday,” she informed me.  “We probably just didn’t have time to notify you.”

“What?”  I really had not expected this, and tried to be patient.  “If we make an appointment, and you don’t show up or even make an attempt to contact me in any way, I’m pretty sure that fits any definition of missing an appointment.  What’s the point of having an appointment if either side can just move it whenever they want without notice?  By that definition, I can move the appointment back to Friday, and you sure as hell missed it.  You know what?  I just did, and you owe me $100!”

I was restrained enough not to add “infinity plus one no take-backs!” and was rewarded with nearly a full minute of silence.

“Well,” she finally said, “the $100 is in the form of a credit that you get after your first year of service, did you want to make another appointment?   The earliest we can get out there again is about three weeks.”

“You know what?  Fuck you,” I said as politely as I could, and unable to slam the phone down, settled for bashing the hang-up button with my forehead.  Loot was impressed enough to leave my food alone for the rest of the day.

I called Dish Network, who installed everything right away, and actually kept their appointment, which normally would not impress me.

Dave drove me to work the next day.  Since I could type, I could be pretty productive at my computer, but wasn’t very good at anything else.  Like eating.  Jimmy sat next to me at lunch, cutting my food and putting each bite on my fork, which with my new splints, I could just get food into my own mouth by holding the fork between my fingertips and stretching my neck as far as I could.  Jimmy helped with everything, from straws to napkins.

I excused myself, explaining that I had to visit the restroom.

Jimmy’s face suddenly had the frozen expression of somebody who had just received some very bad news but is trying not to show how devastated they are.  This confused me for a moment, before he offered sincerely, “do you … uh … need any help?”

My elbows had allowed me to sidestep my company’s rigid dress code that required ties, and I was in a loose-fitting t-shirt and shorts.  Although it wasn’t quick, I could pretty much get them on and off by myself.  “No, I’ve got it, thanks.”

I don’t think I’ve ever seen anybody look more relieved.

Dave drove me to work and back every day until my elbows were completely healed.

Also every day, the cable company called, offering to hook up my service, explaining that since the cable was already in place, it would be quick and easy.  I patiently and slowly explained the entire story to them, explaining that they were welcome to send somebody by with $100 any time they wanted me to reconsider whether or not they had enough integrity for me to do business with them.  They never took me up on it.

As a testament to the power of first impressions, it has been years, and my neighbors still seem to think of me as “the guy with the broken elbows.”  Every time I’m up on a ladder, one or more will drop by to “make sure I don’t break anything.”

Share

The physical to the virtual

If you’re like me, you have at least 40 computers lying around, some of which have software installed that’s useful just often enough to justify their continued existence — inevitably, right after you decide the hardware would be useful for another purpose and wipe out the disk.

In this day and age of virtual computing, it seems like it should be trivial to make a drive image, drop it on a network drive, and then mount that as a virtual image.  I don’t know of any drive imaging software that’s directly compatible with virtual machines, or vice versa, so there’s a conversion step involved, where the image from the drive imaging software becomes a drive image for the virtual machine.

Conversion is probably the wrong word to use here, since the process seems to involve running the drive image on the virtual machine software to recover the image.  For virtual machines, I used VMWare, and for the drive image software, I used Ghost.

Getting Ghost to save its images to a network share is a matter of selecting the right options when creating its boot disk, most notably the network driver, that has to match the hardware of the machine you’re making the image of.  Note that there appears to be a 2 gigabyte limit for files (probably because Ghost is essentially running from DOS) so that Ghost will need to create “spanning” files, or a whole bunch of 2 gigabyte files, that will comprise the image.

If all goes well here, create another boot disk for Ghost to restore the image.  This time, you’ll want to get the right network drivers for VMWare, which emulates “AMD PCNet II” hardware.  You can get the right drivers here.

Booting a virtual machine from there, I noticed that Ghost.exe wasn’t actually on the boot disk (makes sense, since it’s over 1 megabyte by itself) so I copied it to the network drive made accessible to the boot disk.  Before running it, I noticed that I had to manually run “mouse” (the mouse driver) to be able to use my mouse for its DOS-based GUI.

Following the menus to select an image, I got to the point where a dialog box came up to select the image, filling in the A: drive as the default location, and the machine locked up.  I don’t mean just the virtual machine either, but the host machine itself.  Trying various combinations of A: drive access, removal, and virtualization was no help, Ghost would consistently lock up at this point.

The problem appears to be the dialog itself, and perhaps whatever it’s doing to the floppy drive.  Selecting the file from the command line did the trick:

ghost.exe -clone,mode=restore,src=first_1.gho,dst=1

Note that this takes a long time.  It took about 12 hours to recover an 80 gigabyte hard drive into a virtual machine.  Your mileage may vary.

After all this, once the virtual machine comes up, the almost inevitable result for an XP system will be a blue screen of death — easily remedied by booting the virtual machine from the XP installation CD, and running the recovery process (by pretending to install up until the point where it detects a prior installation of XP, then pressing R.)

Share

More Tales of Loot (and Another Apartment)

Loot de Doot Doot and I moved into a high-rise Streeterville apartment that didn’t have any pet prohibitions.  At one time, it must have had a wonderful view, since one entire wall of the apartment was comprised of glass windows.  By the time I moved in, another building had been built right across the street, blocking all but a sliver of Lake Michigan.  On the plus side, at the right time of day it was possible to see the residents of the building across the street brushing their teeth.

Helping us move were a couple of big guys who did moving on the weekends, one large enough to have to duck to make it through doorways.  There was a microwave on top of our full-sized refrigerator, and he pointed over and asked, “does this go?”  “Sure,” I said, meaning the microwave, and he picked up the refrigerator with the microwave on top, with about as much difficulty as I might have lifting an empty box.  Well, maybe a little less.

Demonstrating his usual good judgment, Loot puffed himself up to as big as his kitteny frame could possibly get, and actually tried to intimidate this man with his size, causing him to raise an eyebrow.  “I think something’s wrong with your cat.”

Dirty, Dirty, Loot

Dirty, Dirty, Loot

Among Loot’s many fetishes was a deep-seated need to do battle with tissue boxes, usually in the middle of the night, when decent people were nestled in their soft beds, merely dreaming of attacking tissue boxes.  To discourage this wasteful habit, I hit upon the idea of surrounding each tissue box in the apartment with packing tape, face-up, so that a cat would pretty much have to step on it in order to get to the tissue.  It worked — in the morning, the tissue box would still be full, and there was a ball of tape saturated with white hairs.  Each night, I’d do this, and each morning, there would be a sticky ball of tape.  It was a full two years before the tape was actually intact one morning.  (I watched Loot carefully for a few days to make sure he wasn’t sick, but it appears that he actually had managed to learn something.)

Like many other cats, Loot had a knack and desire for unseating potted plants and playing in the dirt.  When caught, Loot would insist that “somebody else” must have knocked over the plant and played in the dirt.  He’d explain away the dirty patches on his normally white fur as being “some kind of genetic thing,” or that maybe “some guy had put dirt on him.”

When we got a little potted cactus, its spines seemed like an ideal Loot-deterrent, and showed all signs of being the first plant that would survive more than a few days in an apartment with Loot.  It took the apparently random deaths of several cacti before we caught Loot in the act:  he would very carefully position his mouth around the spines, and once he was finally in position, poke his teeth into the fleshy part of the cactus.  Then he’d sit and watch the juices run down the plant with the kind of smug expression that only a cat can muster.  Future cacti survived by virtue of getting the tape treatment that ultimately proved successful in protecting my tissue boxes.

For years, I had been receiving anonymous postcards in the mail, with only the words “wish you were here!”  They came from all over the United States, and occasionally, foreign countries, always the same message, but sometimes in different handwriting.  Every time I moved, they would be mailed directly to the correct address, so I reasoned that they must be coming from somebody I knew, but I had no idea who.  About the time I moved, the postcards tapered off, but I started receiving stuff.

Among other things, I received a dozen sets of curiously small ceramic cat salt-and-pepper shakers, a set of steak knives missing a knife (the special instructions in the order indicated that the factory was to remove a knife before shipping,) a cheap electric drum machine with the power supply missing (with instructions not to ship one included on the packing slip), a dozen personalized pens with my name misspelled, three extension cords snipped in half, and a gross of turkey basters.

Whoever was sending these things was purposefully toying with my intense desire for things to work and my equally strong desire not to throw things away.  I tried to use the ceramic kittens.  I tried to locate the missing steak knife, and a power supply for the drum machine, and actually repaired the extension cords, most likely spending more than simply buying extension cords outright.  I couldn’t think of anything to do with 144 turkey basters, but this was close to the number of apartments in the building, so at 2:00 a.m. one morning, I put a turkey baster in front of every door in the building, with a post-it note attached to each one that said, “seems like something you can use!”  They might get thrown out, but a few might actually prove useful, thus assuaging my guilt better than simply throwing away 144 perfectly serviceable turkey basters.

I never did find out who sent my the postcards, or the stuff.

Warm Laundry

Warm Laundry

I bought an antique clock that needed some work on the mechanism.  Over the course of about a week, I disassembled the entire thing, and put it all back together, having adjusted every bearing and lever.  I wound it and left it on the coffee table overnight, so see how accurately it could keep time.  In the morning, I discovered that it had stopped some time during the night.  I couldn’t think of a reason in the world why it would stop, and completely disassembled and reassembled the mechanism once again, and it showed no signs of stopping while I watched it.  But the clock wouldn’t run for an entire day, always having stopped some time during the night when I checked it in the morning.

Every few months, I’d work on the clock with similar success, utterly failing to find anything wrong with the clock that would explain its stoppage.  After about a year of this, I happened to be up late, and found Loot sitting near the coffee table, staring at the pendulum.  After a few minutes, he swatted it with his paw until it stopped, and walked away, slowly and self-satisfied.  Yes, it turns out there was absolutely nothing wrong with the clock.

The building management decided to go condo, and had a party at a neighborhood restaurant for the residents to encourage them to buy their own units.  It was a nice party, with beer, blues music, and their own t-shirts.  At the end, they passed around a little survey for residents to provide feedback by putting a tally next to statements they found true.  At the bottom of the page was the statement with the most votes, where somebody had written in, “better than that weird turkey baster promotion.”

Share

A Tale of Loot (and our apartment)

When I first moved to Chicago, I moved to a cheap apartment known as a “4+1,” for four levels of living over one level of parking.  No pets were allowed, but they did allow the tiger fish I had at the time, so it wasn’t a concern.

Loot Talks to the Fish

Loot Talks to the Fish

After about a month, my sister-in-law found a stray kitten.  He was tiny, and white, and fresh out of the bath he’d been given.  Every time I spoke, he’d stare at me with the most intense expression of contentment I’d ever seen, on a cat or otherwise.  I decided to take him home.

I’m of the opinion that cats should not have elegant or sophisticated names.  Cats tend to be full of themselves anyway, and a patently ridiculous name can help their humility.  So his name thenceforth was “Loot de Doot Doot,” or just “Loot!” for short, which he’d recognize as his own name when properly yelled for emphasis.

Although Loot never scratched, he did have ear mites when I first got him, and I had to take him to the vet a few times in the first week.  To avoid making it obvious to the management that I had a pet (it was not clear what the consequences would be) I tucked Loot into my backpack, which he actually seemed to enjoy.  On his final trip home from the vet, I stopped to buy a couple of hotdogs from a street vendor, and without thinking, tucked them into the small outer pocket to eat when I got home.  He looked pretty crazy when I let him out, and didn’t want to ride in the backpack after that, though he would occasionally climb in … just in case.

Loot was a source of chaos and a loyal companion, with more of the former.  I returned home from work one day to discover that Loot had emptied an entire economy sized box of tissues, spreading torn tissues all over the floor.  He had managed to cover every visible area of carpet, and sat proudly in the middle of the room so that I could admire his handiwork.  “Now you don’t have to walk all the way to the box if you need a tissue,” he explained, “you can just stop, bend over, and pick one up.”  He seemed genuinely confused why I was not pleased.

I invited a friend from college over for a beer, and in the manner of cats, Loot made himself scarce.  I didn’t think to mention to my friend that I had a cat, until he was sitting on my couch, and Loot leapt up behind him and grabbed his head with both paws. From my angle, I saw an amazingly comical expression of shock and surprise on my friend’s face.  Luckily, no blood had been drawn, because I could not stop laughing.  I actually have not seen him since that day.

One of Loot’s few talents was the ability and desire to keep things on his head, which I would occasionally exploit by putting small items on his head, which he would carefully balance until he forgot about them, or got distracted.  On a regular basis, I would balance empty cans on his head, which he would dutifully keep in place, usually until I bothered to retrieve them.

A Little Hat

A Little Hat

On Saint Patrick’s Day, one of the beer companies had a promotion where they topped their beers with little green plastic hats.  We had a few friends over, and we had about a six pack of hats.  One of the party-goers, perhaps me, put one on Loot’s head, and he proudly wore it for hours, holding his head flat, walking around slowly and carefully before ultimately refusing to move for fear it would fall off.  When it inevitably did fall off, he seemed inconsolable until he was distracted — or perhaps 10 seconds.

The apartment itself sucked.  One of Loot’s more useful pursuits was chasing and eating roaches, which I tried to discourage in the event that he was ingesting pesticides, but he did at least seem to keep them at bay by smacking them as they crept out of the baseboards.

My neighbors were insanely loud.  After being woken up again at two in the morning (no easy feat, I am a very heavy sleeper) I visited my upstairs neighbor.  I had to pound on the door, and he answered, apparently oblivious as to both the time and why I would suddenly stop by for a visit.  I was struck by two things.  First, there were moving boxes everywhere, so it was hard to see anything, even furniture.  Second, although loud, his stereo actually seemed a little quieter than it did downstairs in my apartment.

“Come in,” he invited.  We stood among stacks of boxes, since there appeared to be nowhere to sit.

“Did you just move in?” I asked conversationally, since it didn’t appear obvious to him why I’d stopped by in my bathrobe at two in the morning.

“I’ve been here five years,” he said, his expression saying, “what an odd question.”

“Moving out?” I said, trying not to seem too hopeful.

“Nope.”

“Well, I’ve come up here because I can hear your stereo in my apartment below yours.  And I don’t just mean that I can make out the words, I mean it’s actually at a higher volume in my bedroom than I’d turn on my stereo if I were listening to my own stereo.”

He pointed between the boxes at his massive speakers.  “Nah, man, I point my speakers at the floor to make them quieter.”  I could see that the speakers were, indeed, lying face down on the floor.

“But I live below you.”

“Yes?”

“Where the sound is directed.”

“Huh?”

“Look, could you just turn it down so I can sleep?”

“That’s why I put the speakers on the floor.  It makes it quieter.”

“It’s louder downstairs.  Pointing them at the floor makes it quieter up here, but louder down there,” I explained slowly.  “It would be better if you pointed them at you and then turned the volume down.”

He seemed completely baffled by my words.  “But…  Pointing them down makes it quieter.”

Surprisingly, I successfully fought the urge to punch him in the face and managed to talk him into turning the volume down.  Later, I had the same conversation with him about five more times.

Although probably the most obtuse, he certainly wasn’t alone.  On any given night, somebody in the building would either be having a party, have an important drug deal to conduct, or find some excuse to turn their stereo up so loud that it was impossible to sleep.  I wasn’t sure how anybody in the building could sleep, and it didn’t help that the building itself had thin walls and a structure that would resonate with bass.

So without looking back, I decided to move to a nicer place that actually did take pets.  The leases overlapped, so I made sure Loot had enough food and water and spent the night in the new place the first day I could.  After work the next day, I went back to pack up the last of the stuff for the movers, and as I approached the apartment building from the garage underground, I heard an incredibly loud, rhythmic pounding.  “Good riddance to this place,” I thought.  It was louder, in the garage, than it was in my apartment when the tenant above blasted me awake.

As I got off the elevator, the noise was overpowering.  A repetitive beat, but now I could hear a repeating synthesizer melody over the bass.  At about the same time I recognized the tune as being one of the “back up” loops from a cheap Casio synthesizer, I realized the noise was actually coming from my apartment.

The Casio was connected to the only amp I had, which was actually quite powerful and loud.  Loot had managed to turn it all the way up, then step on the right combination of keys to put this horribly cheesy beat into an infinite loop.  Loot sat on the kitchen table, looking quite pleased with himself.

I rushed in and turned it off, leaving the door open.  A woman leaned in, one of my nicer neighbors whom I rarely saw.  She noticed the boxes, and said, “oh, are you moving out?  I’ll miss your little cat.”

“Yes…  What?”  As far as I knew, she had never been in the apartment before, and I’d certainly kept it a secret that I had a cat at all.

“Oh yes, every time somebody comes up the elevators, his little white paws come out under the door, and he talks to us.”

“Oh.  Well, I hope the noise didn’t bother you.  How long was it going, anyway?”

“No, it didn’t bother me at all,” she said, though I wasn’t sure if she were just being nice.  She gave it a moment’s thought.  “A little over 24 hours, I think.”

Not one person complained.

Share

Just Like Suicide

On my first day in college, I was settling into my dorm room, and in wandered one of the ugliest people I’ve ever seen.  The college experience is unique in that you’re suddenly in close proximity to a large number of people whom you don’t know, are vaguely your own age, are on the cusp of adulthood, and coincidentally the onset age of many forms of mental illness.  The little troll-like beast looked around at the stuff I was unpacking, and half-asked, half-pronounced, “So, you like hockey?”

I didn’t want to leap to conclusions, so I looked around for any indication that I liked hockey, or that anything in the room implied anything of the sort.  It’s not that I dislike hockey, it’s just that I never gave it a second thought.  Perhaps it was some kind of test question, or conversational opener.  “Why do you ask?”

“You just kind of looked like you like hockey,” he replied.  This didn’t strike me as particularly complimentary.

After a moment, it was apparent he was going to say nothing more.  “Do you like hockey?” I asked him, for no particular reason, starting to feel vaguely uncomfortable with his continuing presence.

“It’s okay, I guess,” he stated flatly, and wandered out the door.

I’m normally the type of person who ends up being friends with people who are socially awkward or who don’t make friends easily.  I’ve never been able to bring myself to walk away from the lonely, and can usually find something interesting or redeeming in anybody.  By virtue of sticking up for or trying to help the downtrodden, I seemed to end up hanging out with them frequently.

I made a sincere effort with the troll to engage him in normal conversations.  Partly because of his striking unattractiveness, I made even more of an effort than came naturally.  In nearly every conversation, the troll managed to insult me in some way, and despite my best efforts to draw him in to social situations, got nowhere.  Everybody absolutely hated him.

I didn’t hate him, which meant that I got to commiserate with people who had to deal with him.  He actually had an amazing ability to say, at any given point, the very thing that would piss off the greatest number of people, and was such a pernicious loser that he was thrown out of every organization he attempted to join (an amazing feat, frankly) — he even attempted to join the volunteer fire department and was judged “a danger to himself and others” on the first day of training.

After a while, I gave up.

Near the end of the quarter, I was walking by his room on the way to the cafeteria, and heard him wailing, “I just can’t win!”   I stopped for a moment, and he howled, “I don’t care any more!  I don’t care any more!” in an anguished screech.

I wasn’t quite sure what to do.  A few friends saw me standing there, and stopped and stood there with me.  After a moment, the troll screamed louder, “I don’t care any moooore!  I don’t care no moooore!”

About a week earlier, we had all been present on the couches in my room in a mad college combination of studying and drinking when our mutual friend “Matt” staggered into the room and announced, in a drunken slur, that he’d “had quite enough.”  We waited for Matt to say something else, or pass out, but instead he ran toward our large, open, fourth-floor window.

My roommate, closest to the window and thinking faster than any of us, managed to grab Matt by the ankles as he was halfway out the window.  Matt bent at the waist as momentum carried him forward, and his face hit the side of the building.  Three of us hauled him back inside, unconscious.

Matt’s face was scraped up, but otherwise he didn’t seem in very bad shape, so we dumped him in the common room, careful to leave him face down.

Neither Matt nor the rest of us spoke of the incident again, but it was foremost on our minds as we stood outside the troll’s door.

“You think he’s going to kill himself?”

“He probably should, I hate that guy.”

“Oh come on, we can’t just stand by and let him kill himself, whether we like him or not.  We should get him some help.”

“Okay, let’s go in.”

I knocked, then banged, on the door, but the troll didn’t answer.  He just kept up that awful screaming:  “I don’t care any mooooore!”

Crap.  I tried the knob, but his door was locked.

“Now what?”

“We’ve got to break in”

We knew from experience that the dormitory doors could be opened by applying enough pressure to the metal frame while pushing the latch.  We ran to our rooms and came back with a crowbar and a thin screwdriver.  When we got back, the troll was still screaming, “I don’t care any moooore!”

I winced at the awful noise.  “My god, he sounds like he’s suffering.”

“At least we know he’s still alive.”

After a moment, the four of us managed to spring the door open, and tumbled into the troll’s room.

He was sitting in the dark under his desk, in nothing but his underwear.  He looked remarkably pleased to see us break his door and spill into his room, as if we’d all decided to visit him on his birthday.  He was wearing huge, ear-covering headphones, which he removed upon seeing us.

“Oh hey, guys,” said the troll, “I was just listening to some Phil Collins.”

Share

X10 and Compact Fluorescents

X10 is an unfortunately-named industry standard for controlling devices (e.g., lights) via low-voltage signals over power lines.  First created in 1975, it has the advantage of having relatively cheap hardware, and although there have been attempts to create a more modern and capable replacement, they have been hampered by high costs — an X10 switch might cost $10 if one shops around, and a Lonworks or Insteon switch might cost $100 or more.  Until the day comes when each outlet in my home is also its own web server, I think I’ll settle for the balance of control and cheapness that X10 provides.

X10 works by adding a 5 volt signal to the powerline’s power, which is then picked up by an X10 device that listens to the embedded command (e.g., turn on, turn off, dim, and so on.)  The problem with this is that various other things plugged into the powerline tend to absorb or attenuate this 5V signal, so by the time it reaches the device which should be listening, it can be too weak to reliably accomplish anything.

The traditional solution is to locate devices that are weakening the X10 signal, and place them behind a filter.  This works pretty well, although it can be tedious to locate the devices responsible, and it’s possible to require a lot of filters for acceptable performance.  An alternative is the installation of a repeater, which listens for the signal and echoes it back to the powerline, presumably closer to whatever device you’re trying to control.  It’s not cheap, and if the signal is weak enough, either the repeater won’t hear the original signal, or the device won’t hear the repeater.  I’ll come back to this problem in a moment.

Compact fluorescents are little fluorescent bulbs that screw into the place of regular bulbs, and consume considerable less power than incandescent lights.  However, they aren’t compatible with X10 switches designed for incandescent bulbs.  You can either use X10 switches designed for fluorescent loads (also known as “non-dimming,” “appliance,” or “relay”) or you can buy dimmable compact fluorescent bulbs, which has the advantage of able to dim them … somewhat.  (As they dim, they flicker and go out where an incandescent bulb would continue to dim through yellow and red — compact fluorescent bulbs simply cannot be dimmed as well or through the same range.)

However, these bulbs have the side effect of attenuating the X10 signal, and built-in lights aren’t candidates for simple plug-in filters.

On the plus side, there’s a device that can overcome this — not by filtering each source of attenuation, but by boosting the X10 signal itself.  It’s called an XTB, or X10 Transmit Booster, and it’s a clever little device that sits between the source of your X10 signals and the power line, intercepting the 5 volt X10 signal and putting out about a 20 volt X10 signal.

It works really, really well.

The XTB kit and components

The XTB kit and components

The company — or more accurately, guy — who produces these hasn’t the wads of cash for UL approval, so they’re sold in kit form.  The kit itself is beautifully put together, with excellent instructions.  The trickiest part was a surface-mount op-amp.

When it arrived, I’ll admit to being eager enough to whang the thing together in about half an hour, with the caveat that soldering components is almost second nature to me, and that I probably should have read the part about mounting the LED a little more carefully.  On the plus side, it worked flawlessly.  For those not adept with an iron, it’s possible to have it assembled for you.

If you’re running X10 and have any kind of signal issues, I’d recommend this before I’d recommend bothering with filters.

Share

Airports, Great Places for Practical Jokes

I fly a lot, though I flew even more in the days before online conferences were remotely practical.  In the early 90’s, I was flying from O’Hare to Dulles.  I had some time to kill, so I used a payphone to dial my voicemail.  If that didn’t make it clear that this was nearly 20 years ago, perhaps the fact that I had a pony tail and dark glasses, and looked vaguely like a Bond villain does.

Then, as now, people would occasionally leave rambling messages that didn’t really say anything, but just in case there was something important at the end, I’d listen to the whole thing.  I’m sure I looked fairly frustrated after the fourth time the caller meandered his way through saying the same thing he easily could have summarized — or not said at all — and I noticed a girl standing at the pay phone next to me, holding the receiver to her ear with a vapid expression and twirling her gum, staring at me.

I put on a crazy expression and said into my receiver, “I killed him, he’s dead,” in a thick German accent and slammed down the phone on the still-rambling voicemail.  Then I turned my head slowly and looked at her.

“Oh.  My.  God,” she mouthed, and hung up, and scurried away.

I didn’t give her a second thought, and checked my watch.  Plenty of time before my flight, so I figured I’d go get a pretzel or something.  As I got in line, I looked over, and the girl is chatting with a policeman.

Uh oh.

She sees me, yells “Never mind!  Thank you for the directions!” at the cop, and scurries away again.  The cop shrugs at me as if to say, “what was all that about?”

I didn’t see the girl again, and by the time I got through the pretzel line, my flight was boarding.  As I got on, I noticed the same girl was on my flight, already seated.  And my seat was right behind her.  She had noticed me as well, and now wore an almost comical expression of abject terror.  I briefly considered saying something to her, but concluded that she was so wound up that it could not possibly end well.

When the flight attendant came by to ask her if she wanted something to drink, she nearly jumped out of her seat, then yelled back, “I CAN’T SEE ANYTHING WITHOUT MY GLASSES.  I WEAR GLASSES.  BUT NOT RIGHT NOW.  WHEN THEY’RE NOT ON MY FACE, I CAN’T SEE A THING.  I CAN’T WEAR CONTACTS, EITHER.”  She spent the rest of the flight alternating between sitting perfectly still and comically pretending not to be able to see at all.

People tend to jump out of their seats when a plane lands, but nobody moved more quickly than she did.  If she had brought any luggage on board, she was content to leave it behind.  As soon as the door opened, she climbed past everybody, yelling, “I have a connection to make!  To … uh … Mexico!” and plowed off the plane, running down the jetway.

Dulles has a weird system where passengers need to take a huge bus between terminals, and when I stepped on the bus, surely enough, there was the same girl, pressed up against the front window, jumping from foot to foot.  I considered turning around, but she spotted me, letting out a little shriek, which she quickly stifled.  I waved and smiled, but I didn’t think anything would calm her down at this point.

Once the bus stopped, she disappeared.  Assuming she had run, I took my time, hoping not to encounter her again.  I happened to look up, out the window, and there she was on the tarmac, running parallel to the terminal.  I figured the best thing to do was to make myself scarce before airport security picked her up.


After 9-11, the TSA took over, and things got weird for a while (and, to some extent, still are.)  One thing I noticed right away were the presence of “amnesty cans,” where passengers were supposed to be able to throw things away before they got to the security line.

Like what?  Guns?  I was curious, so I walked over, and looked into the can.  The interior was kind of dark, so I leaned in.

Mostly lighters, a few bottled waters, nothing too interesting like chain saws or detonators, and a collection of things like tissue and wrappers that I cannot imagine one needs amnesty for.

One of the ever-vigilant TSA saw me, and yelled, “hey!  You!”

I’m not really in the security line any more, and as far as I know, I haven’t committed any crimes, so for some reason, my first impulse is to run.  With the can.  Hunched over a bit.  Yelling, “AMNESTY!  AMNESTY!”

Yes I did.

I have to give the Chicago Police some credit, for at least watching the Hunchback of Notre Dame, if not reading the book, since they were content to stand by with amused smiles as the TSA chased me down to the next security line, where I left the can and blended in with the crowd.

After a few minutes of searching, the guy from the TSA who yelled at me recognizes me, but I can see the uncertainty in his eyes.

“The airport is no place for practical jokes,” he says to me, managing to be both pointed and noncommittal.

“So…  What exactly did you have in mind before you found this out?”

Share

Anteaters, Anonymous

For a while in college, I lived in a weird, 50’s-era, largely metal dormitory.  It probably seemed ultra-modern at the time, but now had a kind of vintage, well-worn look to its metal shelves and cabinets.  Also at the time, I was quite fond of Swiss Cheese Crackers (renamed to Nabisco Flavor Originals Swiss Cheese Baked Snack Crackers, and apparently discontinued, which is really too bad, they tasted great.)  I bought a box with what little money I had, ate a few, and put them on the shelf next to the bed.

I had the afternoon off in my class schedule, so I took a nap in the afternoon to make up for working on a class project late the night before.  It was dark when I woke up, and I didn’t know what time it was.  I thought my roommate might be home, and since he was a fairly light sleeper, I thought it best not to turn on the light and check.  However, I was hungry, so I located the box of crackers, and sat quietly on the bed, eating them.

I had eaten my way through about half the box when my roommate came home, and turned on the light.  I noticed two things immediately:  first, it was about dinner time, and therefore it would not be uncivilized for me to get up and go get something better for dinner.  Second, as I lifted another cracker from the box, I noticed that it was crawling with tiny red ants.

In fact, they were so covered with the little ants, the crackers looked more dark red than their customary yellowish-orange, and appeared to gently undulate with the motion of all the ants.  I dropped the cracker back in the box, and picked up another.  Surely enough, it was covered too, and a peek in the box confirmed that the entire box was full of them.

I took a moment to calculate the odds that the half-box of crackers had been entirely ant-free while I was consuming them, and the act of turning on the light had suddenly winked the ants into existence to neatly coat each cracker and fill the box.

It seemed vanishingly unlikely.  I’d been eating crackers and ants for probably half an hour.  Did the flavor seem a little off?  I hadn’t really noticed.  Experimentally, I picked up a cracker dripping with ants as if it had been dipped in ant-colored honey, and popped it in my mouth.

Yep, hardly noticeable.

By now, my roommate was staring at me with a mixture of surprise and mild disgust.  “What the hell is wrong with you?” he said.

I started to explain about the ants.

“Not that,” he said, exasperated.  “They have pizza and bacon in the cafeteria, and you’re missing it.”

Share

High Fructose Corn Syrup and Kidney Stones

I’ll be as succinct and as blunt as I can be:  high fructose corn syrup gave me kidney stones.

For nearly ten years, I got kidney stones about once per year, on average.  Kidney stones are probably the most painful thing I’ve ever experienced, and I tried an awful lot of things before arriving at this conclusion.  Eliminating high fructose corn syrup from my diet has eliminated my kidney stones — for several years now.

I’m well aware that anecdotal evidence is not scientific, and I’m just an uncontrolled sample of one, but in my case, there’s no room for any doubt whatsoever.  There’s evidence beyond myself, however, such as the here, here,  and here.

This is prompted by this widely aired, misleading pack of lies:

High Fructose Corn Syrup Advertisement

I reject the assertion that it’s “all natural,” since it’s highly chemically processed, and I also reject the assertion that “like sugar, it’s fine in moderation.”  It’s probably fine in moderation; I can probably slip and have some every now and then without having a kidney stone, but I don’t have to avoid either sugar or honey.

I also object to this sort of snarky advertising — it implies that everybody with an objection to high fructose corn syrup does so on the basis of unfounded rumor that they cannot articulate.  And the answer?  “It’s made from corn!”

Asbestos is all natural, for heaven’s sake, so it’s hardly a strong argument that something that’s natural must be good for you.  It’s also somewhat misleading, because high fructose corn syrup certainly doesn’t appear anywhere in nature, it’s purely an artificial product.

It’s also a political ad, since it’s produced by the “Corn Refiners Association,” which is a group pushing its agenda in Congress.  Shouldn’t it be properly labeled as a political ad?

Tobacco is just as natural a product.  You can pretty much just mentally fill in “tobacco” for everything in the ad and you can see where I’m coming from.

I highly recommend avoiding corn syrup, particularly if you’ve ever had a kidney stone.

And to you, Corn Refiners Association, for shame.  I sincerely hope your thinly-veiled political ads cause a massive backlash, and that consumers educate themselves about the real danger of your health-damaging products.

Share

Backing Up Open Files on Windows with Rsync (and BackupPC)

Update:

Versions of the files below may be downloaded here.  This post is probably still useful as documentation.

 


 

This isn’t specific to BackupPC by any means, but I’ll preface this with a brief explanation:  BackupPC is a “set it and forget it” backup system driven from the server, that allows you to back up the entire network of *nix and Windows PCs.  It doesn’t require any software on the systems it backs up at all, since it relies upon rsync and smbclient, and optionally ssh.

For *nix, this works beautifully.  For Windows, this also works beautifully, except that “open files” can’t be backed up at all.  This problem isn’t unique to BackupPC, any attempt to back up or copy these files will fail, so most commercial backup systems have special “open file” clients to cope with it.

The official Windows solution for XP and later is something called a “volume shadow copy.”  It’s probably far more complex than it possibly needs to be, but essentially, it creates a pseudo-volume for any actual volume, with the difference being that you can actually back up files on it.  So, this can be handily used for rsync in order to make full backups, including every single file…  in theory, anyway.

My goals in getting this working:

  1. The solution should work with off-the-shelf components (i.e., no binaries or code)
  2. Installation and footprint should be minimal
  3. It should “just work” — if it’s too delicate, it’s not all that useful as a backup solution

It took quite a bit of trial-and-error, so I’ll skip what didn’t work, and get straight to what actually does work.  There are a few required components:

  1. winexe, a *nix program for remotely executing commands on Windows systems
  2. vshadow, a Windows program that creates and manages shadow copies
  3. dosdev, a Windows program that maps drive letters to volumes
  4. cwrsync, a Windows version of rsync (the “server” isn’t necessary)

Once all the pieces are assembled, I created a C:\BackupPC directory on the Windows box with all the necessary files.  Note that rsync does not need to be installed as a service, it actually gets loaded on-the-fly.  (Note that this directory is hard-coded in a lot of the files.) Here’s a listing of that directory:

Directory of C:\BackupPC
08/08/2008  07:11 PM                65 backuppc.cmd
08/10/2008  12:56 PM             1,928 cwrsync.cmd
07/22/2008  04:30 PM         1,082,368 cygcrypto-0.9.8.dll
04/11/2008  07:03 AM           999,424 cygiconv-2.dll
04/11/2008  07:03 AM            31,744 cygintl-3.dll
04/11/2008  07:03 AM            20,480 cygminires.dll
07/22/2008  04:30 PM         1,872,884 cygwin1.dll
04/11/2008  07:03 AM            66,048 cygz.dll
09/28/2004  02:07 PM             6,656 dosdev.exe
08/11/2008  11:08 PM             1,000 pre-cmd.vbs
08/11/2008  11:05 PM                44 pre-exec.cmd
07/22/2008  02:26 PM           348,160 rsync.exe
08/11/2008  10:12 PM               161 rsyncd.conf
08/11/2008  10:12 PM                22 rsyncd.secrets
08/11/2008  11:26 PM             1,177 sleep.vbs
06/08/2005  03:17 PM           294,912 vshadow.exe
08/11/2008  10:09 PM               581 vsrsync.cmd
08/11/2008  11:33 PM               308 vss-setvar.cmd

So, here’s how it works.  Before each backup, BackupPC has an option to call a local script first, waiting for that script to finish.  Here’s the execution chain:

  1. preusercmd.sh launches “pre-exec.cmd” on the Windows box
  2. preexec.cmd launches “pre-cmd.vbs”
  3. pre-cmd.vbs cleans up some files, launches “sleep.vbs” in the background (more on this later) and then launches “backuppc.cmd” in the background, and waits for the pid file to appear that signals that rsyncd has been launched
  4. backuppc.cmd launches vshadow, and tells it to execute vsrsync.cmd
  5. vsrsync.cmd maps the shadow volume to B:, and launches rsyncd — it sits and waits here, leaving vshadow and rsync open while the backup or rsync process runs — on the shadow copy on B:

Once the backup is completed, another local script is run — here’s its execution chain:

  1. postusercmd.sh puts a file called “wake.up” in the C:\BackupPC directory
  2. sleep.vbs wakes up, sees this file, reads rsyncd.pid, and kills the rsyncd process
  3. vsrsync.cmd now continues, since the rsync process is dead.  It unmaps the B: drive.  Once this script completes, vshadow automatically deletes the shadow volume.

Sure, it seems simple, but a lot of work went into that, since there are a lot of nuances to sort out.  Here are the file listings:

preusercmd.sh

#!/bin/bash
WINEXE=/usr/bin/winexe
UNAME="Administrator"
PWD="admin.password"
WRKGRP="WORKGROUP"
BOX=$1
$WINEXE --interactive=0 -U $UNAME -W $WRKGRP --password=$PWD //$BOX 'cmd /c c:\backuppc\pre-exec.cmd'
sleep 5
echo "Rsync and shadow copy loaded"
kill $$
# The script needs to be killed, otherwise, winexe waits for input

pre-exec.cmd

cd \backuppc
@echo off
cscript pre-cmd.vbs

pre-cmd.vbs

Const Flag = "C:\BackupPC\rsyncd.pid"
'
' Pid file shouldn't be there already
'
If DoesFileExist(Flag)=0 Then
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set aFile = fso.GetFile(Flag)
   aFile.Delete
End If
'
' Nor should "wake.up"
'
If DoesFileExist("C:\BackupPC\wake.up")=0 Then
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set aFile = fso.GetFile("C:\BackupPC\wake.up")
   aFile.Delete
End If
'
Set objShell = CreateObject("WScript.Shell")
objShell.Exec "cscript C:\BackupPC\sleep.vbs"
'
Set objShell = CreateObject("WScript.Shell")
objShell.Exec "C:\BackupPC\backuppc.cmd > C:\BackupPC\file.out"
'
' Just sleep until the file "rsyncd.pid" appears
'
While DoesFileExist(Flag)
   wscript.sleep 10000
Wend
'
' functions
'
function DoesFileExist(FilePath)
Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	if not fso.FileExists(FilePath) then
		DoesFileExist = -1
	else
		DoesFileExist = 0
	end if
	Set fso = Nothing
end function

sleep.vbs

Const Rsync = "C:\BackupPC\rsyncd.pid"
Const Flag = "C:\BackupPC\wake.up"
'
' Just sleep until the file "rsyncd.pid" appears
'
While DoesFileExist(Rsync)
   wscript.sleep 10000
Wend
'
' Now sleep until the file "wake.up" appears
'
While DoesFileExist(Flag)
   wscript.sleep 10000
Wend
'
Set fso = CreateObject("Scripting.FileSystemObject")
Set aFile = fso.GetFile(Flag)
aFile.Delete
'
' It's time to kill Rsync
'
Set fso = CreateObject("Scripting.FileSystemObject")
Set aReadFile = fso.OpenTextFile(Rsync, 1)
strContents = aReadFile.ReadLine
aReadFile.Close
'
Set objShell = CreateObject("WScript.Shell")
objShell.Run "taskkill /f /pid " & strContents, 0, true
'
' Wait for Rsync to let go
'
wscript.sleep 5000
'
' Delete PID file
'
If DoesFileExist(Rsync)=0 Then
   Set objShell = CreateObject("WScript.Shell")
   objShell.Run "cmd /c del C:\BackupPC\rsyncd.pid", 0, true
End If
'
' functions
'
function DoesFileExist(FilePath)
Dim fso
	Set fso = CreateObject("Scripting.FileSystemObject")
	if not fso.FileExists(FilePath) then
		DoesFileExist = -1
	else
		DoesFileExist = 0
	end if
	Set fso = Nothing
end function

backuppc.cmd

cd \backuppc
vshadow -script=vss-setvar.cmd -exec=vsrsync.cmd c:

vsrsync.cmd

REM @ECHO OFF
call vss-setvar.cmd
cd \BackupPC
SET CWRSYNCHOME=\BACKUPPC
SET CYGWIN=nontsec
SET CWOLDPATH=%PATH%
SET PATH=\BACKUPPC;%PATH%
dosdev B: %SHADOW_DEVICE_1%
REM Go into daemon mode, we'll kill it once we're done
rsync -v -v --daemon --config=rsyncd.conf --no-detach --log-file=diagnostic.txt
dosdev -r -d B:

rsyncd.conf

use chroot = false
strict modes = false
pid file = rsyncd.pid
[C]
path = /cygdrive/B/
auth users = Administrator
secrets file = rsyncd.secrets

postusercmd.sh

#!/bin/bash
WINEXE=/usr/bin/winexe
UNAME="Administrator"
PWD="admin.password"
WRKGRP="WORKGROUP"
BOX=$1
PID=$($WINEXE -U $UNAME -W $WRKGRP --password=$PWD //$BOX 'cmd /c echo '1' > c:\backuppc\wake.up')
echo "Rsync and shadow copy unloaded"
Share