The Johnson Blog

Ramblings of a geek with a few hobbies…

Tag: Tech

  • Wireless Network

    It has been a while since I last mentioned the network that Jay and I have between our houses, so I thought I’d give everyone a little update as well as a quick endorsement of a great piece of software.

    First, the network has been up and running pretty much flawlessly for nearly 2 years now. A quick peek at the current statistics shows we’re getting between 48 and 54Mbps over the 1,100 ft wireless connection (one end of the subdivision to the other). Typically it’s between 36 and 48Mbps, so the extra cold weather (low humidity) must be treating the signal well.

    We have come to rely on the connection for a few different things. First and foremost we backup data between the two houses on a nightly basis. We each have 250GB mirrored drives setup dedicated to hosting backups so that at any given time both of our backup sets live on 4 hard drives at least. 2 at my house, 2 at his. My backup set contains sourcecode, photos, music, documents and some other random things – with a nightly transfer schedule for everything but the music and photos which I do every week. It looks like right now I have 104GB of stuff on the drives and Jay has 42GB. I don’t think it would be exaggerating to say we have probably transferred several terabytes over this thing, which is pretty darn cool.

    In order to handle transferring this amount over the link we turned to a great little piece of software for Windows that implements RSync called DeltaCopy. When one of the schedule transfers is about to take place, it analyzes the data on the source and target machine and transfers only the differences which dramatically reduces the amount of data that goes over the network. There seemed to have been a few quirks to setup the software but it has been running nearly trouble-free for almost a couple years now. Without it, these backups would be a headache. The software is free and works great, so if you need to synchronize data between a couple of computers you may want to check it out.

    So backups are the biggest use of the network, but not the only one. Jay has also setup a voip server which has allowed us to have a phone in each of our offices at home to allow quick calls between the houses – something that is very useful when you’d rather not call the other’s house phone and wake everyone up. I think we may add a phone or two to the system soon so I can add one to my basement and Jay to his 1st floor.

    Media sharing is pretty nice with this setup too, as both of our collections are just a click away for each other. The last two things (that I can think of right now) we use it for that are pretty nice: computer gaming and a backup internet connection for one another. Since he has dsl and I have cable it is pretty rare (I don’t think it has happened) for both to be down at the same time, allowing a quick flip of a switch to use the other connection.

    It took a while to get setup due to some stupidity and assumptions on our part, but has proven to be a very useful tool. When we started it, it just seemed like something to play around with that would be cool, but we have come to depend on it for the things I mentioned here and we now take it for granted.

  • Visual Studio 2008

    Earlier this week I received a free copy of Microsoft’s Visual Studio 2008 by being an Action Pack subscriber and completing a short little web tutorial and quiz. I installed it last night and decided to get the Chef code/projects converted so I could start using it.

    The usual project conversion wizard popped up as soon as I opened the solution and prompted me to upgrade it to the new VS08 format (still targeting .NET 2.0 though).  When the wizard completed, however, I was getting a few compile errors in some of the WinForms designer files (.designer.cs).  It was easy enough to fix, the conversion just messed up namespaces during process, which surprised me a little bit.

    I haven’t spent much time actually developing in 08 yet, but now that I have Chef converted I’m going to stop using 2005 in favor of it.  I’ll report any cool new features I run into.

  • Recipe Slideshows

    Chef has a feature called Recipe Slideshows which allow you to view a recipe fullscreen in a PowerPoint-like format that’s much easier to read while you’re cooking than the small text of a cookbook, or the regular view of a recipe in Chef for that matter. I’ve had that feature around for a while, but I noticed that Ana never uses it!

    Her main complaint was that the ingredients weren’t always displayed so she’d find herself constantly flipping between the directions and the ingredients, to the point where it was just much easier to deal with the small text of the regular recipe window. This past weekend I made a few changes – the ingredients are always displayed AND it highlights the ingredients that are used for the current step. Click for the full image:

    Chef Recipe Slideshow

    This is going into version 1.3 with a few other enhancements and fixes due sometime in January or February.

  • RadioShark with Windows Vista

    If you’re like me, and own a RadioShark and have been unable to get it working under Windows Vista, check out Snaptune One.  It’s software that does exactly what the RadioShark software does AND it works on Vista!  Thank you Snaptune One!

  • Vista and Hibernation

    Just a note for future reference, to disable hibernation in Windows Vista run the following at an elevated command prompt

    powercfg -h off

  • Video Processing

    My video camera was delivered Friday, so this weekend I have spent some time learning out how to use it and, more importantly, how to process/edit its video. Learning how to use it was pretty easy, aside from a little disc snafu that kept me from making use of a pack of DVD+RWs I bought. Everyone – it’s important to make note of the “+” or “-” in the DVD-RW or DVD+RW. I used to know this, but have taken for granted that nowadays it usually doesn’t matter since devices typically handle both formats. It matters on the Canon DC50 – must used DVD-RW.

    Getting that out of the way, using the camera is very straightforward. 20 minutes of high quality (widescreen) video will fit onto a miniDVD. While that doesn’t sound like a whole lot at first, when you’re taking short clips most of the time 20 minutes does go far.

    After my first disc of video it came time to edit it and burn a DVD. Since I’m a big fan of Adobe’s Lightroom for photo editing I decided to turn to Adobe Premiere Elements for handling the video. It has come highly recommended so I didn’t even give it much thought.

    It sucked. For some reason it didn’t interpret the widescreen video correctly; that took a couple (few?) hours to figure out. Then it continually locked up and/or crashed on Windows Vista – even though it’s supposed to work just fine. There were many times when I would go 10-15 mouse clicks in a row, with each one causing Premiere to “not respond” for 30+ seconds apiece. I did my best to ignore these issues, figuring that as long as I’d get a dvd at the end I would be happy. Well, I got a DVD alright – one with the audio and video out of sync by about 1-2 seconds. I eventually tracked that down to an import problem caused by who knows what. As soon as I’d import the video it would be out of sync. I’d rather not have my home videos look like they were dubbed in a Japan.

    After fighting Premiere for a long time I decided it was time to try something else. So I turned to ULead DVD MovieFactory. The responsiveness was much better than Premiere Elements, the audio and video were in sync, and it’s cheaper. I just about ready to buy it when I actually tried burning a DVD I created and continued to get nothing but “Unspecified Error”. Over and over.

    ULead sells another video editing product called VideoStudio, so I gave it a shot too. The UI was very similar to MovieFactory and was just as responsive. I was able to import video, edit it, and create the final DVD without a single crash. I think that’s what I’ll be buying.

    Next I need to figure out how to handle all of this new video data. I’ve got stuff setup for my photos, but these are a different beast. And just like my photos, I want to have them 30+ years from now. More on that later.

  • Canon DC-50

    Earlier this week I purchased the Canon DC50 DVD camcorder and it’s scheduled to be delivered Friday.  I’ve never owned one before, so I want to make sure I’ve gotten used to it by the time the baby arrives.  I looked long and hard at HD camcorders but I’m just not ready to commit to bluray or hd-dvd, let alone the headaches that amount of data will introduce.  So this is one of the best non-HD ones out there and should hold us over for a few years until I’m ready for HD.

    This is the second to last piece of electronics on my list to purchase before the baby arrives – the final being the Canon Speedlite 580Ex II flash.  It has been in my Amazon cart for a few weeks now… 😉

  • Requirements by Eavesdropping

    I’m coining it. Defined as a process by which software requirements are gathered not by formal meetings and documents, but rather by hearsay.

    They sure don’t teach you that at school.  Nor should they.

    I can use it in a sentence, but I’d rather not.

  • FTP problems on Windows Vista

    This is an addendum to On Windows Vista from a couple months ago. This weekend I’ve been making some modifications to the installation process for Chef, making it so the database engine isn’t packaged with my installer and making it such an enormous installation package. So now I have it so that when Chef is run for the first time, it will (if needed) download the SQL Express install from my website.

    All fine and dandy, until I needed to upload the SQL Express install to my hosting account. I usually just fire up my FTP client and never think twice about it. Well this time it didn’t work. A couple megs would be uploaded and then the client would ask me if I want to overwrite the (incomplete) file on the server. I tried several times with FileZilla to no avail. Then I tried SmartFTP which is certified for Vista. Same thing. Figuring I couldn’t go wrong with WS-Ftp, I gave that a shot and it too failed.

    Today I tried the upload from my Windows 2003 server using FileZilla, and it worked without a hitch. WTF.  Just to rule out a problem with my internet connection the previous day, I tried again from my Vista desktop and it failed once more.

    Has anyone else seen such behavior?

  • C# operator== overloading

    I recently came to a situation where operator overloading C# (specifically the == operator) would really be beneficial. Since I’ve typically steered away from this technique, for readability and maintainability, I hadn’t had much experience with it.

    My overloaded operator looks something like this:


    static bool operator==(Id<T> a, Id<T> b)
    {
    return a.Value == b.Value;
    }

    That has been working just as planned for a few months now, but today I hit a snag when trying to do a null test against a variable of that class type, like:


    Id<int> x;
    ...
    if (x == null)
    {
    ...
    }

    This causes a nice null reference exception at a.Value because a is null. My first thought was to test for null in the operator== method before I attempt accessing a.Value (or b.Value), like:

    if (a == null)
    {
    return b == null;
    }
    else
    {
    return a.Value == b.Value;
    }

    Thinking I had the problem fixed, I reran; and quickly hit a StackOverFlowException. What the? Ooooh, the if (a == null) was causing that method to be called over and over, recursively until it blew the stack! OK, now how the heck can I test against null without the operator== being called??

    After a moment of slight panic, I realized how to get around it. When doing just if (a == null), the Id class’ static overload is being called. The way out of this is to have the object class’ operator== explicitly called by making a simple change:


    if ((object)a == null)
    {
    return ((object)b == null);
    }
    else
    {
    return a.Value == b.Value;
    }

    And that’s it! I now have an overload that handles null checking.