Sunday, March 25, 2007



This blog is moving. Please update your links:

Thursday, March 08, 2007


New job

I have a new job! Starting Monday, 12 March, I will be a Senior Consultant for Microsoft Consulting Services, Public Sector Team, in the Washington, DC, area. It is an obviously fantastic opportunity that I could not pass up and am extremely excited about!

There were no problems with my previous employer, Caveo Network Solutions; in fact I was very happily employed there, but the contract I was on was up, nothing else surfaced, and the job at Microsoft came up. Very simple math.

So I hope to keep blogging, but there might be a brief hiatus during the transition. Or at the very least I might just write non-technical posts about life at Microsoft. Stay tuned!

Wednesday, February 21, 2007



A little behind schedule but I passed the Windows Server 2003 exam last night with a 942. Only 45 questions, many of which were full simulations, which was cool. Overall I thought it was pretty easy and straight-forward, although am anticipating they'll only get harder from here.

I'm also surprised I did so well because I haven't had as much time to study as I would have liked. Some other things are in the works which are consuming lots of time and stress, but more on that soon.

Now onto 70-291: Implementing, Managing, and Maintaining a Microsoft Windows Server 2003 Network Infrastructure

Thursday, February 15, 2007


Reason #87 to hate Java

Incidently, this is also reason #46 to hate Oracle.

When you install the Citrix Management Console (CMC) for PS4 it also installs the Java Runtime Environment (JRE) 1.4.2_06. It's a requirement for the console. Citrix Support doesn't provide any specific guidance (that I can find) on upgrading the JRE to a newer version. Several posts in the support forums and on Brian Madden's site suggest that it's doable, but might cause some issues (e.g., having to reinstall the CMC).

As we're all now very well aware (or should be!) Daylight Savings Time starts early this year and the JRE is one of the affected products. Sun's guidance is to upgrade or apply a patch which only works on certain versions, of which 1.4.2_06 is one. Fantastic.

In this environment the Citrix servers support a single LOB application that requires connectivity to an Oracle database, thus the Oracle runtime client is installed, something like v9.1.

I recently tried to apply the Sun tzupdater patch to one of the Citrix servers and it failed. So I ran java -version, to find that 1.4.2_06 was not the registered version, but 1.3.1_01. Wa-huh? As it turns out, Oracle requires a JRE during installation so buried in the Oracle program directory is this older version of the JRE which is not compatible with the TZUpdater. Argh!

Oracle Frustration: when installing the Oracle client tools why does it require this older JRE to be installed? (I checked - it's a dependency during installation that cannot be unchecked.) Why not just check for and use an existing version? Also, why doesn't it register itself or the JRE with the OS like every other application? Checking Add/Remove Programs - JRE 1.4.2_06 is there, but nothing about Oracle or the older JRE.

Java Frustration: isn't Java supposed to unite the industry in harmony or something? Allow developers to write code once and then run it anywhere regardless of platform? So then why does it make things MORE complicated? Why all of these minor versions and interdependencies? What a mess! And don't even get me started about Java performance....

Anyway, here's how I fixed this unholy mess:
  1. Java Control Panel, Advanced tab, explicitly set JRE to 1.4.2_06 instead of plug-in default (I don't know if this is necessary, but I felt better about forcing it to that version)
  2. Run pathman /rs "C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin" to remove the old version from the path (1.4.2_06 doesn't list itself in the path). NOTE: pathman is part of the 2003 Resource Kit.
  3. Logoff and back on. Running java -version now shows the correct 1.4.2_06, and running tzupdater works ok.

Thursday, February 08, 2007


Folder ACL Dump

First of all, I've been on a bit of a command-line kick recently. In other words, I'd rather take a few minutes to write a quick CMD (aka BAT) script than VBS. I'm having fun discovering the power of the Windows command line.

So today I needed to dump to file NTFS permissions for all folders on a large drive. (When trying just a simple cacls /t /c *.* > cacls.txt the command was failing on one file deep in the folder structure.) So I'm going to assume that the files inherit the permissions of the parent folder and just dump the folder ACLs (this is only a precaution for a hardware change this weekend).

So I wanted to try and dump the ACLs for all folders by using the command line. I tried a few options, did some research, and eventually came up with the following single-line command:

D:\>FOR /R %A IN (.) DO cacls "%A" >> cacls.txt

FOR /R recursively loops through the directory tree, so it actually causes the following sort of command to be repeatedly run:

D:\>cacls D:\directory1\. >> cacls.txt
D:\>cacls D:\directory1\directory1\. >> cacls.txt
D:\>cacls D:\directory1\directory2\. >> cacls.txt


Which then yields the following sort of output in cacls.txt:

D:\Directory1 BUILTIN\Administrators:(OI)(NP)F
DOMAIN\Domain Users:(OI)(CI)C

D:\Directory1\Directory1 BUILTIN\Administrators:(OI)(CI)F

D:\Directory1\Directory2 BUILTIN\Administrators:(OI)(CI)F

There's probably an easier way to do this (come on, Patrick, I know you want to comment!), but it was quick enough for me to come up with this and it produced the output I wanted.

Tuesday, February 06, 2007


Server Reboot Monitor Script

I find I'm always going through the same routine anytime I restart a server: continuous ping until it comes up and then wait for RDP to be available so that I can connect back in. So this script just puts all of that together - pings until the server goes offline, pings until the server comes back online, and then checks for RDP to be available again. That's all it does - nothing else, nothing fancy.

Just running it will show you the usage (rebootwatch server_name)


REM Server Restart Watch script
REM Aaron Czechowski, Caveo Network Solutions, February 2007


IF !%1==! GOTO Syntax

ECHO Waiting for %1 to shutdown...
ping %1 -n 1 > NUL 2>&1
IF %errorlevel% EQU 0 GOTO ShutdownLoop
ECHO %1 is not responding.

ECHO Waiting for %1 to restart...
ping %1 -n 1 > NUL 2>&1
IF %errorlevel% EQU 1 GOTO RestartLoop
ECHO %1 is responding.

ECHO Waiting for RDP to come alive...
portqry -n %1 -e 3389 > NUL 2>&1
IF %errorlevel% EQU 1 GOTO RDPLoop
ECHO %1 is listening on TCP 3389

ECHO %1 should now be ready to access again.

ECHO Usage: RebootWatch server_name

Sunday, February 04, 2007


Quickly Tile Windows

I've seen this as an option for a taskbar group but never knew you could select multiple windows. The number of times I've wasted time tiling two non-similar windows (e.g., Notepad and Explorer) when I could have just done this little hack.

CTRL-select multiple windows, right-click and select Cascade, Tile Horizontally or Tile Vertically.


Courtesy of LifeHacker.

This page is powered by Blogger. Isn't yours?