Disclaimer: I am not an investment advisor. When I describe my own trading activities, it is not intended as advice or solicitation of any kind.

25 February 2012

Random Hubble Desktop Wallpaper


As I settle into my new Arch workstation, I find myself going through all the little nesting behaviors that any user would demonstrate. Only it's a little more challenging this time around, because instead of a user-coddling operating system like Windows or Ubuntu, I'm using Arch Linux. And instead of using a familiar desktop environment like Gnome, I'm using KDE 4.8. So the most basic of things provides an opportunity for learning. For example, I spent a good 30 minutes trying to figure out how to set up the screensaver the other day. It's easy, and very similar to how every other operating system does it; but I just didn't know where to look.

One of my computing goals this year is to stop taking the features and options spoon-fed to me by the desktop environment and instead be willing to step up and exert my own will on the environment. Arch/KDE is a perfect combination for this, because they are both all about basic building blocks and customization. In my previous installation (Ubuntu 10.10), I had a little python script that I grabbed from Christian Stefanescu that will download the NASA image of the day and make it your desktop wallpaper. I still have that script, and I could use it with a few modifications for KDE instead of Gnome. But NASA's image of the day is hardly ever cool things like stars and galaxies, and instead is usually pictures of people smiling for the camera, or close-ups of a really important and boring piece of metal. I want something with some curb appeal.

I looked into a few other daily-image sites, like Alta Ski Area and National Geographic, but they just aren't designed to be wallpapers - the resolution is too small to look good at 2048x1152, and they're frequently in portrait-mode, which looks terrible on my widescreen monitor. Of course, Murphy's Law dictates that today when I go look at those sites to get the links above, they both are showing images that would look great as wallpapers. Trust me, they're the exception, not the rule. But I digress.

The official Hubble Site has a bunch of fantastic images in its gallery, but they don't pick one a day for you. There is a main page that shows thumbnails of all the images, a resolution-selection page when you click on a particular image, and finally another page that displays the image inline. I figured I could probably handle this with a Perl script, so I grabbed the HTML::Parser package from CPAN to do the heavy lifting, and did a little reading of its description page. It treats the incoming HTML document like a hierarchical tag system, just like most XML parsers do. I've never used an HTML parser before, but I wouldn't be surprised to learn that this is standard - it makes the most sense. You start by deriving your own class from HTML::Parser, and write start() and end() callbacks. Then as each tag (<div>, <a>, <img>, etc) is opened by the parser, it sends interesting info to the start() callback. When it closes, it calls the end() callback. In this way the entire tree of HTML is traversed, in a depth-first fashion.

Wallpaper Thumbnails Resolution-selection 2048-wide image

Being a Perl newb as well as an HTML::Parser newb, I did the easiest possible thing, which was to define three different classes - each tailor-made for one of the three pages that were required for finally getting the image. There is no error-checking or customization capability - paths are all hard-coded, and if anything goes wrong the script will probably just crash. But that means my wallpaper won't change for a couple days, or until I have time to investigate -- not exactly life-threatening. This is another example of utility code that simple doesn't warrant any more attention than is necessary to get it running. I finished it in about an hour.

I have this script scheduled to run every day at 4:00 pm, because that's about the time I get home from work and turn on the computer. It makes me happy to see a new wallpaper appear out of nowhere as I'm getting my email and paying bills. And after all, isn't that the point?

Download the source code if you're interested.

21 February 2012

Recovering an Unbootable Kernel Image

This is a quick how-to on rebuilding an Arch Linux initramfs image when both the main and fallback images are unbootable. This can happen if something goes wrong during an update to the "linux" package and the problem isn't detected and solved before a reboot. This post draws information from the Arch Wiki articles Change Root and mkinitcpio, as well as an Arch Forum post discussing a path problem causing an unbootable image. All the information necessary to recover is contained within these three links, but I felt that a cookbook would be helpful, especially in the stressful moment when a vital computer is sitting at the limited shell prior to booting the kernel.

This is intended to solve the specific problem when the Arch bootstrap claims it can't find the boot drive, and when it is very unlikely that the hardware is actually having a problem. In my case, I experienced this with regularity on a Virtual Machine, which was not having virtual hardware failure. It turned out to be exactly the problem in the forum post described above, but first I needed to recover the system.

