Understanding The Hardware

scads of features I never end up using (two ethernet ports, anyone?)

I sometimes use 2 ethernet ports…living in a dorm I only had 1 ethernet connection for me to get on the network and didn’t have a router, so I just plugged my ps3 into my extra port to get internet through there.

My only issue is now getting this same setup to work in ubuntu…I have yet to be successful so my online gaming has cut down to almost nothing since I have to boot into windows to play.

Great post Jeff. I built a similar configuration a few months back (uses older chipset and processor though). But based most of my needs on building a Macintosh equivalent. This was a great compromise because my wife likes the easyness of all things Apple, but I prefer not paying the Apple tax (especially here in France). And it was a great way to get her involved in building a computer.

I have given up the upgrade path because by the time you need it you end up having to upgrade more than you intended. When I’m ready to upgrade my Q6600 I’m sure I’ll also need to switch out the motherboard, upgrade to DDR3, and change the video card. Leaving just the case, drives, KVM, and power supply. Now I just buy those core pieces based on the budget and wants.

My development box had an 867 MHz CPU and 768 MB of RAM, then my second computer for testing is a 333 MHz Bondi Blue iMac with 96 MB of RAM.

I’ll never understand why so many developers feel like they need the rock star treatment to deliver the best products out there. I mean, can you honestly tell me why you want 8 GB if none of your customers are ever going to have that much and you’ll never come close to needing that much? The only thing that’s going to do is make sure your product only works well on your computer.

My advice: use the hardware that just barely allows you to code and compile at an efficient pace (as in, builds take less than 10 seconds to produce), then test on a much slower computer with very large data sets. By forcing yourself to use your product on underpowered hardware, you’ll guarantee that your product will absolutely SCREAM on the computers your customers will use.

Nobody seems to have commented on the fact that to utilise anything over 3G of memory, you’re going to need a 64-bit OS, and even then, with most motherboards, you’re likely to have a big unusable hole from 3G-4G.

To the uninitiated, Dan is the man when it comes to all things hardware.
http://www.dansdata.com/askdan00015.htm

It’s a shame Apple programmers can’t do this

Man, I’m getting a little sick of the little Apple digs Jeff. I’ve been a Mac user for a few years now, prior to that a long time windows user.

I use Macs because as a web developer it is unarguably the most productive environment for my work.
OS X isn’t the best environment for everything; nor is windows.

I read blogs like this and a few other Windows dev blogs because I like knowing what’s going on in all areas.

Religion; be it hardware or software; just bores me.
How about keeping the balance eh?

Indeed, there is a very big difference between two, four, eight or 64 cores for a server; and there is not so much of a difference between a one, two or three GHz core. This is one of the things that you will not learn by building your own system (as others have said, putting LEGO bricks together will not teach you about plastic processing).

The comparison between SQL-queries on your own home computer and your webserver really don’t mean anything because you’re using different metrics and different benchmarks for the both of them.

If you really want to learn something about the internals of a computer system, please pick up a book on the matter and learn something about CPI, clock frequence, Amdahls Law, throughput and performance and all those other things that concern computer speed and their inner workings. I recommend Computer Architecture: A Quantitative Approach by Hennessy and Patterson. Even in chapter one you will learn more about the topics at hand than in a day of building your rig.

Finding out how to plug RAM-modules into their sockets or finding the best deal for a processor will not make you understand the parts better!

Jeff,

Your recent posts have been making me think. This post made me write a whole post on my blog. Please check and comment at your convenience:

http://srmrt.blogspot.com/2008/07/programmers-should-understand-hardware.html

Regards
Mahesh
http://srmrt.blogspot.com

a couple of things.

  1. you dont need two video cards for triple monitor support. you can use one dual monitor card + onboard video or one video card that supports 4 monitors.
  2. i dont see how building your own pc gets you a greater understanding from a programming perspective.
    i have built dozens of pcs, from way back in the days when we had to choose interrupts and memory addresses via dip switch i also happen to know some assembly and rarely do the two meet.

