Saturday, May 16, 2009

The Good Old Days

Just read an entry on Scott Hanselman's blog called 10 Awesome Things I Remember About Computers. The comments on the entry closed May 1, so I thought I'd write my own entry and sort of chain off his. Feel free to leave your own memories!

10 Awesome Things I Remember About Computers (give or take...)

  1. Using my S100 CP/M based computer with CP/M DOS
  2. Using the same computer above, typing my school reports in WordStar (how I miss WordStar)
  3. Typing up BASIC (in that day, I used A-Basic, M-Basic, GW-Basic, and in the '90s, QBasic) game listings
  4. Upgraded to an IBM XT with a 40MB HDD (that was HUGE, and the largest available consumer HDD)
  5. DOS 3.x was out, and sub-directories were new. I didn't know about them/understand them (I was 11!). Anyway, I watched my dad type a command: del *.* and it deleted some files. Pretty cool. I accidentally wrote a file in the wrong spot. I couldn't get it deleted, so I tried this (not understanding directories, they didn't exist in DOS 2.0!): C:\> del *.*. Rebooted, nothing happened. Hmmm... "DAD! My computer won't boot." He said, "What did you do to it?" To which I said, "I don't know, it just wouldn't start." He wasn't too happy. ;) Luckily, it was only my computer, so none of his stuff was on it. Whew!
  6. Playing Tie Fighter on my 486 (this is now about 5 years later, about 1992 I'd say).
  7. Using DriveSpace on Windows95 to compress my 810MB HDD to get 2.4GB space. Boy was that a bad idea!
  8. Buying my first computer from scratch and putting it together myself (1997) for $2400: PII 350MHz w/ ABIT BX6 mobo, 256MB RAM, 12GB HDD (yeah baby!) and a LS-120 FDD (that was a total waste).
  9. One year later, bought another computer for $1100: PII 400MHz w/ 512MB RAM, ABIT BX6 Rev 2 mobo, Acer 40x CD-ROM, Yamaha 24/8/4 CD-RW drive and another 12GB HDD
  10. Windows 2000. Finally, a true 32-bit OS that worked well.
  11. Windows XP—so much better!
  12. One more for good kicks (though this is recent history)—Microsoft releases their second-most horrible OS (after ME), Vista. Can't wait for Windows 7!

Though I have some recent stuff on my list, I've been using computers since I was 8 (so just shy 25 years). I'd like to hear from you, too. What are some of your memories?

Thursday, May 14, 2009

Book Review: Microformats: Empowering Your Markup for Web 2.0

Microformats: giving birth to the semantic web

I just finished reading Microformats: Empowering Your Markup for Web 2.0. I've heard of microformats here and there over the last 3 or 4 years, but until now, I haven't really looked into them. I saw this book for sale on at a price I couldn't resist. It was high about time that I read about what this semantic web thing is all about.

I thought the semantic web was simply about using the appropriate XHTML when creating your web pages and being sure that you were meeting various other standards along the way, such as WCAG. The semantic web is that and much more.

Microformats give web content designers and developers a way to use existing XHTML to markup their content so that it can be easily read by humans but also easily read by machines. This has the advantage that, obviously, humans can read it, but that the content can be aggregated by various web services.

This book is one of the best organized books I have ever read and I highly recommend reading this book for a detailed, but quick introduction to microformats. In fact, microformats are so easy to use, an introduction is all you really need to begin using them. If you need more information, just check out

This review is written using the hReview format as discussed in the book. Since this is my first attempt at using this microformat, if there's anything wrong with it, please leave a comment. In any event, I give this book 5 stars out of 5.

FireFox 3.0.10 and IE8

Time for another, though much shorter, rant.

My Headaches with Firefox 3

I've had it with Firefox. I was late to jump on the Firefox bandwagon. I jumped on around 2.08 or so and upgraded all the way up to 3.0.10 as recently as two weeks ago. I upgrade Firefox as soon as I can, though I admit, I waited a bit to upgrade to Firefox 3; and it seems for good reason. At first, I was very impressed with Firefox 3. It provided better tab scrolling and seemed much more stable than Firefox 2. That is, until I "upgraded" to Firefox 3.0.9. Then everything came to a screeching halt.

You have to understand that I'm a power browser user. Some would say I'm just crazy. But I have so many things going on that I have a ton of tabs open (at current count, about 344) so that I can quickly get back to whatever else I was doing/researching within the past few weeks (ok, months). As Firefox has continued to release updates, its memory footprint continues to grow, rivaling Internet Explorer with it's famed JavaScript memory leak. At first, Firefox was crashing because I actually had 360+ tabs open and during loading all of the tabs, the process size reached 1.5GB, which is apparently the maximum process size on Windows even though each process has 3GB of memory space (go figure?). Ok, so that's my fault. But since then, I've closed unneeded tabs and had gotten as low as 320. My Firefox process size was around 600MB - 700MB. However, I experienced browser crashes 2 or 3 times a day.

Yay, Firefox came out with an update, 3.0.10. So I upgraded to that seeing that they fixed (yet another) memory corruption issue (how many of those things do they have??). I hoped that it would solve my problem. Nope. Firefox routinely continues to crash at least once a day, if not twice. I tried things like turning off Google Desktop Search (which is a huge memory waster anyway and should be uninstalled from every computer on earth because it puts its hooks into every single program that's opened on your computer). But to no avail. I've done some searching on this issue and have found that many are experiencing the same problem (I hear it can be much worse on Linux). This leads me into my next segment.

Enter Internet Explorer 8

OK, so Microsoft copies folks, but so far as I can tell, IE8 was in the works before Google Chrome hit (though, I can't be absolutely sure about this). Whatever the case may be, Chrome and IE8 use the same "memory model". Each browser tab is a separate process. This has advantages, and disadvantages. However, today, the disadvantages are smaller than they used to be.

When I first heard that Chrome used separate processes for tabs, I was not impressed. Sure, you have tab isolation, but at what price? Processes are heavy in terms of memory and creation time. However, what I didn't realize (and I was very surprised I had missed this fact!) was that in Windows 2000, a new type of process was created—called a job process. A job process is a new process, but it is related to some parent process. It's almost like a Unix fork, but not quite. In any event, these processes, while providing isolation, don't have as steep memory requirements or creation time. IE8 makes heavy use of the job process (as I'm sure Chrome does).

So I started playing around with IE8 last week. I must say I'm pretty impressed. It's stable, and if a tab crashes, it will attempt to reopen the tab. With IE8, you don't have to explicitly save your browsing session, just close the browser and all your tabs are remembered. Personally, I don't care for that. In fact, that's one thing I'm going to miss from Firefox, the Session Manager plug-in. I think one could be written for IE8, but I haven't seen one yet and I don't have time to write one. Anyway, IE8 only lets you save the last browsing session (since it's explicitly saved). You can't save multiple browsing sessions to open one up again at some later point. Too bad. That's a real short-sight. Another plus about IE8 is that it renders much better than it ever used to. I still have to put it through its paces though (and check out how much of ACID2 it passes). Overall, I'm very pleased with it and can't wait to ditch Firefox.

An Open Call (and Mind) to Mozilla

If you're going to release patches for a browser, especially a build update (e.g. 3.0.xxxx), you better do thorough regression testing to make sure you don't break the browser. That's what happened between 3.0.8 and 3.0.9. It just completely broke. 3.0.10 is better, but it's still broken. I think Firefox needs to get back to its roots as a browser: a low memory footprint, extensibility, and stability, and frankly, more cool features that just kill the browser market (tabbing was definitely a killer feature). I'm going to keep my eye on Firefox, but for now, I need stability, speed, and something that just plain works.


To the Microsoft haters and open source lovers and the passionate (or even fanatic) people out there: this post is meant as an open honest discussion of my findings in regards to the latest Firefox 3.0.10 browser, and not about the quality of FOSS software, in general. This is particular to Firefox. Also, note that I did not say that I hate Firefox, only that it has become unusable to me. I'm disappointed with it. I hope that the next major (or minor, 3.5, is it?) release will resolve many of the issues I and others have been having. I'm willing to give Firefox another shot, but until I can actually use it to work (without it freezing up every 30 seconds for 10 seconds at a time), I will have to stick with IE8.

Wednesday, May 13, 2009

ATI Catalyst 9.4 Is No Good for Business

Today's post is a bit of a rant. Also, it took me so long to write, that I didn't want to spend much more time formatting it. So, if it looks a bit messy, I'll try to get back and clean it up a bit later. If you've been reading my blog, you know that I'm in the process of a network deployment. Recently, we qualified for a (basically, free) computer form UPS. Unfortunately, all they had to offer were machines with AMD processors and chipsets. If you haven't guessed it by now, I'm an Intel guy. And now, I know why.

The Problem with AMD

Apparently, AMD doesn't want to make it easy for (particularly small) business to install their software. This is evidenced by the fact that they have completely non-standard Windows installers. They probably use InstallShield for some of their software (which, arguably, makes horrible installers, in my opinion, after having looked at just a few InstallShield MSIs with ORCA from Microsoft). However, their Catalyst Display Driver package uses something called Monet, which until last week, I've never heard of before. And let me say that I hope I never hear of it again, as it caused me nothing but trouble this week.

The idea is that I'm using the Microsoft Deployment Toolkit 2008 to deploy my clients. This driver comes with software that I would like to have installed on the machine, so I decided to go ahead and install the whole package (minus a few items that I really don't need). But it turned out to be a real chore. To start, there is the lack of documentation. Here's the help documentation from Setup.exe and InstallManagerApp.exe, which are responsible for the GUI installation:

Figure 1. Setup.exe/InstalManagerApp.exe command-line switches

Well, I'm confused already. But here's what happens. If you use the slash (/) switches, you can get an unattended GUI install. What do I mean? What I mean is, if you use the right combination of switches, you can achieve an unattended install that still shows a GUI. Ok, that's not so bad. Let's step through these switches a bit. By specifying /UNATTENDED_INSTALL, you would think that would be all I have to do to achieve my goal. Well, you would be wrong. Even when using this switch, the installer stops on the very first wizard page to ask what language you want. Why do I need to choose a language if I'm doing an unattended install? (More precisely, if no language is specified on the command line, English ought to be the default and installation should proceed unattended.) So, in order to get around this, we need to pass the /FORCE_HIDE_FIRST_RUN switch, which does just that—it skips the language selection step. So you run the new command and now the wizard appears to stop in its tracks on the last page and just sits there. That's because even during an "unattended" install, the setup program expects you to click the Finish button. Stupid. So we need to pass the /FORCE_CLOSE_WHEN_DONE switch. Just to be extra cautious, I pass the /AUTOACCEPT_ALL switch, which automatically accepts all EULAs (which according to AMD is supposed to be unpublished, hehe). I also pass the /ON_REBOOT_MESSAGE:NO switch to make sure the installer doesn't tell the operating system to reboot, a big no-no when using the Microsoft Deployment Toolkit. So our final command looks like this: setup.exe /UNATTENDED_INSTALL /FORCE_HIDE_FIRST_RUN /FORCE_CLOSE_WHEN_DONE /AUTOACCEPT_ALL /ON_REBOOT_MESSAGE:NO.

Well now there are three problems. In older releases of the Catalyst Display Driver package, HydraVision was installed with everything else and the Windows Vista Experience Index score was also updated so that the Aero user interface would be enabled. This no longer happens in the 9.4 release of the package. It turns out they have a few errors in their new install routine. The lack of installation of HydraVision (a multi-desktop or even desktop spitting application) can be gotten around by replacing /UNATTENDED_INSTALL with /UNATTENDED_INSTALL:"\Packaes\Apps\CCC\HydraVision-Full\ccc-hv-full.msi;<driver_folder>\Packgaes".

Enabling the Aero user interface (in an unattended manner) is also similarly easy. In previous releases, there was an MSI called EnableAero.msi. At first, I was including this in the installation, but I soon realized that all the MSI was doing is running the following command: C:\Windows\System32\WinSat features C:\Windows\System32\WinSAT formal. So, number one, the EnableAero.msi installer is completely unnecessary. Secondly, the way they are running the command is also unnecessary. Instead, there is a command line switch that enables you to only update the graphics and restart the Display Window Manager: C:\Windows\System32\WinSAT dwm.

Now we have achieved the following: an unattended installation (though, still showing a GUI) that installs HydraVision and enables the Aero user interface in Vista. But what if we want a truly silent install? Is this possible? Yes, it is. There are two ways of doing this.

First, there is a file called ATISetup.exe in the Bin{64} folder of the Catalyst Display Driver package. If you run this file without any command line options, you will see the following command line options (there are more, but for brevity, which it's already too late for, I'll omit the unimportant ones):

Performs a silent install
-uninstall [all]
Performs a silent uninstall ([all] uninstalls all hidden packages)
-output screen [detail]
Screen outputs basic information to the console while including detail will output more verbose information. Useful for debugging.
-h #### -v #### -b ## -j ###[ddc]
Sets the horizontal resolution, vertical resolution, color depth (or bits per pixel (a/k/a bits per pel)), and vertical refresh rate. Using DDC for the vertical refresh rate tells the driver to get the information from the monitor via DDC or EDID, if the monitor supports it. Most LCDs in use do, as do most CRTs that are left in use. Also, be aware that the documentation for these switches is incorrect: -b only takes 2 digits, and -j can take 3. They have this reversed on their display of the help options (and thus, you can specify 120Hz refresh rate for your CRT if it supports it).

Here's the kicker: you try to run the following command: ATISetup -install -h 1280 -v 1024 -b 32 -j ddc, and it doesn't work. The install occurs, but again, HydraVision is not installed, and when you reboot, the display defaults to a resolution of 800 x 600 @ 32-bits. Again, the problem with HydraVision can be fixed and the installer used, but not the screen resolution. For me, this is back to square one. Why did I go through all of this? To save you the trouble—and to pick on AMD.

So how do I get the driver to install, with all the companion applications, and have the screen resolution set to the desired size and enable the Aero user interface? It comes down to two lowly batch files (or in Vista world, a .cmd file).

First, we need to write the batch (or command) file that will install the driver and companion applications. Apparently, what really happens when you run the Setup.exe file in the root driver package with the -install switch, it just passes it onto the .\Bin{64}\ATISetup.exe installer. If you use the slash (/) switches, then the GUI installer is used (e.g. the GUI installer is shown, but is unattended if you use the switches I outlined above).

Here's the install batch file (I named it install.cmd):

NOTE: You may freely copy and use the batch file source code contained in Figures 2 and 3 of this blog entry without needing to give attribution. I hope someone may find it useful.

Figure 2. Install.cmd source code.

This will (more or less) silently install the driver and all accompanying software that you chose. (NOTE: I removed the following folders from the \Packages\Apps directory: CatalystRegistration (a registration nag-ware) and Blizzard (an Internet shortcut to download a trial version of the game World of Warcraft.) Once this batch file has been executed, you need to restart the computer. (NOTE: if you are using the Microsoft Deployment Toolkit to deploy your operating system, you must tell MDT that the application requires a reboot and let MDT reboot the computer or you will mess up the automated deployment.)

Once the computer has rebooted, your video resolution will be 800x600 @ 32-bit. Unfortunately, Windows still does not have a way to "script" the video resolution through an API. No Windows Script interface, no WMI, no PowerShell. So we are left to "hacking" the Windows registry. Please note that the batch file below has only been tested on Windows Vista. For any other operating system, verify the keys that need to be set (perhaps the resolution switches only work for Windows XP and below?).

Figure 3. SetVideoRes.cmd source code.

The > nul makes the batch script not output anything to the screen since REG.exe and WinSAT probably use stdout or stderr bypassing the @ECHO OFF command in the batch file. I called this batch file SetVideoRes.cmd. It first uses REG QUERY to determine the GUID of the video card and stores it in a variable. Then it creates several registry entries in the registry pertaining to the display resolution. Finally, it runs the Windows System Assessment Tool to enable the Aero user interface. Once this script has run, the computer needs to be rebooted again so that Windows picks up the new display resolution settings. And finally, there you have it, a completely unattended installation of the Catalyst Display Driver package. Too much work. For Intel, this would have been as easy as calling setup /s /v/qn if it's an InstallShield installer or <driver_installer>.msi /qn /norestart if it were an actual Windows MSI.

I hope this helps someone out there. It took me a whole week, installing the operating system about 25 times to figure this all out. What a pain! I did contact AMD Customer Care, but they basically told me that they provided limited unattended install support and that they only supported unattended installs on Windows Vista for particular ATi products. Poor business practice, in my opinion. Not everyone is a Hewlett-Packard or a Microsoft.

One final note, I just finished a book on microformats on the web. This blog entry is long enough, so suffice it to say, I've tried my hand at a few hCard entries in this post. Not every company mentioned has an hCard entry. I may go back and update this entry later. I mention this only for those who may be looking. I'm going to write more about that in another post.

That's it for now. Sorry it was so long. Take care.


  • 2009-05-14 - Fixed code in SetVideoRes.cmd in figure 3: Added quotes around the registry key because the keyname has a space. Also removed the warning about testing on Vista. I have tested the code and it does work. However, it should go without saying that anything you take off the Internet should be tested in a secure, isolated environment before being put into production. Also fixed my SetVideoRes.cmd batch file to call C:\Windows\System32\WinSAT formal to make sure that the experience score actually gets updated in the System display window.

Saturday, May 9, 2009

It's been a while...

Hello everyone. Well, don't say I didn't give you fair warning about the frequency of posting on this blog.

Anyway, call it bad timing, but I started this blog about 8 weeks before the end of the semester. Four weeks later, of course, all the professors are cramming assignments down our throat trying to get in as much as they can because they realized that the semester is nearly over! To their credit, this semester was extremely compressed, partly due to the way the calendar fell this year and partly due to other reasons which I'm not going to expound upon at this time.

So the last five weeks were really busy and this was my first week back at work in a while as well. In addition, I've been meaning to continue my series of blog posts on the network infrastructure upgrade at work, but issues with VMware have kept me from making any progress on that front as well. I think I have those issues worked out now so that I can document the process.

Coming up...

I don't know how long it's going to take me before I post my next entry (hopefully no longer than a week) nor how long it may be in between posts, but, I hope to keep them coming. Here's what I plan on writing about in the near-term.

Installation of Windows 2003 SBS R2 Premium with SP2

I plan on detailing my implementation of Windows SBS 2003 Premium R2. Why SBS 2003? Well, a couple of reasons:

  • This is my first ever ground-up network infrastructure deployment. This means that it's taking me a lot longer than it would for an experienced network engineer, especially since I'm figuring this stuff out all for myself. However, I have plenty of networking experience and feel confident in my ability. But if you should see anything that I'm doing wrong or feel I should do differently, I would love to hear from you.
  • I started with Windows 2003 SBS R2 and have it installed in a testing environment right now. I can't very well just throw everything away to start over with Windows 2008 SBS, even though I would love to. Luckily, my hardware is 64-bit (Pentium D).
  • I'm writing this blog on a 64-bit Toshiba laptop, but dumb Toshiba only installs 32-bit Vista OSes on their machines (as of late 2008). What gives?? Don't get me wrong, I love this laptop, I just wish I would have had a choice. In addition, the processor in this laptop does not have Intel's VMI, so I can't run a 64-bit guest OS on a 32-bit host. You know how it is, you load up a machine with all your apps (Visual Studio, Office, every other development/networking tool on the planet) and it would take you months to get your machine back to the way it is now if you have to reload (the only way to "upgrade" to a 64-bit OS).
So, I'm stuck with Windows SBS 2003. However, in a later series of posts, I may detail the installation of Windows 2008 SBS when/if I reload. Having said that, at this point, I think I'm going to wait for Windows 7 to come out to upgrade to that. So, then I might as well detail Windows 7 SBS. But that's at least a year out, and by then, I may not be doing anything regarding networking because I'm more of a coder.

Installing/Using Microsoft Deployment Toolkit 2008 (or 2010)

Once I detail my implementation of the core installation of Windows 2003 SBS, I'm going to delve into using the MDT 2008 (formerly BDD 2007) or MDT 2010, if it's out by then, for deploying Microsoft Windows Vista with SP1.

So that's it in a nutshell. That's what you can look forward to over the next few posts.

Wednesday, March 4, 2009

Re-engineering the Network—from the Ground, Up

This post is a continuation of my series of posts related to the network re-engineering project I've undertaken at work. A lot of work has already been done, but there is still a lot that has yet to be done. If you need to get a quality, professional network in place, but don’t want to spend the money (or don’t have the money) to buy the requisite hardware, eBay is a great place to shop. I found much of the hardware that we required at up to 50% off, or more, most of it brand new.

Here’s the hardware that was bought for this project:

  • 3 Dell Dimension 2400 Desktop Mid-Towers (2004)
  • 2 Dell Inspiron 700 Laptops (2004)
  • 2 Custom PC Towers with FoxConn motherboards (Intel 865A chipset) (2004)
  • 1 Dell PowerEdge 860 1U Rack-mount Server (2006)
  • 1 Dell Dimension E520 Desktop Mid-Tower (2007)
  • 1 25U 19in. server rack
  • 1 Dell PowerConnect 5324 1U Rack-mount 24-port Gigabit Managed Ethernet Switch
  • 1 Gruber 48-port CAT 6 Patch Panel
  • 1 3U Rack-mount APC Smart-UPS 3000R
  • 1 Dell 110T PowerVault LTO Backup Tape Drive
  • 1 1U Rack-mount Belkin 8-Port KVM
  • 1 TalkSwitch VoIP PBX Phone System and 12 IP phones of various models
  • 1 Hewlett-Packard AMD-based x64 SFF Desktop (2009)
  • 1 Hewlett-Packard 7650n ScanJet Color Network Scanner w/ ADF

All of the client computers have been upgraded such that the machines contain no less than 1.5GB of RAM (most of the machine’s video cards are so old that they preclude using the Windows Vista Aero user interface anyway, so we won’t need as much memory). The 64-bit machine, however, was upgraded to have 4GB of RAM, as well as the PowerEdge 860 server (since I only have the 32-bit version of Windows SBS 2003).

The software we’ll be implementing is as follows:

  • Microsoft Windows Small Business Server (SBS) 2003 R2 Premium, which includes:
    • Microsoft Windows Server 2003
    • Microsoft Exchange Server 2003
    • Internet Security and Acceleration (ISA) Server 2004
    • Windows SharePoint Services 2.0 (which we'll be upgrading to 3.0 SP1
    • Windows Software Update Services (WSUS) 2.0 (which we'll be ugrading to 3.0)
    • Microsoft SQL Server 2005, Workgroup Edition (we'll be upgrading to Standard Edition, courtesy of Microsoft Volume Licensing)
  • Microsoft Office 2007 Professional Plus
  • Microsoft Windows Vista Business/Enterprise (with SP1)
  • Microsoft Desktop Optimization Pack (MDOP, from which we'll be using:
    • Microsoft SoftGrid Application Virtualization
    • Advanced Group Policy Management (AGPM)
    • Microsoft System Center Desktop Error Monitoring
    • Asset Inventory Service
    • Diagnostics and Recovery Toolset
  • Trend Micro Worry Free Business Security
  • Symantec BackupExec 12.5 (soon to be Acronis, too many problems with Symantec, more on that later)
  • ACT! by Sage 2008
  • UPS WorldShip 2009
  • Possibly Adobe CreativeSuite4
There are probably some items I forgot about, but you get the gist.

Where We’ve Been, Where We Are

At this point, we have laid down a new cable plant consisting of CAT 5e cable. We ran two different sets of wires for each drop location, one for data, one for voice.

This was done for a number of reasons. One, VoIP is still not quite there. I can recall on numerous occasions getting a phone call at work from someone who was (most likely) overseas, trying to peddle some wares. The call was so broken up and choppy that I simply told the caller, "Your call is breaking up. Try calling me back on a real landline and we can talk," at which point, I hung up. I don’t have time to waste constantly telling someone to please repeat themselves when I’m probably not going to be interested to begin with. (Usually it’s people calling trying to get me to outsource our IT—for what? Ten client workstations? Please.) Two, after doing other research, I came to the conclusion that while VoIP has made great strides over the last 4 years, it’s not ready for prime time and I don’t want to trust that it’ll work ok over the same network over which data travels. What if someone is downloading a 600MB CD (which would probably be me)? Will the call be dropped, or broken and chopped up? We can’t afford to have that poor of a level of service for our customers since a majority of our business is still conducted over the phone. So, for all of those reasons, we will have VoIP traffic running over its own network, internally. Once the voice traffic leaves the premises, it’ll be traveling over the POTS.

I’m fortunate that our Clydesdale is still running and functioning. That means that I can mess around with the PowerEdge 860 all I want. I have installed and configured Windows SBS 2003 R2 Premium. Perhaps, in a later post, I’ll go through the configuration process. Right now, this is an "experimental" setup. Basically, because I’m installing and uninstalling software, I plan on reinstalling the server when I’m ready to go to production so it is a clean and error free system. But since I have the process pretty much down, this should only take a few hours.

I had only one desktop computer left which is not in production. I really needed another machine. Here’s the problem: Windows Vista cannot be completely managed from Windows Server 2003. Mostly, this has to do with GP administration and management. Luckily, we qualified for a new desktop computer through UPS's Customer Technology Program. So we acquired a Hewlett-Packard small form factor (SFF) desktop machine sporting an AMD 64-bit processor (dual core). So this is becoming my management workstation, for now, and the remaining client that is left will be the test production client whose configuration will be that of all desktops in the organization (less specific drivers for each of the different machines we'll have in use).

Where We’re Going

My company is small, but that doesn’t mean that it can’t benefit from automation, especially when it comes to IT. So I have set the following goals:

  • An Active Directory-based domain
  • An internal e-mail server (Exchange Server 2003). Our ISP e-mail is showing its inadequacies.
  • Central Management and Administration
    • Group Policy
    • Application Virtualization
  • Implementation of a Secure, Managed Desktop
  • A lightweight helpdesk system (included with SharePoint Services)
  • Implementation of VPN access (if needed) and/or remote access via Terminal Services, mainly for remote administration

I feel these goals will accomplish a few things for me. I won’t always need to be in my office in order to work. This is important since I am currently only working part time while attending Kutztown University. The users can expect a consistent desktop experience. I can expect a consistent desktop experience—this means I know exactly what’s installed on the desktop, what the security topology is, and therefore, I know better how to diagnose and repair problems when they arrive.

Next Steps

I’ve been using the Microsoft Deployment Toolkit (MDT) 2008 to develop the deployment process. It’s been working quite well. Unfortunately, the documentation is geared more toward large corporate users (even though they say even small corporations will find the tool useful). The toolkit is useful, just there’s not much help. And when you first begin to use it, it’s quite overwhelming. However, over the last few weeks, I’ve really learned the ins and outs of this toolkit, some of which I’ll be sharing over the next few posts. So keep checking back for information on using the MDT 2008.

Tuesday, March 3, 2009

The State of My Company's Network Infrastruture

Ok, so I can’t blame my company for the state of their network. We are a very small company with limited resources. But, our network is getting ridiculously old. Let’s give a quick rundown of what this network is like.

  • A Compaq Proliant 5000 series server with:
    • 4 x 200 MHz, 256KB Cache, PentiumPro processors
    • 256MB ECC, Registered, Bufferd SD-RAM
  • CAT 3 cable plant
  • Microsoft Windows® 2000 Professional clients (one is still running Windows 98®!)
  • Microsoft Office 2000/2003
  • Trend Micro OfficeScan, Corporate Edition antivirus software
  • 8-port 10Mbit Hub
  • 4-port LinkSys Cable/DSL Router (one of the old ones)
  • 4-port LinkSys WRT54G Wireless Cable/DSL Router
That about sums it up. So this is a pretty old setup. But hey, it was pieced together from about 1992 until about 1999. We only recently (about two years ago) "upgraded" to Windows 2000 on the desktops. For some reason, Windows XP is not liked. I think it’s because it looks radically different from Windows NT/2000. But no matter the case, it’s a moot point now.

A Bit of Momentum

Well, we bought 5 new machines a few years back. I was trying to automate the installation of the client desktops, but it’s so difficult with Windows 2000 (without having Microsoft® SMS, which is too much for our size company anyway). Since it's nearly impossible to completely automate Windows 2000 (from the installation to client applications) without something like Microsoft® SMS, I didn’t get very far before the older client machines started dying, one by one. Eventually, all but one of the new machines were put into production loaded with Windows 2000 Professional (manually).

Now, as you can imagine, this has caused lots of problems:

  1. Each system’s operating system configuration is slightly different (thankfully, the hardware is all the same)
  2. The machine is locked down with Local GPOs since we do not have a Windows 2000 Server Active Directory domain.
    1. The disadvantage here is that even local administrators have the GPO applied to their account, locking me out of the system (unless I undo the GPO while I work on the machine and then put it back on).
  3. As alluded to above, there is no real central administration and management of the workstations, making my job 10 times harder.
  4. I no longer have enough computers to have a good test network for the new infrastructure being planned (more on this later).

As for our Compaq Proliant server, we call it the Clydesdale. It’s a big old horse that just keeps going and going, even though it’s battered, bruised, and broken. It’s quite a worrisome thing, actually. Recently, we had to invest in some new (well, not new, but procured from eBay) fans since most of the fans on the server are shot. If the server loses power, sometimes it doesn’t start back up because of a missing (read, not working) fan. Next time it goes down, some new fans are going in that sucker. With those spare parts in hand, we’ll be ok until the migration is complete.

So it’s obvious that that server has got to go, and so it will. About three years ago this coming October, we bought a new Dell PowerEdge 860 server.

The Tipping Point

So the last critical client machine died and I replaced it with one of the new boxes with Windows 2000 Professional. No more than two months later, one of the executives says, "I'd like to run the new version of ACT!" Not only on his desktop, but also on the inside sales desktops. I thought, no problem. So I did my research. Turns out, after getting most everyone upgraded to Windows 2000, the latest version of ACT! does not run on Windows 2000. It requires at least Windows XP. And by this time (late 2007), Windows XP was going to be no longer supported by Microsoft® in 2009. This was the tipping point.

Up until this time, software was acquired as needed, paying full retail price (or finding legal copies on eBay or at computer shows). After doing some math, I proposed that now is the time we go all in. I learned that you have to play by their rules, or you end up losing big time.

A Philosophical Break

I prefer Microsoft® products. I don’t love Microsoft®—I’ve had my share of headaches when it comes to their products. But by and large, they work well. However, I don’t dislike Linux. I think it’s a great and viable OS, just not right for our company. I believe in using the right tool for the right job, and evaluate these criteria on a case-by-case basis.

There are studies that show that even with licensing costs, Microsoft® software has a lower TCO than Linux (because of having to find someone with the technical acumen to administrate it, and despite claims to the contrary, at some point in time, it will need administration and management). But more importantly, we have software in use that can only run on Microsoft® platforms that is critical to our business.

Not to belabor the point, but if you have the technical expertise and the system does what you need it to do, who can argue with free software? So I am not against Linux, it’s just not right for us in this instance.

Back to the Story

So after evaluating our options (Linux included), I decided it was best if we entered into a Volume License agreement with Microsoft®. A new project was born. More on that in my next post.

A Little More About Me

If you read my first post, you know that I am currently a student at Kutztown University. I have been fortunate in that my schedule has allowed me to take a full course load while still working two full days a week.

My Professional Life

First, I need to start with the legal stuff. Please read my disclaimer, to which a link can be found at the bottom of this blog in the footer. To summarize for purposes of this post, anything I write here are my own views and opinions and do not reflect the views and opinions of my employer. Again, click the link to read my whole disclaimer. It's sad—the state of this world, that we can't even do anything without having to cover our butts—but I digress.

Now that that’s out of the way, let’s get started. I work for a small manufacturer of temperature sensors used for industrial process control. The company was founded in 1985 and produces thermocouples and Resistor Temperature Devices (RTDs). Perhaps in another post I’ll explain all about thermocouples and RTDs and how they work.

Suffice it to say, the company was started well before the Internet that we know today became popular, even before computer networking became what it is today. Computers were at use since the very beginning. But, throughout the early and mid-1990’s, the computing infrastructure grew and eventually became networked.

In 1994, Microsoft® Windows NT 4.0 was released, and this is the network operating system still in use today. As you might have guessed, my company has no need to be on the bleeding edge of technology. Having said that, this network is quite old and no longer suits our purposes. That’s where I come in.

My Role

Since my company is a small company, I wear many hats, and not all of them have to deal with IT. I’ve served in the following roles at one time or another (sometimes all at the same time) over the last 5 years:

  • Inventory Control
  • Shipping/Receiving
  • Production Manager
  • Purchasing
  • Information Technology

So I’ve been quite busy. These days, however, my focus has been squarely on IT.

I am basically the CTO and/or CIO, but I settle for the title IT Manager. I am responsible for anything that has something to do with computers. That means that I maintain the website (I did not create it, but I maintain it since I don’t have time to redesign it—which it sorely needs.), maintain the network, and write software when it is needed. I am also the in-house desktop publisher. So as you can see, I have a lot on my plate.

Looking Ahead…

So looking ahead, I will be writing about exactly what’s going on with our network infrastructure. I will be making periodic posts on my progress. I won’t only blog about work, however, but until at least June or July, expect a lot of my posts to center around that. Besides, I will have some valuable information to share with others—I promise. So for the sake of trying to keep these posts somewhat short, I’ll be ending this one. The next one will give more information on the network re-engineering effort. Until then, so long.

Monday, March 2, 2009

Biting the Bullet

Why I'm starting a blog

I've finally bitten the bullet. Unlike many people, I don't belong to any social networking sites, and until now, I haven't blogged. I never got into MySpace, or Facebook, or any of the others that are out there simply because I don't have time. By the time I got around to thinking about social networking, it has become quite obvious how dangerous social networking can be: from you yourself posting inappropriate content, to your "friends" doing that for you. Many employers now look for you on social networking sites trying to gain a glimpse of who you really are. No thanks. I've got nothing to hide, but I don't want a reason to have something to hide either. Blogging has been around for quite a few years as well. Blogging could be almost as dangerous with all the comment spam, not to mention flippantly posting something that you might otherwis think better of later. But, comment spam can be controlled by not allowing comments (but then, what's the point of blogging?). As for inadvertantly (or regretfully) posting something? Well,you could delete the entry (as long as its whithin a few hours). But the better advice is to simply think before you post. So with that in mind, I've started tihs blog.

I'm so busy, however, that I never have time just to sit down and write for my own desire, let alone anyone else's reading pleasure, which is another reason I never really started a blog prior to now. Not that I have any more time now than I did before, but if you never make the time, you never will. Having said that, blogging is an important endeavor. It enables me to allow my voice to be heard by anyone who wishes to listen. I hope that even if you don't agree with everything I write, you will at least approach what I write with an open mind. I'm willing to listen to other perspectives as well. And if I'm wrong, please be gracious and let me know, as I love to learn as opposed to stumble in ignorance.

But, more importantly, my blog will act simply as an information repository. In today's world where we are constantly bombarded by information, it is becoming increasingly more difficult to remember all those snippets of interesting things I read or hear about without writing them down somewhere. So this blog is as much (if not more so) for my benefit as it is for anyone else's—to help me remember those things I would otherwise forget. If anyone finds some useful information in what I have to write, that's great! I'm glad I could help.

Why is your blog called Discovering Code?

This blog will not have one central topic or theme. This is a blog about discovery, and then trying to remember those things I have discovered. Not everything I blog about will necessarily be related to programming, though much of it will be, as that is my passion. My interests are wide and varying, however—from software engineering to computer engineering, to new hardware arriving on the scene, as well as topics related to science in general. I'm an avid Popular Science reader. In short, there may be many things of interest here to many different readers.

What can you expect from me?

While I would like to say, "Check back often for my latest entries," I can't guarantee how often I will actually post articles on my blog. So please, do check back, but don't expect something new everyday or even every week. I would like to at least write something here once a month.

Who are you anyway?

That's a very good question, and I'm glad you asked. I am currently a student at Kutztown University, enrolled in the Computer Science Software Engineering program. The goal is to (finally) complete my Bachelor's Degree with a Minor in Mathematics, and then continue on to obtain my Master's Degree. My favorite programming language is C#. I have an interest in extending my knowledge in the arena of ASP.NET. Another interest I have, related to programming, is that of compiler theory and construction as well as computer engineering and operating system design (Kutztown University does not have a computer engineering program). I also have a keen interest in most sciences, especially astrophysics, astronomy, and chemistry.

Anyway, that's a little about me and why I'm starting this blog. Like I said, please check back from time-to-time, hopefully I will have posted something useful, if not interesting at the very least.