Scott's Column
Budget Gaming Computer, Visual Studio .NET, SQL Server, Virtual PC

March 1, 2005
By Scott Lewis

As promised last month I will show you the budget gaming system I came up with back in January. I also got around to installing all the new tools I need to advance my computer programming skills.

Budget Gaming Computer

Last month I mentioned I might be building a computer for a friend. He wants a gaming system, but his current computer is so old he doesn't even know what it is. I don't think someone that is hobbling along on a really old computer needs to spend $3000-5000 for a killer gaming system. He wants his computer to last a really long time. I am trying to convince him that it is better to buy multiple computers over time rather than trying to buy one great computer that will last forever. If you are a serious gamer, which I think is more of a "dream" with my friend, you are better off buying (or building) a system that it easy to upgrade with a relatively low initial cost. By "relatively low" I mean for a gaming system. A gaming machine has higher requirements than a computer for surfing the web and e-mail. The biggest issue for a serious gaming machine is a really good video card.

The video card is the bottle neck in most games. If your frame rate is too slow (the action is not smooth enough) then you probably need a better video card. What I am going to show you is a quick plan for a computer I set down for my friend. This IS NOT the computer we will build. I just wanted to give him an idea where he should spend his money. We may go with more or less items in the final draft, but this is a good plan for a really nice computer at an almost reasonable price... including the monitor.

Here are the components:

Intel Celeron 2.8GHz                114.99
Intel D865PERL Mainboard             88.09
Kingston 512 MB PC3200 2@79.99      159.98
Antec Sonata Case                   119.00
Maxtor 160 GB hard drive, SATA      105.15
Sony 16X Double Layer DVD±RW        112.99
Giga-Byte GeForce 6800              290.99
Creative Inspire 5.1 5200 speakers   61.41
Logitech Cordless Desktop LX700      78.02 
ViewSonic E90B 19", CRT Monitor     194.99
----------------------------------  ------
Sub-Total                         $1325.61

Notice that I picked a Celeron for the CPU. Most gamers would balk at this, but here me out. You gamers know that the most important component is the video card. I found a GeForce 6800 for under $300. If we want we certainly can go with a more powerful version of the 6800, but this should be good enough for my friend. It has been my experience that most systems that come with Celeron processors also have "low end" parts for video, memory and such. I went with fast (as fast as the motherboard/CPU will allow) memory from a great company. Mixed with the 6800 video card I will bet this setup will blow away most of what you could get from Dell for over $2,000.

In fact, that is a pet peeve of mine. Anytime you see an article comparing home built to "store bought" computers they try to find computers that are an extremely close match. If the computers are technically so close then of course their price and performance will be close... usually swaying toward the home built computer. But, if you are in the mid range arena you have a unique opportunity to skimp in areas that normal people don't... mainly the CPU. If I put a $300 CPU in this rig paired with a $100 video card you will have a much slower gaming machine. When you build it yourself you should be looking at the level of performance you get for the price... without trying to compare to a machine with similar (or the same) parts.

160 GB may be small for some, but my friend has absolutely no intensions of using this computer for video editing. 160 GB is plenty for game installations, pictures and MP3 files. And we even have a dual layer DVD burner so he can backup that hard drive to 8.5 GB discs.

My friend is waiting on our annual bonus (which we are getting this year) to build this system. He has some special requirements that are not in the components above. I expect to be going over this with him in early March to see if/when he wants to step up to the plate and build something.

Visual Studio .NET 2003

All of you that read my column for the fun stuff, like the gaming rig above, can probably leave. The rest of this column will be covering some seriously geeky stuff.

I am a programmer by trade. For the last 3-1/2 years I have been writing (and maintaining) client/server applications written in Visual Basic 6 with an Oracle database running on the server. Before that I spent 7 years with a company building an Executive Information System as a client server application, and migrating that to a Web application on the company's intranet. Although there was a little web development time there, the reporting system I built was nothing compared to a full blow web site built on VS .NET. I have some serious learning to do.

I am not learning this stuff just for fun. My company is in the early stages of building a migration plan that will take us off of a mainframe system. I am assuming (and hoping) that I will be doing some of that work. The decision on what database will support this migration has not been made, but I expect it will be a really big UNIX box (possibly from IBM) running Oracle. But we are thinking seriously of doing some kind of clustered server thing with SQL Server. Like I said, this is not decided. What has been decided is that the front end to the call center will be a thin client application using Internet Explorer. That means web development. I may not have to be as concerned about security and performance as I would with an application on the Internet, but I can't completely avoid those topics just because it will be all in-house. Suffice it to say, it will not be the same as the work I have been doing to date.

My boss got all the "non" mainframe programmers Universal subscriptions to MSDN, with allotments that allow us to install the software at home (the allotments are like licenses). The mainframe programmers will receive individual copies/allotments of Visual Studio .NET 2003.

I downloaded the ISO images the day my subscription became active. This is a six CD install. One disc has the "pre-requisites," two discs for Visual Studio and then three discs for the documentation... which I will surely need.

SQL Server

I also downloaded SQL Server and installed that on my server. Now, for those of you that think you need a ton of hardware to run this stuff, think again. My "server" is a 450 MHz Celeron computer with 384 MB of memory and 180 GB of drive space (spread across three partitions over two physical hard drives). Granted, this will not support a lot of users, but it is ideal for me to building test applications as home.

If I get stupid I may open a port on my firewall and try to access an application I build from the "outside." I don't think I need to get stupid yet. The combination of having three computers in my house (not counting the server I have a desktop and my wife and I each have a laptop) should be enough for testing.

Virtual PC