Step 1 - Get It Booted
Your system isn't going to boot on its own: both the primary and fallback boot images are refusing to behave. So go get yourself an Arch ISO and burn it to CD or a USB. If you've already installed Arch, you know how to do this. Or read the Arch Wiki article about it if you've forgotten. Use the download and burn process as an opportunity to take a deep breath - that will help with the remaining steps.

Boot from the ISO, and choose the first option from the ISO's boot menu. But don't start Arch setup. Instead get the network running so you can update with pacman.

# aif -p partial-configuration-network

Answer the prompts. If this first step doesn't go well, don't sweat it - it just means you won't have internet access, which probably isn't required anyway.

Step 2 - Take Stock
We need to manually mount all the necessary partitions, and to do that we need to know what they are. If you remember how you partitioned your disk, that's great. But if you don't remember exactly which /dev/sdaX goes where, you'll need to do a little guessing. Luckily, fdisk can help. Note that I've trimmed the output some for brevity. I've also cheated a little and typed in some partitions from gparted because my /dev/sdb uses GPT.

# fdisk -l

Disk /dev/sda: 100.0 GB, 100030242816 bytes
   Device Boot     Start         End      Blocks   Id  System
/dev/sda1   *         63     3903794     1951866   83  Linux
/dev/sda2        3903795   195371567    95733886+  83  Linux


Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
   Device Boot     Start         End      Blocks   Id  System
/dev/sdb1             31 3871748080   3871748047   83 Linux
/dev/sdb2     3871748081 3907029134     35281054   xx Linux-Swap

On my system I have a roughly 2GB bootable ext2 partition on /dev/sda1 and the remainder of the 100GB SSD is ext4. I have a 1.8TB data partition at /dev/sdb1, and my swap file is /dev/sdb2. This is enough information for me to remember that sda2 mounts to / and sdb1 mounts to /caviar but contains the /var directory, which is sym-linked over from sda2.

If fdisk isn't enough to jog your memory, you may need to test-mount and explore a little.

Step 3 - Mount and Prep
Once you know which partitions you need to mount where, get it all mounted under /mnt/arch. Also mount the proc, sys, and dev directories so they'll be available to your chrooted sandbox.

# mount /dev/sda2 /mnt/arch
# mount /dev/sda1 /mnt/arch/boot
# mount /dev/sdb1 /mnt/arch/caviar
# mount -t proc proc /mnt/arch/proc
# mount -t sysfs sys /mnt/arch/sys
# mount -o bind /dev /mnt/arch/dev

In case you need to update with pacman, you'll want network access. If you got the network running in Step 1, copy the resolv.conf down into the chroot world.

# cp -L /etc/resolv.conf /mnt/arch/etc/resolv.conf

Step 4 - Chroot and Fix
Next, jump into your sandbox.

# chroot /mnt/arch /bin/bash

Now that you're here, feel free to poke around in logs to see what might have gone wrong. In my case, I had stupidly run pacman -Syu --noconfirm from a cron job without setting the PATH to include /sbin. As a result, the update script failed to call depmod but then blindly ran mkinitcpio on the incomplete map files, rendering the image stillborn. The depmod result should really be considered during a linux upgrade so that mkinitcpio doesn't trash the boot image, IMHO, but what do I know.

For now, let's assume you have the same problem I did. To resolve it, all I needed to do was the following:

# /sbin/depmod
# mkinitcpio -p linux

As a precaution, I also did a full update with pacman and made sure that everything went smoothly.

# pacman -Syu

All was well, and I was able to reboot into my system again. 

09 February 2012

Happy 1986, Part 2

Last month in the Year-a-Month project, I decided to split 1986 into two installments to control costs. This month is the second installment! I was mainly disappointed in the results last month, but I'm happy to say that 1986 has been redeemed.

Accept: Russian Roulette - In December (1985), I pointed out that Accept was starting to sound too much like AC/DC. They cleaned up their act somewhat with this album, returning to a more traditional heavy metal sound for most of the tracks. There are still the occasional low points, like the first part of the title track. But by and large Accept sounds more like Overkill on this album than AC/DC.

Iron Maiden: Somewhere in Time - I'm always happy when I have a chance to add to my Iron Maiden collection, and this album is no exception. Unwilling to follow the 2nd-person romantic lyrical cliche of so many other bands, Iron Maiden uses a great deal of imagery to imply the meaning in their songs, instead of just whipping it out and laying on the table for all to see. I'm no expert, but to me, that's poetry. And it rocks. Win-win.

