Skills Development and IT

A good friend of mine recently wrote a blog on how to get hired.  Most of the blog posting talks about the interview process and his reflections on the experience performing mock interviews with college students studying IT. 

The main point of the article can be summed up with this sentence near the end of the post:  “Want to know what outdoes a Masters degree and a 4.0 GPA?  Pure, raw, f*cking talent.”

Talent is rarely raw and pure.  It is something that is honed through patience and practice.  It’s not just the successes and failures on projects and teams but applying those lessons you learned.

What everyone does have, though, is potential.  Potential is like a lump of clay or a block of marble.  To the average person, it appears to be nothing extraordinary.  But in the hands of a skilled artist, we get amazing works like Michelangelo’s David or the Venus de Milo

When you think of talent in terms of a career, I often think of job skills.  IT is a career path where one can easily keep their skills sharp and develop new skills.

There are a couple of ways that one can easily develop their technical skills, and anyone coming out of college with the intent of having a career in information technology should be doing some of these early in their career.


Reading
One of the easiest ways to expose yourself to new technology or improve your knowledge of existing technology is to read about it.  There are hundreds of books and blogs about every area of information technology.  There is a ton of information that can be gleaned from spending twenty minutes a day reviewing your RSS feeds.

I have 132 blogs in my Google Reader account.  Most are technical blogs.  I know that sounds like a lot, but once you filter through the obvious marketing posts from sites like TechRepublic, there is a lot of good content, and you can usually get through everything by spending 20 minutes per day.

A large chunk of those are also Microsoft blogs.  It seems like every product team at Microsoft has at least one official blog, and unlike many other vendor blogs that I’ve followed, the content usually seems to be geared towards technical readers.  Two good examples are the Exchange Team blog and the Ask the Directory Services Team blog.

Aside from vendor blogs, there is a lot of good community generated content.  I could list off a large number of blogs by other systems administrators that I consider good sources on a variety of topics, but then this would turn into a blog about other good blogs.

Another good source of content are sites like Server Fault and Stack Overflow.  Server Fault and Stack Overflow are a pair of websites that are geared towards IT Pros and programmers where users can turn to for community advice by asking questions about problems, projects, and how to handle different situations.


Certifications
Technology certifications are usually offered by vendors to certify that someone has a level of familiarity with their products.  For an experienced IT professional, it proves that you know something, and it can help round out your knowledge of a particular product.  For someone just entering the workforce, it can give you some hands-on knowledge.

Entry-level certification often involves one of two paths:  self-study or classroom.  I tend to focus more on the self-study, and this is usually the cheaper option for someone who doesn’t have a company paying for a week-long bootcamp.


Hands-on Experience
When I say hands-on experience, I don’t mean the kind of experience you get when someone is paying for your time, or when you are volunteering for an organization.  I mean the kind you get when you experiment on your own time.  In my opinion, this is probably the best way to learn about technology. 

The nice thing about IT is that you can easily get experience on enterprise-grade hardware and software.  Dell offers decent entry-level tower servers for $500-$600.  A Microsoft Technet Plus subscription runs about $150 for the lowest level package, and VMware and other vendors offer free versions of their enterprise software that allow a user to learn the basics of the system even if they are functionally crippled.

And you can’t forget about Linux and the other open-source *nixes and software packages.

It basically comes down to this – if you want to be a database administrator, you should be learning about databases by building them.  If you want to be a Linux administrator, you should be setting up Linux servers.  It pays off when you can go into an interview and explain a complicated problem that you solved on your personal network and what it taught you.

Exchange Restores and PowerShell Scripting Games

In my last post, I posted a script that I use to back up my Exchange 2010 test environment using PowerShell and Windows Server Backup.  But what if I need to do a restore?

Well, the good people over at ExchangeServerPro.com have a good step-by-step walkthrough of how to restore an individual mailbox that covers restoring from WSB, rolling the mailbox forward, and recovering data.

If you’re interested in how a restore would work, check out the article.

PowerShell Scripting Games

Microsoft’s annual scripting games started on Monday.  Unlike previous years, scripting is limited to the Powershell scripting language this year.  A beginner and an advanced scripting challenge is posted each day, and you have seven days to submit a solution to the problem.

You can find the challenges and scripting tips on the Hey! Scripting Guy blog.  The official rules also include a link to the registration page.

If you’re looking to learn about PowerShell or just challenge yourself with a scripting problem, you might want to check this out.

Scripting Exchange 2010 Backups on Windows Server 2008R2 using PowerShell and Windows Backup Service

