Autodesk Licensing Error 1200.5.-96

I recently began working for an engineering firm in downtown Portland, and we needed to move the Autodesk FlexLM licensing manager to a different server. While this is normally a straightforward process (Autodesk products will prompt you to enter the new server’s name), AutoCAD MEP 2009 & 2010 and Revit MEP 2010 failed to launch and reported FlexLM error 1200.5.-96:

According to Autodesk’s support website, this error indicates a failure to communicate with the license server, but since we had supposedly changed the licensing server when prompted by AutoCAD, this seemed to be erroneous.

As it turns out, the problem lies in the LICPATH.LIC file present in the programs’ directories. The file had somehow been locked into read-only mode, which was preventing AutoCad and Revit from updating it to point to the new server. Copying the file to the desktop, editing the copy to reflect the server change and overwriting the old file with the new instantly solved the problem. Bear in mind that each program will need to have its individual license file updated.

Generate PHP HMAC Hash Without Hash Extension

The other day, I ran into a problem with one of my web hosts…  The version of PHP installed on the server didn’t have access to the Hash extension and I needed to generate an HMAC hash. Eight hours and many test runs later, I managed to produce a function that generates identical output to PHP5’s built-in hash_hmac function.

function custom_hmac($algo, $data, $key, $raw_output = false)
    $algo = strtolower($algo);
    $pack = 'H'.strlen($algo('test'));
    $size = 64;
    $opad = str_repeat(chr(0x5C), $size);
    $ipad = str_repeat(chr(0x36), $size);

    if (strlen($key) > $size) {
        $key = str_pad(pack($pack, $algo($key)), $size, chr(0x00));
    } else {
        $key = str_pad($key, $size, chr(0x00));

    for ($i = 0; $i < strlen($key) - 1; $i++) {
        $opad[$i] = $opad[$i] ^ $key[$i];
        $ipad[$i] = $ipad[$i] ^ $key[$i];

    $output = $algo($opad.pack($pack, $algo($ipad.$data)));

    return ($raw_output) ? pack($pack, $output) : $output;

I have verified that this code works in both PHP4 and PHP5 on my server, but it may perform differently depending on your version.  Feel free to use it, modify it, etc. however you wish.

BackupExec 10 on Windows Server 2003 SP2

Several months ago, one of the domain controllers at work crashed, causing several nasty problems that I was forced to work out. One of these problems was the loss of our Backup Exec 10 server, and consequently, our automated backups. Handily enough, our tape auto-loader also went kaput in that same week. This meant doing manual backups of our file server to my workstation using the NTBackup utility.

After several months of petitioning the finance department for the necessary funding, I was able to secure a new PowerVault RD1000 from Dell.  With functional backup hardware once again ready, I set about the task of installing Backup Exec 10 on my workstation.  After installing the base software and all the available updates, I deployed the backup agent to our servers.  When all was done, I setup a backup job and queued it for an immediate run.  This is where everything went wrong.

While the server was able to successfully backup our old NT4 inventory server, it threw the following error when attempting to communicate with our new file and inventory servers: The directory or file was not found, or could not be accessed.  After doing some research and banging my head against the monitor, I finally discovered the problem.  Service Pack 2 for Windows Server 2003 breaks compatibility with the Backup Exec 10 agent.  Since there was no way I was going to uninstall the service pack, what was I to do?

Fortunately, Symantec has provided a solution to this harrowing problem in the form of Backup Exec 10.0 rev. 5520.  I can’t say why Symantec chose not to offer this version of the software as an update or service pack, but it fixed the issue, so I can’t complain too much.  Simply download and extract the zip file, reinstall Backup Exec using the extracted files and push the new agent to all of your servers.  Works like a charm and its a real life saver for those of us too cheap to shell out for the latest version of good old BE.

A new theme… And a quick contest!

After several days work, my new theme is online and done enough to be usable! While there are still a few kinks to work out (i.e. finishing all the links on the right hand side), I feel it adds a very unique personality to the site. Let me know what you think in the comments.

Also, the first person to post a comment with the super-secret word I’ve hidden in the right-hand links wins a permanent link to their blog on my links page. Be sure to specify that your comment is a contest entry. Accidentally posting the word in your comment doesn’t count. Also, I have the final say on whether or not I link to your site, regardless of whether you win. I don’t want to be linking to inappropriate content after all.

Apparently I suck at running a blog…

I’m as loathe as the next person to admit I’ve made a mistake, but there you have it: I screwed up. I didn’t add any new posts to the blog when it appeared as if folks weren’t reading it or leaving any comments. Well, today I logged in again to test out a new theme and, lo and behold, a plethora of comments awaited my approval. After checking Google’s hit tracker, and still seeing no traffic, I checked the template and realized I forgot to add Google’s script to the page!

So, it’s time for a fresh beginning. I will now try to post something weekly at a bare minimum and will actually bother to check for pending comments.

Policies are important…

While it is the hope of every company that its employees treat its computer systems with dignity and respect, in reality, users may flaunt established rules or commit malicious acts against the computer network. That being the case, no company should be without an acceptable use policy.

Here is a policy I have used at several of the companies I have worked for and it seems to have worked well for them.  If you simply replace the highlighted yellow text with the name of your company, this template should provide you with a decent starting point in developing your own acceptable use policy.  However, I am not a legal expert and cannot guarantee its enforcability in a court of law. As with all legal documents, you should have it approved by your supervisor and vetted by a lawyer.

WordPress FTW…

I’m going to kick things off by giving some credit where credit is due…  I didn’t know the first thing about making themes for WordPress until I stumbled across this article.

The author walks you through 16 or so lessons on how to manipulate WordPress themes and starts you off by establishing basic concepts and explaining even the most minute details.  I would highly recommend any WordPress beginner to check out the article; you’ll be off and running in a couple of hours.

Kudos to WPDesigner on this one.