This blog entry isn't technically about software development, but every once in a while, we all need a shiny new computer. With all the latest overhyped buzz about the economy and gas prices (I've heard predictions that gas could easily be $10/gallon next summer - there is no "ceiling", but I've never deluded myself into thinking there was), if you are thinking about getting a new computer, it might be time to take that thought a tad more seriously. If gas prices skyrocket, then today's $3,000 PC could be $10,000 tomorrow. Maybe. Maybe not. Just a thought.
At any rate, I'm not wanting to talk about the economy. What I want to talk about is the infamous question, "What computer do I need to buy?" I get asked this question frequently. There are a LOT of choices, so it is no wonder that people get confused and just want some guidance without being made to feel "dumb". Most people buy without thinking and then later regret the purchase.
The first step is to determine your needs. If you develop software, then you need a machine that can crunch through compilations fast (nothing is worse than waiting for a compiler to do its thing). If you play games, then you need a "gaming rig". If you just surf the Internet and word process, then almost any computer will be fine. If you plan on doing multimedia, then you need to look at hardware that will support that...and possibly not even a PC.
The next step is to determine "build vs. buy". That is, do you want to build it yourself or let a company like Dell or HP do it for you? There are some advantages to building it yourself, but, from personal experience, it tends to be cheaper to buy from a major manufacturer and takes a lot less time too. The hardest part with building is getting the base box built properly - the case, power supply, and motherboard don't always work nicely in terms of layout. And then you have to be willing to sit down and sift through the motherboard manual and know what "jumpers" are, know how to seat a CPU, etc. Basically, one big pain (an even bigger pain if the wrong motherboard gets shipped to you). But you do learn how to build out a computer. I highly recommend having a good "geek" friend to help you out when you get stuck if you decide to build instead of buy. If you decide to buy, be sure that the first thing you do is reinstall the OS. Make sure the computer manufacturer sends you a CD/DVD with the OS on it - even if you decide to not reinstall the OS, some geek in your not too distant future will likely recommend an OS reinstall and will ask for said disk. Reinstalling the OS removes all the junk the manufacturer put on the computer, which, BTW, will drastically improve system performance out-of-the-box. The downside is reinstalling the drivers for the hardware can be complicated.
The next thing to do is to determine your budget for the computer. A lot of companies (e.g. Dell) have payment plans. I personally prefer to pay for things up front, all at once - otherwise, you end up paying a lot more for a lot longer. $400 will get you something you can surf the Internet, check e-mail and Word process with. You can do multimedia, programming, or anything else too, but either performance or quality will likely suffer. A $400 computer might not be very specatular, but it'll work just fine for almost any task. $3,000 is about where you start getting into high-end hardware (e.g. gaming systems). $5,000 is going to get you bleeding-edge hardware/software designed for Enterprise-level applications (e.g. servers). You want to buy something that will last about 5 to 10 years and yet meet (perhaps exceed) your needs. So plan your budget for the computer such that you will have paid off the computer long before 5 years is up. Keep in mind that this industry moves so fast that a mere 6 months from now, any computer bought today will likely be considered "outdated". But as long as it continues to meet your needs, then it isn't "outdated" for you.
The next thing to do is determine what OS and software you want to run on the hardware. Microsoft Windows isn't always the answer. And neither are PCs. Apple has iLife. There is no equivalent of iLife for PCs, and even if there were, I wouldn't touch it. The hardware (drivers) and software (DirectShow) interfaces for Windows are too..."flaky"...for lack of a better word to do any serious multimedia work. By multimedia, I mean audio recording, editing, and mixing, video transfers, editing, and publishing, creating video DVDs, transfering/uploading to iPods, YouTube, etc. Still images from digital cameras work just fine under PCs, but when you start fiddling with real multimedia, you need to have system stability and performance. Application crashes (even OS crashes) and lousy performance runs rampant in the multimedia department thanks to the lousy nature of DirectShow - one of the most horribly written pieces of software ever. I'm a big Windows fan, but even I know its limitations. Windows is great on the business application and gaming frontlines. Mac OSX is great on the multimedia front. Linux is great on the server front. Oh sure they can each do some of it all, but those are the areas in which each specific brand is strongest.
Now that you've got the basic idea of what you are looking for, it is time to get to specifics.
If you just need to surf the web, check e-mail, and word process, then any PC (or Mac) will work fine. You can save a lot of money by NOT purchasing Microsoft Office. Open Office is generally "good enough" and is free. Thunderbird is a free e-mail client. And Firefox is a free web browser that tends to be more secure than Internet Explorer (but I personally like IE for surfing, FF for web development, and both are free under Windows).
If you need to interact with various devices such as a digital camera, then you might want a teensy bit more power behind the computer and a card reader. Not really required. A $400 PC will do photos just fine - although, you will probably eventually want to invest in an external USB hard drive if you take a LOT of photos.
If you need to do multimedia, take a serious look at a getting a Mac instead of a PC. If you are familiar with Windows and PCs, Macs are somewhat foreign and do have their own sets of issues but, by far, have a superior multimedia suite (iLife) when compared to the out-of-the-box Windows multimedia support (basically none, Movie Maker is about the limit and even that is lousy).
If you are a student in high school or college and are thinking about a laptop, you might want to take a look at what is called a Tablet PC. A lot of tablets now are "hybrid" laptops with a regular keyboard that can be swiveled out and used. Combining a Tablet PC with Microsoft OneNote creates what I'd consider to be as close to "digital paper" as is possible. Most tablets have built-in microphones that can record the classroom while you take notes. You can then play back (within OneNote) the notes and audio later and they are synchronized. If you hook up a webcam, you can also record a synchronized video of the session. This is a huge plus over a laptop since you draw on the screen, (IIRC) it OCRs the handwriting to make the notes searchable, and you can quickly play back audio at a specific point in the notes to determine why you wrote down something (or, if you have terrible handwriting like me, make out what it is you wrote). Laptops don't cut it in a classroom setting - there are all sorts of charts and graphs to copy off the board, which can only be drawn by hand. The only downsides to a tablet are that they have the tendency to have lower lifespans than regular laptops (typically from dropping them) and they tend to be slightly more expensive.
If you need performance (gaming, writing software, serious data crunching), then you need to start looking at customizations and more expensive gear. This is where this blog entry starts getting interesting.
The major bottlenecks in any computer that determine overall and perceived performance are between the three most critical resources in the computer: CPU, RAM, and hard drive. If you are a gamer or want to buy your first real gaming rig, then you have two more critical resources to consider: GPU and APU.
Let me start with the CPU (Central Processing Unit). Most people think the speed of the CPU defines the speed of the computer. In the past, that used to be true. But today's CPUs tend to sit around idly doing a whole lot of nothing. Not entirely true, but the CPU is almost always the fastest component in the computer, typically waiting on other components to finish doing stuff. When selecting a CPU, you may want to rely on CPU benchmarks to help you decide. cpubenchmark.net tracks CPUs in use and how they stack up against each other. The battle is usually between AMD and Intel - one or the other has the lead. Now we probably all want the latest and greatest, but keep in mind that the high-end CPUs at the top of the high-end chart on cpubenchmark.net are typically multiprocessor (i.e. more than one CPU) and are fairly costly systems as a result (expect to pay around $1,200 per CPU in the #1 position). While a good CPU does have advantages where heavy number crunching is involved, the CPU isn't typically where bottlenecks reside. Additionally, most applications don't take advantage of multiprocessor systems (including video games).
The major performance bottleneck is actually RAM (or, perhaps more accurately, motherboard bus speed). It isn't how much RAM you have (well, anything under 2GB is likely to take a performance hit), it is about how fast the RAM is. CPUs have onboard memory caches that are incredibly fast because requesting data from RAM is many times slower. When selecting RAM, watch for the speed of the RAM. The faster the RAM, the better performance you'll likely see when moving large chunks of data around. Of course, the RAM has to match the motherboard or the motherboard won't recognize the chip and/or do weird things. Also, you need to decide how important ECC RAM is. ECC RAM is self-error correcting RAM. It costs more, is typically slower than non-ECC RAM, but if you need reliability and stability above performance, ECC RAM is the only way to go.
The last major performance bottleneck is the hard drive. The hard drive is actually the slowest component in any computer. The faster that data can be read into RAM off the hard drive, the faster a program will load. Unfortunately, hard drive speeds are relatively the same. However, keep hoping that 64-bit OSes finally take off. Major computer manufacturers are shipping computers that are 64-bit capable and can handle more than 4GB RAM but they install a 32-bit OS and that, in turn, restricts the limit to 4GB RAM. Back in the DOS days, we had a RAM drive device driver that turned a section of RAM into a drive letter. It wasn't widely used for various reasons (mostly because RAM was very limited) but was very fast. It disappeared with the advent of Windows 95. With 64-bit OSes on 64-bit hardware with 64GB+ RAM, it is conceivable that the RAM drive could make a comeback. It wouldn't solve the hard drive bottleneck, but could alleviate it.
Now that I've covered the basic performance bottlenecks, onto the gaming system-specific ones. I love a good video game, but figuring out which video card to buy is complicated. I don't really track the industry too closely and generally have to re-learn it when I go to buy a new video card. The 3-D graphics card industry is littered with confusing acronyms and letters and manufacturers. For this reason, I typically look around for a good comparison chart and hope that someone has one with my current video card and the absolute latest, bleeding-edge video card (used to be a problem - seems someone has stepped up to the plate...more on this in a bit). Another problem with video cards is that you have to match specifications exactly. The standards for video ports are constantly changing and making new acronyms (PCI, AGP ...x, PCI-E ..., etc.). Of course, this usually means that the latest and greatest cards won't work on existing hardware - requiring a whole new PC to play games. Very annoying. And expensive. Anyway, I digress.
Thankfully, there are only two real players in the GPU (Graphics Processing Unit) market: ATI (merged with AMD) and nVidia. I used to be a nVidia fan, but, for the same amount of money, ATI seems to have higher-end hardware that also seems to perform better. That can always change through competition, but I got fed up with nVidia cards giving me consistently lousy results on 3D benchmarks and performing poorly in games despite supposedly being more capable than ATI. I plopped in an ATI card once just to see if it would be different and it performed way better. I don't like ATI's control panel though - too invasive. This is my personal opinion - many people like nVidia.
There are two types of GPUs: Gaming and CAD. Gaming GPUs are the most common and are for cards that will be used in gaming computers. CAD GPUs are geared for specialized CAD applications and tend to be more expensive due to their relative rarity. A gaming GPU can be used for CAD but might not render some things "properly". A CAD GPU can be used for gaming but will have reduced framerates and possibly introduce odd artifacts.
One more thing: You have to be aware that GPU manufacturers don't actually make the video cards themselves. They merely make the GPU. It is up to other manufacturers to make the boards the GPUs go on and then sell them (what card you buy doesn't actually come directly from ATI/nVidia). Some manufacturers are better than others. Some manufacturers overclock. Others don't. Some even underclock. Some cards are better built. Some cards have poor cooling.
Picking a GPU is hard enough. Finding a reliable graphics board manufacturer is harder. You also need to decide how many monitors/displays you will be using. One? Two? Four? That will also affect your decision on which manufacturer to buy from.
Do lots of research before picking a card. It used to be pretty cut-and-dry...whoever could crank out the most texels won. Now there are a zillion factors to consider.
ATI comparison chart
nVidia comparison chart
Compare two cards side-by-side
The first two links allow you to figure out what is the "right" GPU, which, as always, is as clear as mud. As far as I can tell, they (Hardware Secrets) have kept up with every change over many years. I used to have to hunt forever to find a good website to figure out what the latest video cards are. The last link allows you to compare two cards side-by-side and then see prices for the card and whether the manufacturer overclocked/underclocked the card. My personal recommendation is to find cards with comparable prices and see how the GPUs stack up against each other. Expect to spend about $400 for a bleeding-edge card and $250-$300 for a good card that will likely last a few years. Keep in mind though, you can have an awesome video card, but if the CPU or RAM are performing poorly, so will the video card. Also keep in mind that the graphics card market moves faster than anything else in this industry. A new card comes out every couple months. Although, that breakneck pace will hopefully change as the manufacturing die for the GPU gets smaller and heat-dissipation issues increase.
Finally, we reach the APU (Audio Processing Unit). Or lack thereof, as is in many cases. This enters into the obscure world of dedicated CPU vs. letting the main CPU process data. Audio processing is CPU intensive. If you are playing video games, you will want a dedicated audio CPU (APU, or DSP, depending on who you ask) to be sitting on a dedicated audio card. A lot of motherboard manufacturers include what is known as "onboard audio". Anything "onboard" means that the main CPU has to process the data. A dedicated APU is more costly but frees up the main CPU for other tasks. Soundblaster/Creative Labs/whatever-they-are-named-this-week is currently the leader in putting together decent audio cards, but they are getting lazy and complacent and that behavior shows through their lack of concern for their bloated audio drivers and problems people encounter with their cards (lower manufacturing quality). The only reason they are still in business is because of the Soundblaster 16. Basically, the same reason why Borland/Inprise/whatever-their-name-is-this-week is still in business (Turbo C)...customer loyalty.
A word on overclocking. Overclocking is a strange word until you explore its meaning. Every computer has an internal clock. Basically, a timepiece like a watch but much more precise. Overclocking goes over the recommended clock speed. Overclocking is, IMO, a very dangerous practice. Computer systems run hot as they are now, but overclocking pushes the thermal limits of the hardware, introducing failures at higher rates for only slightly modest gains in performance and typically burns out components sooner than their life expectancy. Many companies that overclock include a "liquid cooler" system to counter the overclocking. Liquid cooling may become defacto standard eventually, but for now it typically indicates that the system is overclocked. Play it safe and don't buy an overclocked system.
Most people buy a computer and a monitor at the same time. I've discovered that sometimes that works out, but most of the time, the monitor isn't very good or could have been gotten more cheaply elsewhere. Or, in the case of multiple monitors, it is ideal to buy all monitors at the same time. The reason to do this is so that you have identical colors and brightnesses on all the monitors. Even if you buy the same monitor several months apart, the manufacturer could change the way they make that model that noticeably alters the quality and/or color accuracy. Additionally, as a monitor ages, the backlight/tube fades/dims.
Finally, don't buy accessories from the major computer manufacturers. Or, if you do, make sure you are getting a good deal by shopping around first. Oh they will highlight various items and tell you how great a deal they have on those items, but more than likely you can get them much cheaper elsewhere on the Internet. Both hardware and software accessories. Don't get sucked into thinking they are the only place to buy the item. You can easily save $20 to $250 on most items by looking elsewhere.
Whew! That is a rough overview of how to buy a computer. If you made it this far without your head spinning, then you should be more capable in making a confident purchase. Buying a computer is an expensive endeavor. Treat it like any major purchase - with carefully thought out actions (or inactions - perhaps you'll decide you can't spend money), not being upsold/marketed to. If emotions come into play or you feel pressured, back off from the sale until you've had some time to ponder it. Upsells will easily go way beyond your budget. Be very careful and watch the pricetag closely.