I’ve struggled with backing up my Exchange 2010 SP1 environment in my home lab since I upgraded over a month ago.  Before I had upgraded, I was using a script that did Volume Shadow Services (VSS) backups.

After upgrading, I wanted to cut my teeth with Windows Server Backup (WBS).  Windows Server Backup is the replacement for the NTBackup program that was included with Windows until Vista, and it uses VSS to take snapshot backups of entire volumes or file systems.

Unlike NTBackup, WBS will not run backup jobs to tape.  You will need to dedicate an entire volume or use a network folder to store your backups.  If you use the GUI, you can only retain one backup set, and a new backup will overwrite the old.

This was an issue for me.  Even though I have Exchange configured to retain deleted items for 14 days and deleted mailboxes for 30 days, I like to keep multiple backups.  It allows me to play with multiple recovery scenarios that I might face in the real world.

And that is where PowerShell comes in.  Server 2008R2 allows users to create a temporary backup policy and pass that policy to the Windows Backup Service.  This will also allow you to change the folder where the backup is saved each time, and you can easily add or remove volumes, LUNs, and databases without having to reconfigure your backup job each time.

I started by working from the script that Michael Smith that I linked to above.  To modify this script to work with WBS, I first had to modify it to work with Exchange 2010.  One of the major differences between Exchange 2007 and Exchange 2010 is that storage groups have been removed in the latter.  Logging and other storage group functions have been rolled into the database, making them self-contained.

The original script used the Get-StorageGroup PowerShell command to get the location of each storage group’s log files.  Since this command is no longer present, I had to add sections of this function to the function that retrieved the location of the database files.

After adding some error handling by using Try/Catch, the section that locates mailbox databases looks like:

Try
{
foreach ($mdb in $colMB)
{
if ($mdb.Recovery)
{
write-host ("Skipping RECOVERY MDB " + $mdb.Name)
continue
}
write-host ($mdb.Name + "`t " + $mdb.Guid)
write-host ("`t" + $mdb.EdbFilePath)
write-host " "

$pathPattern.($mdb.EdbFilePath) = $i

$vol = $mdb.EdbFilePath.ToString().SubString(0, 2)
$volumes.set_item($vol,$i)

#This Section gets the log file information for the backup
$prefix  = $mdb.LogFilePrefix
$logpath = $mdb.LogFolderPath.ToString()

## E00*.log
$pathpattern.(join-path $logpath ($prefix + "*.log")) = $i

$vol = $logpath.SubString(0, 2)
$volumes.set_item($vol,$i)

$i += 1
}
}
Catch
{
Write-Host "There are no Mailbox Databases on this server."
}

I also removed all of the functions related to building and calling the Disk Shadow and RoboCopy commands.  Since we will be using WBS, there is no need to manually trigger a VSS backup.

Once we know where our mailbox and public folder databases and their log files are located, we can start to build our temporary backup job.  The first thing we need to do is create a new backup job called $bpol by using the New-WBPolicy cmdlet.

##Create New Backup Policy for Windows Server Backup
$BPol = New-WBPolicy

Once we have created our backup policy, we add the drives that we want to backup.  We can tell Windows Server Backup which drives we want to back up by using the drives and folder paths that we retrieved from Exchange using the code above.  We use the Get-WBVolume cmdlet to get the disk or volume information and the Add-WBVolume command to add it to the backup job.

##Define volumes to be backed up based on Exchange filepath information
##Retrieved in function GetStores

ForEach($bvol in $volumes.keys)
{
$WBVol = Get-WBVolume –volumepath $bvol
Add-WBVolume –policy $BPol –volume $WBVol
}

The Add-WBVolume doesn’t overwrite previous values, so I can easily add multiple drives to my backup job.

Now that my backup locations have been added, I need to tell WBS that this will be a VSS Full Backup instead of a VSS Copy Backup.  I want to run a full backup because this will commit information in the log files to the database and truncate old logs.  The command to set the backup job to a full backup is:

Set-WBVssBackupOptions -policy $BPol –VssFullBackup

Finally, I need to set my backup target.  This script is designed to back up to a network share.  Since I want to retain multiple backups, it will also create a new folder to store the backup at runtime.  I created a function called AddWBTarget to handle this part of the job.

Function AddWBTarget
{
##Create New Folder for back in $backuplocation using date format
$folder = get-date -uFormat "%Y-%m-%d-%H-%M"
md "$backupLocation\$folder"
$netFolder = "$backupLocation\$folder"

$netTarget = New-WBBackupTarget -NetworkPath "$netfolder"
Add-WBBackupTarget -policy $BPol -Target $netTarget
}