Megadeth: Peace Sells... But Who's Buying? - Megadeth is a much more technical guitar sound than anyone else this month. It's always nice to have a stand-out, even when the crowd is as good as these other albums are. Mustaine, at this point in his career, is still pretty annoyed with Metallica. So his rage is pretty thick, and that translates into the guitar riffs. In a good way.
Motörhead: Overkill - after trimming out the duds last month, I found myself with too much to order all in one month, but not enough for two months. I have an easy solution to that: a catch-up album with Motörhead! This one is from 1979, and let's face it: it sounds just like every other Motörhead album. If you like road-metal about drinking, drugs, groupies, and sleeping on a bus, then you'll like this album as much as I do.


26 January 2012

Document Scanning in Linux Using Perl

I decided I wanted to take all the old bank statements, credit card bills, and paystubs that we keep in a file cabinet, and scan them into digital format - PDF, to be precise. This is more secure, because we can easily make backup copies and encrypt anything sensitive. And it's less clutter, because even a small hard drive can hold many lifetimes of statements, records, and bills. It was a pretty straightforward plan:
  1. Buy a scanner
  2. Scan all the documents
  3. Shred all the documents
Of course, being me, I had to improve the process a little.

First off, we chose the Fujitsu ScanSnap S1500. There is also an identical S1500M, the only difference being whether the bundled software is written for Windows (S1500) or Mac (S1500M). Notice there is no S1500L (L is for Linux, boys and girls!). No big deal, though, because after only a few minutes of Googling I was able to be pretty certain there were drivers on my real operating system that would handle it. It was a bit more expensive than I would have liked, but having used it for a while now, I couldn't be happier with it. It scans fast, it scans well, and it does multiple pages and full duplex like a champ. Oh, and it opens like a frickin' Transformer. Awesome!

It uses USB, and I use Linux, so I politely ignored all the step by step instructions and software, and instead powered it on and jammed the USB cable into my machine to see what Ubuntu thought of it. Ubuntu thought it looked like a scanner, and it might like to do some scanning with it. No downloads, no crapware, no driver hell, and no problems. Nice. After a few test scans to get my resolution, orientation, and whatnot the way I liked it, I grabbed a handful of monthly bank statements and started scanning.

OK, that's tedious, and I hated having to re-type the damn file name every time. Chase_2007-01.pdf, Chase_2007-02.pdf, Chase_2007-kill-me-now.pdf. It would be nice to simply tap a key on the keyboard every time I get a document ready. I don't need a GUI, so maybe scripting is the right answer... more Googling.

To take input from a scanner and turn it into a multi-page PDF, (at least) 3 steps are necessary:

Step 1: Grab Images From the Scanner
On the Linux command-line, there's a great command called scanadf that will scan all the pages in an automatic document feeder (ADF) and store them as PNM files. The command for doing that for the May 2007 Chase bank statement is:

scanadf -o Chase_2007-02_%d.pnm --source "ADF Duplex" --mode Lineart --resolution 150

Notice the "%d" in the file name. If it's a multiple page statement, each page will be a separate PNM file, and each file name will replace the "%d" with sequential page numbers. PNM files are essentially graphics files.

Step 2: Convert the PNM Files to PostScript
This is a dumb intermediate step, in my opinion. I don't see why no one has simply written a direct PNM-to-PDF conversion utility. But whatever, another command called pnmtops gets this done:

pnmtops -noturn -rle Chase_2007-02_1.pnm > Chase_2007-02_1.eps

This command gets repeated once for each page, varying the file name like scanadf did. The result is a bunch of Encapsulated PostScript files, one for each page.

Step 3: Convert the EPS Files to a Single PDF
I had never used GhostScript before, but I had certainly heard of it. It always sounded kind of glamorous and mysterious - it's definitely mysterious. I tried to read its man-page and got lost nearly immediately (Adobe's docs always do this to me, too), so eventually I just found a recipe for doing what I wanted and stopped asking questions:

gs -q -dSAFER -dNOPAUSE -dBATCH -sOutputFile=Chase_2007-02.pdf -sDEVICE=pdfwrite Chase_2007-02_*.eps

