Building a Computer the Google Way

Jeff,

I’m totally with you on all your arguments, and the Antec P180 is awesome. I just got one last month, and my box is cool and silent.

++Alan

I’ve been sorta half curious: since the industry has been trending towards less energy use as of late, I wonder how difficult it would be to take older form-factor boards and start dumping multi-core CPUs and solid state external memory into them to give them longer shelf-life… You know, maybe take an old Socket A mobo, dump in dual 1.8 Ghz processors and throw on a gig or two of Flash-based RAM. Sure, a bit of a performance hit, but for like $300 you could upgrade an old rig and keep it flying for another couple of years.

But that’s probably crazy talk.

The major difference between the Core 2 Duo and the new Xeons in the Mac Pro is the memory and the memory controller.

The FB-DIMMs cost more because they are considerably faster, and are on each pair of sockets are on their own bus, so you get a large performance boost from using as many of the sockets as you can. Almost none of the Core 2 motherboards support an address space larger than 2^32, so you’re limited to 3GB of RAM. The Mac Pro will support 32 GB of RAM if you go hog-wild with the $600 (for now) sticks of RAM.

And 10.5 transparently supports 4-architecture (ppc, ppc970, x86, amd64) binaries and gives them each all the address space and registers they can handle.

We, and I’m speaking for the entire world now, we want an application to run on our off-the-shelf Dell with a slow processor, little memory, and teeny disk. Put yourself on a machine like that and learn to program the way most of us compute. You’ll be doing us all a favor and learn a little, too.

I’ve seen this argument from others as well, often from IT managers responsible for buying machines for an entire organization. As a developer, I have an obvious bias against this advice for a couple of reasons:

First, the typical user has to run our application alongside things like Outlook, Excel, a web browser, and so on. The developer, however, has to run the application alongside those same things… plus the development environment, debugging tools, a version control client, etc. It’s not uncommon for a developer in the midst of a coding streak to have a dozen or more applications open.

Second, a good portion of our development time is spent compiling/building the software itself. A smaller machine with less power will be several times slower than a fast machine in doing that… convert that time spent waiting on a machine into salary dollars and most business managers will happily buy the beefy hardware.

So while it IS important that applications be tested on the types of hardware that they’ll eventually run on (from the low-end on up), that’s what testing environments and QA labs are for.

Just my $.02…

Dell computers work real good, providing you use them for a paperweight. Expect non-standard software, nonstandard video cards, and worst of all, you have to find drivers for all that crap. Some people might install a new hard drive, or vista into a Dell, but I never would.

I built my current computer out of the cheapest stuff I could find on newegg.com (including going for a much slower processor than I could have got), and it’s been great, cost about $600 before I replaced my old CRT with an LCD. The only thing I’ll do differently next time is really go for the quietest machine I can (see http://www.silentpcreview.com for lots of info; Jeff’s posted on quiet PCs before too).

wow!!! too many wires though!:slight_smile:

About 667Mhz memory – Jeff i remember that you choosed that too, not so long time ago.
http://www.codinghorror.com/blog/archives/000697.html
Personaly i think that 667 CL1 or CL2 is better than 800Mhz CL5.

This is why programmers don’t get it. Jeff says: "We aren’t typical users. We’re programmers. The x86 commodity PC is the essential, ultimate tool of our craft."
What you need is to do your coding on a Dell, or some other off-the-shelf computer. We can all make an application run on a “big bang” or a “little bang”. That’s easy.
We, and I’m speaking for the entire world now, we want an application to run on our off-the-shelf Dell with a slow processor, little memory, and teeny disk.
Put yourself on a machine like that and learn to program the way most of us compute. You’ll be doing us all a favor and learn a little, too.

Enjoyable post feedback, as usual!

I have to disagree on the “bang for the buck” equation though. As a number of people have pointed out, don’t forget to add labor in the “buck” part of the equation. Your DIY box won’t look so competitive anymore. I suspect that, if you compare the true total cost, you can never beat any PC maker (unless you value your labor as zero dollar!). That’s just how mass production works.

The biggest benefit of DIY is the maximum degree of fine tuning. You get a PC exactly the way you want it. Another benefit is intangible, but by no means small: you gain hands-on knowledge about hardware, plus personal satisfaction.

Google operates at the opposite extreme to individual DIY enthusiasts. Making their own boxes make perfect financial sense for them. But I don’t think you can apply their reasoning to our end of the spectrum.

For non-DIY folks, I think it’s much better to buy the best machine that you want, and put the expense in your client’s bill! :slight_smile:
Your clients would want you to spend time on software development anyway, not hardware.

Cheers,

Instead of all RAID in the computer I have switched to an external RAID device.
I went with a synology 406 and it is nice, got 4 drives in it and now have around 1.25 Terrabyte at RAID 5.
It is hooked up to my router so my laptop and desktop have quick access, it is always on(it has a low power mode) and is quite enough that I have in the living room with no problems.
Configuration wise I have multiple shared drive, some that I backup to another partition. I also use it to store the backup of my computers.

You could go DIY but unless you already have the case and the RAID card it is not that much different. However the non-DYI has the benifit in that more limited so you don’t have to worry about every security patch, it is smaller, and better yet it just works.

Isn’t it odd to ding Dell for using 667 memory, and then say “Not that it matters very much to bottom-line performance” later?

Tim: Slight problem there; development environments can need more horsepower than the target product. For instance, I work for a company that makes a point-of-sale system that needs to run on IAstoundingly Crappy/i hardware (by modern standards); 1ghz pentium-2 clone class CPUs, maybe 512M of ram. (It’ll actually run on any plausible PC, but there are dedicated terminals with those specs we Imust/i support for business reasons.)

If I tried to run Visual Studio on that, I’d Inever be able to get anything done/i…

(Your overall point is an excellent one, however - it’s just that while we should all Itest/i our software to see how it Ihandles/i, on lower-end machines, it’s not likely to be a good idea to use them as a development system.)

I agree with Jeff. I’ve been building my own home dev boxes for years. Its the only way I can get decent hardware on a budget. I pass on the older boxes to my family as I build a new one.

I was surprised as heck when I first found out that Google was one of the largest server providers in the world (3rd or 4th?) – they just don’t sell any of them externally.

Getting them to use one of your chips in their servers would be a huge market people don’t think of.

Every computer geek have a feminine lining:

“I see your point and would agree completely, were i not completely in love with the Mac Pro ;)”