The backup location needs to be a UNC path to a network folder, and you set this when you run the script with the –backuplocation parameter.  The function will also create a new folder and then add this location to the backup job using the Add-WBBackupTarget.

The documentation for the Add-WBBackupTarget states that you need to provide user credentials to backup to a network location.  This does not appear to be the case, and WBS appears to use the credentials of the user running the script to access the backup location.

WBS now has all of the information that it needs to perform a backup, so I will pass the temporary backup job to WBS using the Start-WBBackup with the –policy parameter.

You can run the script manually by running EX2k10WBS.ps1 from your Exchange 2010 server.  You will need to declare your backup location by using the –backuplocation parameter.  Since this script will be performing a backup, you will need to run PowerShell with elevated permissions.

You can also set this script to run as a scheduled task.

You can download the entire script here.

Troubleshooting Low Space Issues on the HTC Desire

One of the recent complaints about the HTC Desire on the Cellcom Facebook page was that the phone was constantly displaying a low space warning.  A number of users have experienced this warning, and for some, it has prevented them from downloading applications from the Android Market.

So how can you troubleshoot this issue and correct it?  The first thought for many people is to push for an official upgrade to Android 2.2.  Android 2.2 allows users to install and/or move supported apps to a memory card.  While this could solve the issue, Cellcom has not released Android 2.2 for the Desire yet, and there is no guarantee that this will actually resolve the issue for all users.

I don’t intend to solve this issue for all readers or users of the Desire with Android 2.1 either.  But I can provide a few troubleshooting steps to help narrow down the issue.

The first step in troubleshooting this issue is to see how much space you have available on the phone.  To do this:

  1. Go into the Settings Menu
  2. Select SD & Phone Storage
  3. Check the amount available under Internal Phone Storage

Once you see how much storage remains, you can look at the list of Applications installed on your phone and the amount of space they are consuming.  You can access this by:

  1. Going into the Settings Menu
  2. Select Applications
  3. Select Manage Applications
  4. Press the menu button and select “Sort By Size.”
    (Note:  This option may not be available while the list loads).

The list will sort from the largest to smallest applications.  Some of the larger applications that you might have that come with the phone include the Contacts Storage, Maps, Internet, and QuickOffice.  Other larger applications that you can install from the Market include CardioTrainer, Evernote, and Google Voice.

If you have a few applications that you downloaded but no longer need or wish to remove, you can uninstall them from this menu by selecting the application and clicking the Uninstall button on the Application Details screen.

However, you might not have many applications installed, this might not alleviate the low storage space messages, and/or you might have a Contacts Storage that is extremely large.  If any of these are true, then you might need to check your synchronization settings.

You check your Synchronization settings by:

  1. Going into the Settings Menu
  2. Select Accounts and Sync

You will need to look under the Manage Accounts section of the Accounts and Sync screen.  This section displays all accounts that you have set up to sync with another data source, such as your Google Account, Weather, Twitter, and Exchange ActiveSync.  Review all your accounts to see what data you have syncing with your phone.  If there is anything you don’t want to sync, you can disable (or in some cases remove) the account.

There is one application in particular that can be troublesome:  Facebook for HTC Sense.  You can find additional details on what this program does here.  Why is Facebook for HTC Sense a problem?  Well, if it is configured, it will push your entire Facebook Friends list, including a photo for each contact, into your contacts list (People).  With enough friends, this can eat up a large amount of internal storage on the phone.

If Facebook for HTC Sense is configured, you will need to remove the account.  Disabling it from syncing Facebook Friends with your contacts will not remove the contacts it has downloaded, it will just hide them from view.  Removing the account will delete any information it has downloaded, and this could free up internal storage.  I reclaimed about 20 MB of storage by doing this on my Desire.

If this still doesn’t resolve your issue, or you didn’t have Facebook for HTC Sense configured, you might need to perform a factory reset or take your phone in for additional troubleshooting.

If you have a Desire and are experiencing this issue, did these steps help you resolve it?  Is there something else you did to solve your low space issues?

On Why the Wisconsin Union Busting Bill is Not A Law…Yet…

I didn’t intend to use my blog to comment on a political situation.  While I don’t mind discussing politics, I prefer to talk about politics without everybody being able to see my posts (for those of you who are reading this after seeing it on my Facebook feed and going “what the hell,” my Facebook privacy settings are set up so that everything I post is restricted to a sub-section of my friends list).