With all these new-found powers at my disposal, I wrote a Perl script. I had it bump the month up by one and scan in all the pages every time I hit the enter key. I gave it the ability to pass in the starting month/year and the base file name ("Chase") on the command-line. Then I found I was missing the odd statement now and then, so I gave myself the ability to type "skip 1" instead of just hitting enter - this skips a month (guess what "skip 4" does) and continues scanning. Then I came across a monthly statement that was in color and on a single side of each page, so I added more command-line arguments to switch to "Photo" mode at 300dpi and to use "ADF Front" instead of duplex. Then I started scanning statements from a bank that for some reason liked to end its months on the 15th. Being a precise kind of guy, I added the ability to optionally include the day in the statement date: Chase_2007-02-15.pdf.

Then I ran into a brokerage statement that wanted to be landscape.

Step 1.5: Rotate the Damn Page 90 Degrees
Believe it or not, you need another program for this, called unpaper. This is a powerful and feature-rich utility, but I only use it to rotate the page. So the script only executes the following command if rotation is selected:

unpaper --pre-rotate -90 --no-processing 1 Chase_2007-02_1.x.pnm Chase_2007-02_1.pnm

Notice that the input file has that extra ".x." in it - I add that to the output of scanadf if rotation is selected.

What else could this amazing script possibly need? Well, I didn't like that the title displayed in my PDF Viewer was "Chase_2007-02_1.eps" - that seemed a little amateur. So the script also creates and then uses a PDFMarks (link is a PDF) file that sets the Title to "Chase_2007-02", and also sets the CreationDate property to February 15, 2007, because really, why not.

Perfect. I will never need to change this script again. Now let's scan some bi-weekly paystubs. Oops.

The Wrong Way
OK, I'm a professional developer, and I'm pretty good at what I do. I know the right thing at this point would have been to change the script to be able to specify the period. But at that moment, for some reason, I chose to copy the entire script, and change that copy into a bi-weekly one. Ugh. 

Later that same day I realized that manually scanning even the annual statements from retirement accounts and whatnot was kind of cumbersome. So of course that's when I fixed my mistake, combined the two scripts, and added annual periodicity, right? No. I cloned the script again. I'm so ashamed.

I lived with this abomination for nearly a week before its software equivalent of screamed obscenities in a silent church was finally too much for me to handle. Never mind that it was perfectly functional - that's not the point. It needed refactoring. Since it is just a little utility script, after all, I compromised on the perfection. There are still three separate scripts, but they now only do the monthly/yearly/bi-weekly work. They use a common module that does the actual scanning and common option management, so while the design is still terrible, at least I have some code reuse.

I'm publishing the full source for it right here (zip) in case anyone wants to use it, adapt it, or improve it. Let me say one thing up-front, though: I am a terrible Perl programmer. My syntax is nearly non-existent, requiring many trips to perldocs to figure out how to do the simplest things. And I realize that my Perl code looks like a C++ developer wrote it - there's a good reason for that. So if you've stumbled on this blog looking for scanning info, and you're a Perl master, have a good laugh at my expense. But please don't tell me about it.

Now if you'll excuse me, I have some quarterly (oh crap!) bills to scan.

02 January 2012

Happy 1986, Part 1

And Happy New Year! It's 1986 in the Year-a-Month project, and there are so many albums needed to flesh out my collection that I decided to split 1986 into two separate months to control my costs. 1986 is a tough year, because so many hard-rock bands from the 1970s and early 1980s started selling out and turning into pop-rock bands (I'm looking at you, Ted Nugent).

 Black Sabbath: Seventh Star - Wikipedia says that this album was a major, intentional departure from the classic Sabbath sound. As usual, Wikipedia is absolutely right. I like the change of pace, though. The style is a lot more groove-metal than previous Sabbath albums, and by using a (yet another) different lead singer - in this case Glenn Hughes - it lets Sabbath get away with sounding like an entirely different band. Sort of a vacation from themselves.

Joe Satriani: Not of This Earth - This one was a tough decision, because some the track previews were pretty promising. But overall it was a little too electronica-ish for me, and I decided with all the other music that needed buying this month, I could afford to miss it. Does anyone else think he looks a lot like Adam Sandler in this photo?
Judas Priest: Turbo - In the spring of 1989, I was finishing up my freshman year of college, and my school had a compressed-schedule "Spring Term" in which students took only a single class, but that class was a full day every day for a month. Students in other majors went cool places like France or the Galapagos, but I opted to take a 400-level Compiler Construction class. We were using Turbo C to build our compilers, and every time I invoked the "turbo" command on my development machine, I caught myself humming the title song to this album. I did very little partying that term.

 Motorhead: Orgasmatron - This might get me blasted by die-hard Motorhead fans, but bear with me. I'm starting to notice that all Motorhead songs pretty much sound the same. Normally I would slam a band for this transgression (I'm looking at you, AC/DC). But for some reason I love the way Lemmy belts these songs out like he's just finished vomiting up the pills he popped a few minutes ago, and is thinking about popping some more.

