Last night we purchase an Apple TV (as well as a Mac Mini, 20″ Cinema Display Monitor, wired keyboard, and wireless mouse). Today I had the unfortunate happenstance of making this little gem of a unit find, and talk to iTunes running on my Mac Pro. I’ll save you the gory details buy my switch is a Linksys SRW224G4P and in the end, I had to disable IGMP Snooping. Otherwise the multicast traffic wasn’t flowing around correctly. This fix came as “well, let’s just see if we turn the helper off”. Well sure as shit, it worked. Yippee for me!

I wanted to report that I succeeded in using iSCSI (on an Openfiler server) with Time Machine via a gigabit link with jumbo frames (MTU of 9000) enabled. The secret to my success? I used the iSCSI initiator from It appears as if the iSCSI initiator from globalSAN is just a plain broke down piece of shit. Well, you do get what you pay for. Hurray for me and my buddy Steve over at Small Tree!

Ok, I first have to say how blown away I am that I was able to get this to work. Here’s the scenario. I was unsuccessful in having VMWare Fusion run my Vista x64 Boot Camp partition (probably for this reason). After many fits and starts, the plan was to create a Vista Complete PC Restore image to an external drive. Then create a VMWare Fusion Vista x64 VM and restore the backup to the VM. The first thing I learned is that Complete PC Restore must restore the image to a drive that is as large (or larger) than the original drive. This is apparently because the backup is a true disk image and not a file backup. Well, this posed a small waste of time because I had created a pre-allocated 250GB vmdk that now had to be scrapped for a 500GB dynamic volume. Also, during the restore, I received an error. I attempted the restore a second time without checking the box to format the drive, and this time time it took.

After a night-long restore of the image, I came into my office in the morning to find the VM repeatedly rebooting do to a Vista blue screen and Vista set to automatically reboot after a stop. I left the VM in a suspended state and went to work. Later on in the evening, I set out to fix the problem. The problem was a 7B stop, which means that a hardware driver for the mass storage unit was not loading at boot. Well, sure, I now have a new IDE controller; as far as Vista is concerned.

Ah, but this is where is gets slick. Vista is now equipped with a revised recovery console, or WinRE. The long and short of it was that I was able to edit the registry from the recovery console. Yes, phat, I know! The docs on how to do this at MS are missing a step (they fail to mention that you need to edit within the “offline” key), so I was able to find better docs elsewhere. This combined with the information as to what registry keys to edit from MS, I was in business. As for that last page from MS, all I did was change the Start value on the two drivers from 4 to 0.


I run an XP virtual machine because our ERP app does not run on Vista Business (or any version of Vista). I also use this environment for development work in and around our ERP application. So, today I was installing SQL Server 2005 Express Edition with Advanced Services. Since this includes Reporting Services, I need IIS installed. This is where I ran into trouble. Add/Remove Windows Components would not launch.

When I attempted to launch Add/Remove Windows Components, I received the following error:

Setup library setupqry.dll could not be loaded, or function IndexSrv could not be found.

Contact your system administrator. The specific error code is 0x7e.

The first step in diagnosing this problem was to run Procmon. I saw nothing unusual because all access to setupqry.dll (c:WindowsSystem32Setupqry.dll) was successful. The next step was to use Dependency Walker. Using Procmon, I was able to see the process that reads setupqry.dll, and the command line is:

"C:WINDOWSsystem32sysocmgr.exe" /y /i:C:WINDOWSsystem32sysoc.inf

I used Dependency Walker to profile sysocmgr.exe, and sure enough, as part of the log output was:

LoadLibraryExW("C:WINDOWSsystem32Setupsetupqry.dll", 0x00000000, LOAD_WITH_ALTERED_SEARCH_PATH) returned NULL. Error: %1 is not a valid Win32 application (193).

Looks as if the file is corrupt. I went to another XP workstation here in the office, and copied Setupqry.DLL from their machine. When I went to copy the file to my machine, I immediately noticed that in Windows Explorer, the file lacked a description like the other DLLs. Well, I copied over the existing file, and Add/Remove Windows Components opened up like a charm. Crisis avoided; back to DEFCON 2.

As a follow up to my prior post about my new Teletype Bluetooth GPS Receiver, I found that the having the two devices was way too difficult to manage. Well, that coupled with my need for the latest and greatest BlackBerry, I now have a T-Mobile 8800 with built-in GPS receiver. The software stays the same however there is no longer a need for the brick (granted a small brick) on the dash.


I wrote my first useful Powershell script today. I had a directory of bitmaps and I wanted to convert them to PNG. This is a relatively easy task in .NET. All I had to do was figure out how to do this within Powershell. The script is as such:

foreach($file in Get-ChildItem *.BMP)
echo $file.Name
$image = [System.Drawing.Image]::FromFile($file)
$image.Save($file.ToString().Replace("BMP","png"), [System.Drawing.Imaging.ImageFormat]::Png)

As simple as this may seem, it really isn’t. First, the FromFile() method kept throwing an exception with NO description. After running FileMon did I see that it was looking in the wrong place for the file. As to why it didn’t bubble up a FileNotFoundException, I haven’t a clue (thanks Redmond). I also attempted to trap the exception, but seems to do nothing as well.

The second hurdle to get past was the fact that Get-ChildItem returns a System.IO.FileInfo type and the Name property contains only that — no full path. However ToString() does, and so that is where I called Replace() on. Once the pieces where in place, it worked like a charm.

I just started using a Bluetooth GPS receiver from Teletype. It seems to work well when I toss the device up onto the dash. Initially, I used the freely available BlackBerry Maps from RIM, however, the lack of voice guided turn-by-turn directions makes it useless while driving. After a quick Google search for BlackBerry GPS Guidance apps, I found TeleNav and this morning I downloaded it and signed up for the 30 day trial.