One further note to any readers – I am not a lawyer, and I don’t play one on TV.  Everything expressed below is an opinion and has no actual legal bearing.  It is based on my reading of the relevant documents which I attempt to link to.

There has been a lot of discussion over the past month and a half about Scott Walker’s “budget repair bill.”  I won’t editorialize on the content of that bill here, nor will I give a full history of the bill except where necessary as most of those events are well known.
This particular part of the story starts on March 11th.  After finding a way around the quorum issue in the State Senate and getting the bill passed, Governor Scott Walker signed the “Budget Repair Bill” into law.  This, however, did not cause the Act to go into effect.  Wisconsin has a public notice clause in it’s Constitution that specifies that a law cannot go into effect until it is “published.”  Secretary of State Doug La Follette stated that he would wait until March 25th to publish the law in order to allow legal challenges to be presented in court.
Shortly after that, the District Attorney of Dane County filed suit alleging that Wisconsin’s Open Meetings Laws were violated in the process of this bill becoming law.  Wisconsin has a statute that allows the District Attorney of the County where the violation occurred to file suit, and if successful, the actions taken during that meeting would be voided.  On March 18th, Judge Sumi of Dane County issued a temporary restraining order baring Secretary of State Doug La Follette from publishing the law and baring further action in implementing the law until the case can be heard.  Text of the decision can be read here.
On March 25th, Senate Majority Leader Scott Fitzgerald (R-Juneau) asked the Legislative Reference Bureau (LRB), a non-partisan agency that serves the Wisconsin Legislature, to publish the law in accordance with Statute 35.095(3)a which requires the LRB to publish Acts within 10 days.  After the LRB had published the law, Senator Fitzgerald issued a statement that it was now officially a law, and other Republican lawmakers including the Governor and Attorney General also issued statements to that effect.
But is it?  The answer, based on my reading of Wisconsin statutes and other relevant legal documents, is no.
There appears to be two statutes that govern how an Act of the Legislature goes into effect after it is signed into law by the Governor and are the most applicable in this case.  Those statutes are:
Statute 35.095(3)A and B read as follows:

(3) PUBLICATION.
(a)  The legislative reference bureau shall publish every act and every portion of an act which is enacted by the legislature over the governor’s partial veto within 10 working days after its date of enactment.
(b)  The secretary of state shall designate a date of publication for each act and every portion of an act which is enacted by the legislature over the governor’s partial veto.  The date of publication may not be more than 10 working days after the date of enactment.

Statute 991.11 reads as follows:

991.11 Effective date of acts.
Every act and every portion of an act enacted by the legislature over the governor’s partial veto which does not expressly prescribe the time when it takes effect shall take effect on the day after its date of publication as designated under s. 35.095 (3) (b). 

So while the LRB has published the law in accordance with 35.095(3)(a), it hasn’t actually taken effect.  Judge Sumi’s restraining order prevents the Secretary of State from setting a publication date in 35.095(3)(b). Since the act does not include a date that it takes effect, Statute 991.11 applies and the act is officially in limbo.
The act did have a date of publication at one point, the Secretary of State’s office has rescinded it in compliance with Judge Sumi’s order.  The official text of the act does have a date of publication of March 25, 2011 in accordance with 35.095(3)(b), but the footnotes also note that this is not the official date as the Secretary of State’s office is barred from officially publishing the Act and that the LRB’s publication was performed under 35.095(3)(a).
In plain English, that means that while the LRB published a copy of the Act, it hasn’t taken effect as law because the Secretary of State is barred from officially assigning it a publication date, and the LRB doesn’t have the legal authority to publish it into law.
There are two other statutes that direct how the LRB and the Secretary of State’s office as to coordinate in preparing, publishing, and providing public notice of the Act or fill in other details of the process, but aren’t directly relevant to the issue.
Finally, to make matters more confusing, Article IV, Section 17, Subsection 2 of the Wisconsin Constitution states:

“No law shall be enacted except by bill.  No law shall be in force until published.”

The Constitution doesn’t define what “publication” entails.  However the annotations in the document point to Milwaukee Journal Sentinel v. Department of Administration (2009) that does discuss the publication requirement, and all of the statutes listed above cover this in some fashion as well with 14.38(10)C being the most direct application of publishing an Act of the Legislature.  I won’t touch on that further here as the publicity surrounding the this law has, in effect, generated sufficient notice nor is it relevant to the issue of whether this Act is in effect.