Ozzy Osbourne: The Ultimate Sin - Ozzy is not the most exciting heavy metal act in the world, but this is a solid album. He seems to be a little more in the game than the last one, and I caught myself tapping my foot from time to time, which is more than I could say for Bark At The Moon.
Ted Nugent: Little Miss Dangerous - As alluded to above, I have very little patience for Ted these days. It only took a few samples sporting electronic drums and prominent keyboards from this album to make me move on. Nugent's next album comes in 1988, and we'll see what he's up to then.



Next month I will conclude 1986 with Accept, Iron Maiden, Megadeth, and a bonus catch-up Motorhead.

19 December 2011

How To Save A Dog's Life In Chicago

On Wednesday, a stray Rottweiler showed up in our alley. Since my wife was working at home, she got involved in trying to make sure its story had a happy ending. This is a synopsis of what we went through trying to do right by this dog, and all the confusion, misinformation, and apathy we encountered along the way. Ironically, the only way to ensure the dog's life would be saved was to get it to the one place we were certain was a death sentence: Chicago's Animal Control Center.

If you find a cooperative lost pet dog in Chicago, do the following:

  1. Take it to your local vet and see if it has a chip. This might give you a fast track back to the owner, who will love you forever.
  2. Call 311 and request Animal Control to come collect it; if they come, make sure to tell them it's a stray, not yours.
  3. If they don't come, take the dog to your local police district and make them take the dog. They will try not to take it, because they don't want to have to care for the dog - too bad, it's their job.
  4. Contact the appropriate rescue agency and let them know that the dog is entering the system over the next 12-24 hours. They will watch out for it and make sure to collect it the day the dog's ownership reverts back to the city.

This is Bob

This is Bob's story.

My wife and two other neighbors managed to trap the poor scared Rottie in a fenced yard, but the owner of that yard was very uncomfortable with his presence. She has no experience with dogs, and undoubtedly felt threatened by the "vicious killer breed" prowling around back there waiting for an opportunity to tear out her throat. She called 311, the Chicago non-emergency response number, and requested that Animal Control come collect the dog. She was unconcerned with what happened after that, of course, but in any case that is standard city procedure for any stray animal, so I can't really fault her. Animal Control rolled by the front of the house and didn't see the dog (he was in the back yard), and left. Further calls to 311 revealed that they may not be back for days. The yard owner called my wife, pleading to have the dog removed from her yard, saying, "I feel like a prisoner in my own house."

You seem nice. Can I live here?
My wife discovered that approaching with a Milk Bone and a leash was a good way to make a lifelong friend, and had no trouble getting the dog into our own yard. Then began a couple of hours of neighbor discussions and trying to find out if anyone who had a Rottweiler might be missing one. No luck, so she put an ad on Craigslist in case the owner looked there. The dog was proving to be very friendly and easy to manage, so she decided to walk him up to a local vet, Mayfair Animal Clinic, to have him scanned to see if he had a tracking chip and to get some advice. There was no chip, they discovered, but they gave her what seemed like obvious advice: Don't take this dog to Animal Control whatever you do - they'll kill him for sure.


Now, bear in mind, this dog was not the stereotypical stray. For one thing, he was in great shape, maybe even slightly overweight. For another, he smelled like pet shampoo - that's not the aroma one associates with strays or abused killing machines. Finally, he would get really excited whenever he saw a leash, meaning he knew how incredibly awesome it is to go walkabout with a human. He immediately took to me, giving me kisses whenever he was able to sneak past my defenses. For lack of a better name, we started calling him Bob. He didn't really answer to it, but it beat "hey you!"

Mmm. Water.
It was warm that evening, so we set him up with a bed in the garage, and reviewed our options. We have friends who work with Recycled Rotts, a greater Chicagoland rescue agency, and we figured that unless we could find the original owner, they were the best option. Failing that, we knew about one other rescue agency (THORR), and then PAWS or even the Anti-Cruelty Society were distant final choices. Beyond that we weren't even willing to contemplate; my wife put it succinctly: No one is killing this dog. So with this priority list in mind, we called our friend "Cindy" and asked her to use her contacts to get us in touch with the right people at Recycled Rotts (all personal names are changed here in case their owners don't want their privacy violated). We also called THORR and left a message, and my wife filled out a found-dog profile at the Illinois Lost Dogs facebook page. I also sent a description and pictures to Cindy's husband "John" so he could make sure they got passed along. It was getting on in the evening, so we weren't that surprised that no one called back.