I saw at least two comments about insisting that developers should have normal machines, or a second slow machine for testing. The intent of these comments is spot-on, however the approach is old-fashioned. With a powerful enough computer, you can simulate any combination of environments using VMs. For example, you can throttle back the RAM to just 512MB and test the performance of your application to see how it behaves. This is the modern approach to solving the same class of problem they mention. Granted, if you’re doing low-level benchmarking tests, then you will need the actual hardware.

Programmers shouldn’t have normal machines… testers should have normal machines. Programmers should have the most blinding fast PC’s they can. My PC at work is quick, but I’d like it to be faster still… I spent too much time staring at a blank screen while my apps compile.

Of course building a PC from a list like this doesn’t get you a better understanding of how your software runs, although it’s fun and gets you a great PC.

But doing the research does! Making informed decisions about RAM size, #cores vs clock, 10k vs 7k2, make me a smarter programmer, I think.

Until a few months ago, I wouldn’t have known what to do with 8GB, but since I’ve been using virtual pc’s it’s pretty clear…

Building your own PC teaches you as much about the underlying hardware as plugging in a set of headphones teaches you about acoustical engineering.
I built myself a half dozen PCs before I learned (from other sources) what the CPU was actually doing when executing code.
Writing assembly will teach you more about the hardware than snapping a few components onto a motherboard and stuffing the whole thing into a case will.

Maybe this is a minority opinion, but I find understanding the hardware to be instructive for programmers.

Says the guy who can’t see the point of learning C! :wink:

I’m a bit burnt out on hardware these days!

I used to have a sideline writing about hardware for www.HardwareCentral.com and also for www.TheInquirer.net - my evenings were spent tweaking my computer and keeping on the cutting edge.

These days I’ve got a laptop at home, which is nice quiet and reliable :slight_smile:

I still enjoyed hearing about the latest graphics card or processor developments, but I’m not the walking hardware wizard I used to be.

Perhaps I’m just getting too old, but the outside world looks more appealing than sitting in front of a computer a little more each day.

dude you must really understand hardware, especially pipelines

I don’t think Radeon HD 4850 can support CUDA Applications. IMO better to choose a nVidia 8 or 9 series GPU. nVidia is far ahead of ATI in GPGPU programming.

@Nick++: Display: avoid the TN crapola. Nothing less than Dell 2408WFP.

Really? I agree TN displays are useless, and the 2408WFP does sound good on paper, but it is getting absolutely slated on the Dell forums.
Loads of complaints about input lag, sharpness halos, uneven backlighting, pink colours.

Read the problems described in this (extremely long) thread:
http://www.dellcommunity.com/supportforums/board/message?board.id=dim_monitorthread.id=90203view=by_date_ascendingpage=1

The Rev A01 of this monitor is going to hit the Dell stockroom soon.
I’m waiting to see if they have fixed any of the issues before I jump.

What about SSD for HD performance? What pains me about PC gaming is the absurd amount of load times. I remember the days when it took less than 30s to start playing a game. Now Mass Effect (PC version) takes about 3 to 5 minutes to load plus a bunch of in-game load. Would a fast hard drive (or a SSD) mitigate reasonably that time?

I first used a video card that supported 4 monitors around 15 years ago in the early 90’s. STB (Simply The Best) had one (it was physically enormous) and they supplied drivers for Windows 3.11. The thing that impressed me the most was this space game where you were flying through a tunnel and your craft was stationary on the right hand side of the right hand screen. Your attackers would enter from the left of the left screen and fire at you but with 4 monitors it would take forever for them and their missiles to reach you. I was unbeatable if I didn’t let anybody else use the single STB card that the company had bought.

i would prefer a quad-core if you develop for the web or develop serversoftware or use databases intensively.
All these tasks are implicit made for parallel usage with many clients.

If you, for example, let xenu spider your website-project afer a refactoring, a quadcore machine is nearly twice as fast as a dualcore.
Same goes for databases or other client-server software with concurrent usage.