I went this route in the past, and I think you’re expressing a false economy. There is a significant cost to buying and discarding garbage commodity parts in trying to build this optimal system. It makes sense if you’re a business like google who is building a farm-- where you can spend that time and money wading thru the junk that doesn’t work at all, or is poor quality-- and then replicate your final configuration many times over.

But if you’re an engineer, you should build a computer for yourself once, or maybe one to be a mail server— but your development machine needs to be a high quality, reliable box that you can count on. Not one that will send you to the fly-by-nite-pc-parts-place the night before you want to deliver your code because your increased compilation in recent days has pushed the mb over its thermal limite, or whatever.

this is why the Mac Pro is, by far, the least expensive and most reliable choice of the four you presented. You may be able to make your custom build machine as reliable-- but in my experience ,commodity hardware does not last-- and the people who build their own do not realize this because inside of 12 months they have replaced the part with something else… Buying a machine that is cheaper to begin with and then using it twice or three times as long is the better deal.

I reached this conclusion in the 1990s, and once again I’m working for a startup with a guy who is the server builder… and watching him go thru DOA parts and hassles makes me convinced that while it may make sense for servers, it does not for engineers.

Better to spend the time you would be researching motherboards learning erlang or otherwise getting your code more concurrent.

Love the Google approach - they’re an inspiration to me - I do all the metal bashing too so I can optimally place the DIY components to minimize the heat load as well as temp gradients. I made the first about 12 months ago - I get major horsepower from a 1U form factor and just stack 'em up in my data centre. Yes I have my own data centre.
M

Google plans to mass-produce and sell servers… Do you think those will be the same sort of “homemade” servers or the same sorta servers Dell would sell? Exactly, the second one…

Who still codes on a desktop? I haven’t seen a desktop coder in quite awhile… I code at work, home, coffee shops, airplanes, in the car. I’ve got my dell dual core d620 with 3 gigs of RAM and it’s fine for running 2 Java IDEs simulaneously + SQL Server + MySql + our big fat portal server + our very distributed apps.

And more cores DO matter. THere is a hell of a lot more to consider than things like compilation time. Your database will use the extra cores. Each app you multitask with will take advantage of your cores and have less impact on the other apps running. Sounds like you simply work on simple desktop apps w/ no db or something?

I’m a (web) designer and love to build my own DIY systems, so this DIY stuff isn’t just for the programmers and engineers. This is part of the reason why I’ve not switched to a Mac (which I have, naturally, been tempted by).

I would have to completely disagree with Lysander’s comments. I’ve had far more things go wrong with pre-built machines (Dells, mainly, at my place of work) than with my DIY machines. My Mac using friends also have an increasingly high failure rate (but that’s with the laptops; I’ve not heard of anything going wrong with their desktops). The key point with DIY builds is that you know what’s going into it and can control it. That not only makes for a more reliable system, but there’s definitely a more satisfying sense of ownership of the machine. The bottom line for me is that I enjoy computers, so naturally I enjoy building them too.

But I tell you what, this discussion Zen and the Art of Motorcycle Maintenance to mind (http://en.wikipedia.org/wiki/Zen_and_the_art_of_motorcycle_maintenance).