The next day, still no calls back by 10am, so she called PAWS and left a message. After still no response by anyone by noon, she decided to call 311 again and ask what to do. Note that 311 did not tell her to take the dog to Animal Control; instead, they said to call the local police district and fill out a report, since the owner might go there looking for his dog. She did, and the police took her report without telling her one very important piece of information: every police district in Chicago has the facility to safely and securely store stray dogs while Animal Control is called to come get them. That little gem would have saved us a trip the length of the city later.

By mid-afternoon, we were both getting pretty desperate to find a safe place for this dog. The good luck with the weather the previous night wasn't going to hold: the temperature was dropping fast, and was supposed to fall well under freezing overnight. We discussed taking the dog in, but he wasn't very well-trained, and we have two (spayed) females: a greyhound and a beagle. That pair would be a recipe for trouble for a fully-loaded 100lb male Rottweiler. I got in touch with John again, and started pushing him hard. He and Cindy have taken Rottweiler fosters from Recycled Rotts in the past, and I was hoping I could get him to offer to take Bob from us; he wasn't willing to cave to that, but he did agree to pull some strings and get the president of RR to call us, "whatever it takes." Just like us, he thought the only way to guarantee this dog's safety was by getting it directly from our hands to Recycled Rotts' hands.

"Cathy" from Recycled Rotts did eventually call my wife, extremely annoyed that she had to interact with us at all. My wife is a saint, and if she describes someone as "snippy" on the phone, you can bet they were snippy and then some. She asked for help, saying that we were desperate to get this dog somewhere safe and warm for the night. After brow-beating her for a while, Cathy eventually gave my wife a piece of information that would have saved everyone a great deal of trouble at the beginning: For legal reasons, rescue agencies cannot take stray dogs directly from the people who find them. The dogs must go through the City of Chicago (Animal Control) first, so that ownership of the dog reverts to the City; only then can a rescue agency claim the dog and get it into its foster program.

Heck, it makes sense when you hear it snapped at you over the phone, but it sure would be nice if a single one of the agencies' websites would have that information on them. Or if 311 would have told us one of the times we called. Or if the local vet would have known and not told us to do the opposite thing. Or if one of the three different agencies we left messages at could have picked up the phone and gotten back to us to tell us this. Or if the police would have told us that, or told us to bring the dog by. But no, we had to manipulate friends and maybe damage their relationship with their rescue agency. THORR has never yet returned our call. I suspect RR wouldn't have either, without John's intervention.

I begin to see why people tie stray dogs to the door of the local doggy daycare place.

Oh boy, a car ride!
The story gets happier from here on. That evening after traffic died down, we started attempting to get Bob into the Ford Escape so we could take him to Animal Control. He made it very clear he wasn't jumping in on his own, and Bob is 100 pounds (guesstimate) of solid Rottie. He thought I was pretty cool, but he was NOT OK with me trying to grab him and lift him into the truck. Finally, I ended up reinforcing a huge piece of plywood and turning it into a ramp. A Milk Bone later, Bob was making happy slurping noises in the back of the Escape.

Bob drools a lot, and he really really wants to ride in the front seat. It was an interesting trip.

I am ashamed to admit that I was expecting a clinical bureaucratic death camp filled with jaded hateful people, but Animal Control was a wonderful surprise. They treated us with respect, they treated Bob as well as any vet would, and they explained how the system worked and reassured us that there was almost no chance that Bob would be destroyed. They could immediately tell that he was a happy-go-lucky 100-lb idiot, not a threat to society; and as long as that assessment didn't change over the next 5 days, it was a virtual certainty that he would get scooped up into the rescue system just like we wanted. Recycled Rotts and other agencies tour the Animal Control Center on a daily basis, it turns out, looking for candidates. If they see a dog like Bob who fits the bill, they will either make a note of him and his release date or ask ACC to put a note on his cage to call them when he comes up for grabs.

So Bob is in jail for the time being, but we're confident that his life is about to get much better.