If using my three computers doesn't do a good enough job simulating the kind of environment I want, I also installed Virtual PC. This program will create the ultimate "sandbox" to play in. You build a completely isolated environment to experiment in. With Virtual PC you start out by creating a "virtual machine." You give this VM a memory limit and hard drive space. The hard drive space can be fixed, such as 2 GB and no more, or you can give it dynamic disc storage where Virtual PC will manage its disc space as needed.

I wanted to get Windows 98 running in a virtual machine first. I like Windows 98 for testing. It is light enough to be fast (which is important because Virtual PC is slow) and it is good enough for a modern platform. Unfortunately none of my Windows 98 discs are "bootable." When you run the virtual machine for the first time it does not have an operating system. You can "capture" the CD Drive of the computer in the VM and then reboot the VM to boot from the CD. This works very, very well if your operating system disc is on a bootable CD-ROM. Windows 98 is not. I even downloaded the latest Windows 98 Second Edition CD from Microsoft and it was not bootable. I had to go to my desktop computer, create the VM for Win 98 and capture the floppy drive. I put my bootable floppy in, which has support for a CD-ROM drive. This allowed me to run FDisk to initialize the virtual disc, and then I formatted the virtual disc. I copied boot files from the floppy (sys c:) so it was bootable. Finally I copied the Win98 folder from the CD to the virtual hard drive.

I know that was a lot, but all I had to do next was reboot the virtual machine and run the Win 98 setup. It took a while... a long while... to install the operating system. Virtual PC is very slow. But some of that is my fault. My desktop computer only has 256 MB of memory, and 32 of that is dedicated to the on-board video. So I really only have 224 MB of memory. When I give 128 of that to the Win 98 Virtual machine my computer starts to crawl. I am going to be saving for a memory upgrade. I would like to get 1 GB of memory, and hopefully I can add that to the memory I have. I will let you know in the future.

When all was said and done Virtual PC works extremely well. I was impressed. I was also able to copy the file Virtual PC created from my desktop to my laptop. This saved the trouble of figuring out how I would get Win 98 running on the laptop without a floppy to boot from, and it saved me the tortuously long time it would take to install Win 98 through Virtual PC a second time.

I created Windows XP Professional virtual machines an each machine as well. My desktop has Windows XP professional, so this was like building a clean box in a box. However, my laptop has Win XP Home, which Virtual PC keeps reminding me is not supported. Virtual PC wants to be installed on a host computer running Win 2K or XP Professional. So far I have not had any issues with Virtual PC running on XP Home.

Of course I had to do the unthinkable... in Microsoft's eye... and install Linux inside a Virtual PC virtual machine. This works. Unfortunately it is too slow to be useful. I am still playing around with it, but I don't think I will do it for any length of time. I like this idea better than partitioning the crap out of my hard drive and multi-booting. Although the virtual machines take up disc space, I can more easily delete a virtual machine to recover that disc space than to remove all the multi-booting junk when I am done testing. Yes, this is far slower than multi-booting, but since I am just playing around with the option I would rather do it this way. Plus I can have many more versions of Linux ready to go than I can fit on a hard drive with massive multi-booting.

So far I have installed Xandros Linux. The desktop constantly flashes like it is refreshing the icons every second. It is disturbing. However, it is running and I can at least look at it. I was disappointed that it defaulted to the ad supported version of Opera for its browser instead of FireFox or Mozilla. But this is one reason why I am doing this experiment. I won't rate and OS for performance this way, but I can explore its features to see if it justifies the partition/multi-booting stage.

I will try installing more versions of Linux as I can. The one thing I can't test this way is the ability for a Linux distribution (distro) to detect and use my wireless network. Since Virtual PC will be passing a valid network connect to the virtual machine, the OS in that VM will just see it and use it. Rats. The most important thing I want to test is installing new software. Xandros gives me the perfect opportunity to test installing FireFox. How hard will it be. This is important, because if it is not easy then Linux has no chance in the desktop market. I'll keep you posted as I learn more.

One of the coolest features of Virtual PC is that when you want to "close down" a virtual machine you can do one of two things. 1) You can "power down" that VM. The next time you run it it will boot up just like a regular computer... except slower. 2) You can use the "save state" option which leaves the virtual machine in a suspended mode. It will no longer be using memory, but the next time you run it it is already booted up and ready to use. The is a huge time saver... especially if I am just testing a piece of software or a web application real quick.

Since Virtual PC creates a couple of files in a folder on my computer for each virtual machine, what's to stop me from putting these files/folders on my server... in a shared directory. Well, I tried it and it works. I was able to successfully move the files VPC uses to a shared directory. I had to delete the virtual machines in VPC then create new ones pointing them to the existing files (that I moved to the network). It worked perfectly. Now I get to save disc space on my desktop which has only a 20 GB drive. Cool!

It seems logical to me that if all the information about a virtual machine, including its "state" is stored in the files VPC creates then I can copy those files to a backup in case I hose a VM. Then I just restore the VM from a backup rather than creating a new VM and the long, arduous task of loading the OS again.

Windows XP Pro

Well, as it turns out when I actually tried to build a web project in Visual Studio .NET it told me that I did not have IIS. And guess what, IIS is not part of Win XP Home. So I had to upgrade my laptop to Win XP Pro. So much fro getting around that fro Virtual PC. When I went to a conference on .NET the people there had the latest Beta of Visual Studio .NET 2005. One thing that I noticed was that VS 2005 includes some kind of web server. I assume this will let it run on XP Home where IIS does not exist. I will have to wait a while before I tell about that. I don't plan on downloading or installing VS .NET 2005 until it is out of Beta.


Well, with a true client server and web server development environment all setup I need to get into the "code." I am trying to think of an application that would be useful to me at home, so I have the incentive to get it working. If you can think of something let me know.

I'll keep you posted.