Interesting Exchange 2010 SP1 Install Error

Over the weekend, I decided to upgrade my Exchange 2007 environment to Exchange 2010.  The upgrade itself went smoothly, but I ran across an error when when trying to install Service Pack 1 and Update Rollup 2.

After you extract the Service Pack 1 files to your hard drive, there is an updates folder that allows you to add in Microsoft Installer patches, and the update rollup comes as an MSP file.  So I placed the update rollup into the updates folder so it would be installed with the Service Pack.  That led to an error where Setup exited with an error halfway through.

The error from the error log file was:
[02/05/2011 22:47:12.0567] [1] Installing MSI package ‘C:\Users\admin\Desktop\SP1\exchangeserver.msi’.
[02/05/2011 22:47:12.0583] [1] Patch file ‘C:\Users\admin\Desktop\SP1\Updates\Exchange2010-KB2425179-x64-en.msp’ was found in the patch directory.
[02/05/2011 22:47:12.0724] [1] Found a valid order for the available patches.
[02/05/2011 22:47:12.0724] [1] Patch ‘C:\Users\admin\Desktop\SP1\Updates\Exchange2010-KB2425179-x64-en.msp’ has order ‘0’. The status code returned was ‘0’.
[02/05/2011 22:47:12.0724] [1] Patch ‘C:\Users\admin\Desktop\SP1\Updates\Exchange2010-KB2425179-x64-en.msp’ is valid for the current .msi package. The patch order is ‘0’.
[02/05/2011 22:47:12.0724] [1] The patch attribute will be set to ‘C:\Users\admin\Desktop\SP1\Updates\Exchange2010-KB2425179-x64-en.msp;’ for the .msi package.
[02/05/2011 22:47:12.0740] [1] Installing a new product. Package: C:\Users\admin\Desktop\SP1\exchangeserver.msi. Property values: PATCH=”C:\Users\admin\Desktop\SP1\Updates\Exchange2010-KB2425179-x64-en.msp;” DISABLEERRORREPORTING=1 PRODUCTLANGUAGELCID=1033 DEFAULTLANGUAGENAME=ENU DEFAULTLANGUAGELCID=1033 INSTALLCOMMENT=”Installed language for this product: English (United States)” REBOOT=ReallySuppress TARGETDIR=”C:\Program Files\Microsoft\Exchange Server\V14″ ADDLOCAL=Bridgehead,ClientAccess,Mailbox,AdminTools,AdminToolsNonGateway
[02/05/2011 22:48:34.0354] [1] [ERROR] Unexpected Error
[02/05/2011 22:48:34.0354] [1] [ERROR] Installing product C:\Users\admin\Desktop\SP1\exchangeserver.msi failed. Fatal error during installation. Error code is 1603.
[02/05/2011 22:48:34.0354] [1] [ERROR] Fatal error during installation
[02/05/2011 22:48:34.0479] [1] Ending processing install-msipackage
[02/05/2011 22:49:45.0389] [0] End of Setup
This left my Exchange setup in an unusable state.  Not only were all the Exchange services disabled, but this error occurred after the Service Pack 1 installer removed all the Exchange 2010 binaries from my system.
Rebooting the server and trying to reinstall Service Pack 1 forced me to try out the RecoverServer command option that is included with the Exchange 2010 installer (it works very well).  Googling for the error turns up a Microsoft Support KB that applies to cases where the Powershell Execution policy is set via Group Policy.  That didn’t apply to my system as I don’t use Group Policy for that.
I placed my Powershell Execution Policy settings into bypass and tried again, with the same results.  Unlike my previous attempt, though, I didn’t reboot my server.  At this point, I decided that I really didn’t need Update Rollup 2.  I just wanted to install it to be at the latest patch level, so I removed it from the updates folder and reran the Service Pack 1 installer.
I thought the installer would fail, and I would have to do a Server Recovery again.  But it didn’t, and the Service Pack installed successfully, even though it had previously removed all my Exchange binary files.
Interesting things learned:
1.  Do Not Try to Slipstream Update Rollups Into A Service Pack Install
2.  Exchange 2010 Service Pack installers do not have a rollback feature that will return the server to a state it was in before installation
3.  If the Service Pack install fails after it removes the Exchange binaries, do not reboot your system.  Correct the error that is causing the installer to error out and restart the installation.  It will start over from the beginning and complete the install.

First Impressions of the HTC Desire on Cellcom