What could be done to make this process easier on people who want to do the right thing and want to make sure a sweet dog like Bob has a fighting chance at survival? I have a few suggestions:

  1. PAWS, Anti-Cruelty Society, THORR, and RR all have websites primarily designed to get people to take a dog. I understand that: they have more dogs than people to take them. But they, like us, are in this to save the lives, right? A simple How-To page on their website telling people what to do (and why) when they find a stray would go a long way.
  2. The Chicago Animal Control website talks about how many strays they take a year, and gives hours for dropping strays off, but doesn't explain how the system works. Every pet owner knows that Animal Control is a kill-shelter, so we assume it isn't safe to take someone's pet there.
  3. Every agency I called has a long outgoing answering machine message designed to discourage voicemail. It gives various tidbits of information so that most people will get their answer from the message and hang up. Add, "if you find a stray dog, we can't take it; take it to Animal Control instead." Is that so hard?
  4. It would be nice if the cops had been a little more service-oriented. Instead of, "yeah sure we'll take your report and file it under 'hopeless'," it would have been much better if the officer on the phone had said something like, "oh, you found a stray dog? if you can transport it here, we can get it into the right hands for you." Or even, "we'll send a car over to pick it up." Yeah, I know: fantasy.
  5. The Animal Control responder shouldn't have rolled by the house and left. If given an address and told the animal is confined, ring the damn doorbell.
  6. When vets in Chicago give out incorrect information, they cause a lot of harm. Mayfair Clinic was trying to help, but in the end they hurt the process. It doesn't seem unreasonable to expect a vet in Chicago to know how the stray dog system in Chicago works.
I hope someone in our situation, searching the web for clues like we did, might stumble upon this blog post. If they only get as far as the "what to do" section at the top, then I have served my purpose. If anyone reads the story and gets a few chuckles picturing Bob's antics in the car, even better. And if the real message reaches even one person with the power to achieve one of the items on the list above, then I will be truly satisfied.

Good luck, Bob. I hope you find a wonderful home.

04 December 2011

Happy 1985

It is 1985 in the Year-a-Month project, and I'm pretty late this month: I blame Skyrim. As with previous months, I dropped Pantera due to high-priced glam-rock transgressions. Just as well - I didn't need any more disappointments this month. The surprise from Megadeth made it all worth it, though - I had no idea how hard they rocked in 1985. Everyone else... well, maybe 1986 will be better.

Accept: Metal Heart - This album by Accept alternately reminded me of AC/DC and the Scorpions. That is not entirely a good thing, as both bands can really get on my nerves. I hope this is just a phase they're going through.
Anthrax: Spreading the Disease - I bought Persistance of Time back when it was newly released, and liked it well enough. But many of the songs felt too similar to each other and ultimately it fell off of my frequent play list. I'm sorry to say that this album is destined for the same fate, and for the same reasons. I listened to it while doing some work at the computer at home, and when it finished I realized I had no idea which song was which.

Dio: Sacred Heart - This Dio album is a little softer than the first two, and frankly reminds me more of Ritchie Blackmore's Rainbow than Holy Diver. It was also Dio's last album to go gold until Dio's 2009 greatest hits album. I hope this doesn't mean the quality is destined to suffer in the years (months) to come.
Megadeth: Killing is my Business ... and Business is Good - Dave Mustaine started Megadeth after getting fired from Metallica in 1983, immediately before their first album, Kill 'Em All, came out. He wrote the lead guitar leads that Kirk Hammett played on that album, and left very pissed off and bitter about it. If it was a pissed-off Mustaine that masterminded this first album by Megadeth, then I for one think we ought to twist his nipples on an annual basis. This album beats the hell out of Kill 'Em All, and that's not something I ever thought I would say. In an otherwise mostly disappointing month, it's nice to have Megadeth.

Overkill: Feel the Fire - I threw Overkill into this list on a whim, based on enjoying their latest album, Ironbound. This first offering is certainly more primitive, but I can hear the beginnings of the sound that I'm familiar with from Ironbound. I wouldn't say it was a groundbreaking album, but I have to admit my head did some banging anyway.
ZZ Top: Afterburner - this album could also be titled Generator, as in cash. This sad excuse for an album is nothing more than an attempt by ZZ Top to cash in further on the success of its previous album. I kept finding myself reaching for the "Next" button on the MP3 player on this one.



Now if you'll excuse me, I have some Megadeth to listen to again.