TeleNav worked surprisingly well. I was surprised that the voice prompts came from the speaker and didn’t require a headset. It’s recovery from a wrong turn wasn’t as fast as the nav system in my wife’s minivan, but I’m guessing that that is a function of the data link between my 8700 and TeleNav’s servers. Furthermore, the full color interface and 3D map graphics made for a pleasant interaction with the application.

IMHO, I do not have a problem with the monthly fee ($9.95/mo). When you look at TeleNav’s side-by-side comparison to a conventional nav device (like a Garmin), it makes a lot of sense. For example, if I installed a Pioneer nav unit, with XM Traffic, I’d be on the hook for a monthly fee, and oh, BTW, TeleNav gives you the same routing around traffic. So when you look at it like that, it’s probably a better deal.

At this point, I’m awaiting a call from a TeleNav sales rep regarding bulk pricing. I’ve been looking for a nav solution for our fleet of 50 vehicles and this may be it. I can leverage the benefit of a BB in each of my technicians hands as well as giving them live, voice guided, turn-by-turn route guidance. What would be the ultimate, is to interface it with our field force automation system, so when we dispatch a call we can provide directions on the fly. That’d be phat.

I’ll keep everyone posted.

OK, maybe I’m being a snob, but I think that the global.asax file is for kids who don’t know anything about HttpModules. Any web app developer worth their salt would prefer to code up an HttpModule than waste time in a file that, IMHO, is just weird. Anyway, this is what I pimped out the other night in my HttpModule

public void Init(HttpApplication context) {
((System.Web.Profile.ProfileModule)context.Modules["Profile"]).MigrateAnonymous +=
new System.Web.Profile.ProfileMigrateEventHandler(ProfileInfoModule_MigrateAnonymous);

void ProfileInfoModule_MigrateAnonymous(object sender, System.Web.Profile.ProfileMigrateEventArgs e) {

That’s the kind of stuff you AIM your fellow coders about. Weeee!

Ok, so I spent probably a week and half banging my head against the keyboard trying to figure out why my Polycom 601 wasn’t receiving audio from an FXO voice-port connected to the PSTN on my Cisco 2620XM router/gateway. I can’t tell you how many times I typed show run, scratched my head, ran trace after trace, only to find myself at Cisco’s IP Communications and Video Forum. Here I started search “one way audio”. Well, this is where I found my silver bullet.

I finally came across a response to a post about a one way audio problem. The responder referenced Troubleshooting One Way Voice Issues. OMFG! All I had to do was read the title to the Ensure That IP Routing Is Enabled on the Cisco IOS Gateway and Routers section to realize that in the show run was no ip routing. Well, one quick change to that and blamo! Voice! Now all I have to resolve is some echo issues, but that shouldn’t be too difficult.

At work we are in the process of migrating from a legacy accounting system to Microsoft’s Navision Attain. The legacy app is running on a SCO OpenServer 3.2v2 box. The guy supporting the app wrote a dump utility that creates ASCII files of the data. The trick to get the data from the box.

The box has no NIC. It works completely with serial boards. Do you know how long it takes to cat a 5MB file over a 19.2k serial link? To long to even figure it out. Anyway, I needed to compress the data before I moved it off the box. Um, ok, then WTF do I do with it then? Can’t cat a .tar.Z file. Kermit!

The SCO box has nothing installed for any sort of file transfer (XMODEM, YMODEM, ZMODEM, or Kermit). Fortunately after spending an inordinate amount of time Googling, I found that the folks behind Kermit, Columbia University (in nYc, boyeee!) had a compiled binary for my version of SCO (!). No shit, right? Yes shit!

Ok, so I now have the Kermit binary on my Windows XP box. If you remember the aforementioned problem; no file transfer protocol implementations on the box. Now, how do I get the file to the SCO box? The SCO box has a command, doscp, that allows me to copy a file from a DOS floppy. Therefore, via sneaker net, I marched into the computer room and slipped that 3.5″ floppy from my PC into that bad-boy. Well, long story short, it fuckin’ worked! Oh yeah, pimp status +1. Furthermore, SecureCRT has fair Kermit support. But, um, we have a problem.

The files seemed to be corrupt. Back and forth I went with moving files from the SCO box to my machine. I was able to ruleout any corruption from Kermit because I was able to move raw text files, and an uncompressed tar archive across the link and they worked just fine. Now, WTF is going on? This is where RTFM is actually your friend (yes, you actually heard me say that).

SCO’s compress command is a little left of center when it comes to the standard, or so it seems to gzip. I noticed in the compress man page a -H switch, which changed compress to the use the LZH compression algorithm. Furthermore, the gzip man page says that it works with compress with the -H switch. When I used this switch, gzip’s -d output changed. Acha! We are on the path to ritcheousness. The error that gzip barfed out was “invalid compressed data -- Huffman code > 32 bits“.

Well, back to the compress man page. Compress also takes a -b switch, which allows you to specify the bit size used in compress. By using compress with -H and -b 32, I was able to get a good decompress from gzip. Pimp status +2! You must also provide the -i switch to Kermit, which lets Kermit know that you are transfering a binary file. Othewise, you get sporatic results. Now I am moving the full tar from the box as we speak. It’s over 4 megs so it’ll take close to an hour to move.

Anyway, for posterity, here is the command I used to build my tar:

tar cf - filedump | compress -H -b 32 > filedump.tar.Z

And the Kermit command:

kermit -i -s filedump.tar.Z