I picked up my first Android phone on Saturday when Cellcom, a regional carrier in Northeast Wisconsin, launched the HTC Desire.  The Desire replaces my Blackberry Curve 8330.

It’s hard to give a fair comparison between a two year old Blackberry and a modern Android device, so I will try to avoid making direct comparisons. Even making a hardware comparison wouldn’t be fair as the Curve only has 96 MB of memory and a 312 MHz processor to the Desire’s 384 MB of RAM and 1 GHz processor.  As you can see, the chips that go into phones have come a long way.

The first thing you’ll notice about the Desire is how small it is.  HTC managed to put a lot of horsepower into a device that is less than a half-inch thick.  The form factor and thickness remind me a lot of the iPod Touch and the iPhone.  On measurements alone, it is just a few hundredths of an inch bigger than the iPhone 4.

Despite being a small phone, it feels like it was built very sturdy.

The Screen

The Desire has a 3.7 inch SLCD touchscreen running at 480×800.  The screen is crystal clear and displays colors well, and I have no problems reading text on the screen.

Positives after four days of use:
1.  This is the best mobile web browsing device I have ever used.  I can load the non-mobile versions of a website with this phone.
2.  The on-screen keyboard is delightful to use in landscape mode.  Portrait mode is awkward with my big hands, but almost every app supports changing it’s screen orientation when rotating the phone.  
3.  The Desire uses the HTC Sense interface.  This interface is very easy to customize by adding apps, widgets and shortcuts on the 7 home screens.  Moving between the screens takes a flick of a finger, so your Facebook, Twitter, and weather are easily accessed from the main screen.
4.  Exchange ActiveSync Support.  The one drawback of having a Blackberry is that I could not set it to sync with my home server without installing a program on my server and having a BES data plan.  The Desire, like all Android devices, supports Over-the-Air syncing with Microsoft Exchange servers natively.
5.  Compared to the slow and buggy Blackberry App World, the Android Marketplace is fast and very easy to use.

Negatives:
1.  Battery life doesn’t seem to be that great for moderate use.  I can drain the battery with marginal use in an 8 hour work day.  This may be my fault as I wasn’t able to fully charge the device the day I bought it.
2. I can only rotate the phone one direction to put it into landscape mode.  This can be a problem for me as I am left handed, and my pinkie finger ends up hitting the volume button when I’m typing.  Being able to rotate the phone the opposite direction would solve this issue by putting the volume button on top of the phone.
3.  The Desire lacks Blackberry-like sound profiles.  I do not have a central location where I can change my phone to different sound settings based on time-of-day or other factors such as being in a meeting.  There are, however, applications that try to correct this.

Despite the few shortcomings that I have found, this is a very enjoyable phone to use.  I would recommend it to any Cellcom customers looking for a smartphone.

It’s About Time – Blog Roundup…

Blackberry Releases Desktop 6 Software

Blackberry has finally released a new version of their Blackberry Desktop Software.  This program is used for syncing the Blackberry device with your PC or Laptop.  It’s about time they got around to this as the previous version of Blackberry Desktop didn’t work with Office 2010.

Dell 21in MultiTouch Monitor

Dell has announced a 21.5 inch multi-touch HD monitor for $319 on dell.com.  I would love to have one of these in my future home office.  I wonder how touch would change the Real-Time-Strategy game experience.

Looking for CCNA Study Resources

One of my long-time personal goals has been to complete my CCNA.  I took the first half of the exam in May of 2009.  I’m about halfway through the book for the 2nd half of the exam, and that puts me knee-deep in IP Routing and routing protocols.
Getting hands-on experience with the switching section (includes VLANs and Trunking) isn’t too difficult as I have a Cisco 2950 sitting in my basement as part of my home network.  It’s the routing part that I worry about as I would like to have a little more hands-on experience as the exam includes questions where you troubleshoot simulated networks using actual device commands.

I found a tool that emulates router IOS images, provided that I can acquire them.  However, most of the labs I have seen seem to cover CCNP or CCIE topics like MPLS and BGP.

Does anyone know of any resources that I can use for studying?

Today’s Blog Roundup – (Another) Free Trip to VMWorld

Matt over at Standalone Sysadmin is reporting that Gestalt IT is sponsoring a contest to win a free trip to VMworld in San Franscisco.

Unlike most normal contests, you need to describe how you’re going to use the trip to benefit the community.

This is very similar to a contest that Jason from boche.net ran about two months ago.

I’m half-tempted to enter the contest.  Live-blogging from VMWorld would be a great experience.