The Perfect Home Network

After struggling with my personal home network for several months I finally have my home network setup perfectly (or as perfect as I’ll make it).


Network Setup

Here is where I ended up with the network devices for my house.

Hardware :

U-Verse Wireless Gateway – Connects voice, video, and data for my U-Verse service.

ZyXEL ZyWALL USG20 – Firewall and responsible for issuing IP addresses.

D-Link DAP-1522 x 2 – Wireless access points.  I have them on opposite ends of the house connected to the ZyXEL ZyWALL USG20 via Cat6.


The U-Verse Wireless Gateway connects to the ZyXEL router which handles all the IP addressing for the network.  The two D-Link wireless access points are then connected via Cat6 and positioned on opposite ends of the house.  Then using the instructions from Scott Hansleman’s post (here), the two wireless access points broadcast on the same SSID with the same credentials allowing seamless wireless connectivity throughout the house.  The D-Link Access points forced me to switch to Access Point mode, which turns off any IP addressing which allowed the ZyXEL to take all that on.

The total cost for this was close to $250, so it isn’t for the faint of heart.  However, since installing this system 8 months ago I haven’t had a single Wi-Fi issue, and very good to excellent signal strength in all corners of my house.

The final step was to create a simple HTML page with links to all my devices admin pages.  I share that to all my machines using SkyDrive, but comes in handy if I need to make any changes.



Wire everywhere you can

I ended up having to run wire to my home office on the first floor to my wired network in the basement.  Having a finished basement didn’t help, but I was use a wire snake and some ingenuity to get Cat6 into the office.  This replaced a problematic wireless bridge that I was using before to connect my office to my network.  The result was network speeds of ~560mbps, which was a huge improvement from my previous ~60mbps.


75 Feet Cat6 Cable x 2 – I ran a Cat6 cable to my TV at the same time as the office and the den share a wall.

NETGEAR GS105 – Gigabit Switch – Simple switch in the office that allows me to connect multiple device with network cables.

Keystone Wall Plate(s) and Connectors – Plates to ensure I don’t just have wires coming out of my walls.  I use male female connectors, but you can just as easily splice your own Cat6 cables and use other connectors.

Tags : ,

Organize Camera Photos and Videos Using PowerShell

I was searching for a quick and easy way to organize the contents of my cameras SD card when I transfer the files off to my computer.  It would be great to have the time to organize all the photos per event (Grandpa’s Birthday, Birth of Child Number 2, etc), but this never works.  I always put off that task and I end up with a monster SD card with an unmanageable amount of photos and videos.  The problem is compounded by the additional directories that the camera uses for its organization.

Well I found a simple PowerShell script that did this online (see here, a blog post from Kim Oppalfens), but there were some problems.

  1. The directories were too granular (one directory for each day of photos).
  2. It only handled photos.
  3. My camera doesn’t embed the date in the jpg the way that this script was expecting, resulting in some null ref errors when running the script.

So I wrote my own which I’ll share with you here, you can also download a text version here.

$PhotosDirectory="d:\Photos & Movies"

Function CopyFiles([System.IO.FileInfo[]]$Files)
    $currentCount = 0
    $percent = 0;

    Write-Host "  0% Complete"
    foreach ($file in $Files)
        if ($currentCount -gt ($Files.Length / 10))
            $percent += 10
            $percentString = $percent.ToString().PadLeft(3, ' ')
            Write-Host "$percentString% Complete"
            $currentCount = 0

        $year = $file.CreationTime.Year.ToString()
        $month = $file.CreationTime.Month.ToString().PadLeft(2, '0')
        $monthName = $file.CreationTime.ToString("MMMM") # <-- Month Name

        $TargetDirectory = "$year\$month - $monthName"
        $TargetPath = "$PhotosDirectory\$TargetDirectory"

        if (!(test-path $targetpath))
            new-item $targetpath -type directory >> log.txt
        xcopy /y $file.fullname "$targetpath" >> log.txt
    Write-Host "100% Complete"

Write-Host "Copying JPG's"
$files = Get-ChildItem -recurse -filter *.jpg
Write-Host "Copying MOV's"
$files = Get-ChildItem -recurse -filter *.mov

Couple key points

  1. Copy contents of above script and past into a new file.  I named mine Photos.ps1 and put in my C:\Users\<user name>\Documents\WindowsPowerShell directory.  The name doesn’t matter, but the extension of ps1 does.
  2. Launch PowerShell.
  3. Insert you SD card, and navigate to the directory where your photos or stored.  I did this by inserting the SD card into my reader, but the usb cord worked as well.
  4. Run your ps1 file by typing the full path and file name.

The result is a well organized directory of your digital photos and videos.