Last week I blegged for help in designing a new machine, and I got almost 50 extremely helpful comments and a handful of private emails. Many thanks to all those who gave advice.

I mentioned that I want browser and JS shell builds to be fast, and that I want the machine to be quiet. There were two other things that I didn’t mention, that affect my choices.

I’m not a hardware tinkerer type. I don’t particularly enjoy setting up machines — I’m a programmer, not a sysadmin 🙂 I like vanilla configurations, so that problems are unlikely, and so that when they do occur there’s a good chance someone else has already had the same problem and found a solution. So that’s a significant factor in my design.

I turn off my machine at night. And I use lots of repository clones (I have 10 copies of inbound present at all times), typically switching between two or three of them in one session. So I stress the disk cache in ways that other people might not.

Here’s my latest configuration. I don’t expect anything other than perhaps minor changes to this, though I’d still love to hear your thoughts.

CPU. The Intel i7-4770. I originally chose the i7-4770K, which is 0.1 GHz faster and is overclockable, but it lacks some of the newer CPU features such as support for virtualization and transactional memory. Since I won’t overclock — as I said, I’m not the tinkerer type — several people suggested the i7-4770 would be better.

Motherboard. ASUS Z87-Plus. I originally chose the ASUS Z87-C, but was advised that a board with an Intel NIC would be better.

Memory. 32 GiB of Kingston 2133 MHz RAM. No change.

Disk. Samsung 840 Pro Series 512 GB. No change. Multiple people said this was overkill — that 256 GB should be enough, or that the cheaper 840 EVO was almost as good. But I’ll stick with it; those disks have a really good reputation, it should last a long time, and I really like the idea of not having to worry about disk space, especially with two OSes installed. And apparently the performance of those drives diminishes once they get about 80% full, so having some excess capacity sounds good.

Graphics card. Multiple people agreed that the Intel integrated graphics was powerful enough, and that the Intel driver situation on Linux is excellent, which is great — I don’t like mucking about with drivers!

Case. The Fractal Design Define R4 (Black) was recommended by two people. It looks fantastic (my wife is in love with it already) and is reputedly very quiet.

Optical drive. A Samsung DVD-RW drive. Unchanged.

Software. Several people suggested using Virtual Box instead of VMWare for my Windows VM. I didn’t know about Virtual Box, so that was a good tip. Someone also suggested I get Windows 7 Professional instead of Home Premium because the latter only supports 16 GiB of RAM. Ugh, typical Microsoft segmented software offerings.

I didn’t mention monitor, keyboard and mouse because I’m happy with my current ones.

This looks like an excellent set-up for a single-CPU, quad-core machine. However, multiple people suggested that I go for more cores, either by choosing 6-core or 8-core server CPUs, or using dual-sockets, or both. I spent a lot of time investigating this option, and I considered several configurations, including a dual-socket machine with two Xeon E5-2630 CPUs (giving 12 cores and 24 threads) or a single-socket machine with an i7-3970X (giving 6 cores and 12 threads) or a Xeon E5-2660 (giving 8 cores and 16 threads). But I have a mélange of concerns: (a) a more complex configuration (esp. dual-socket), (b) lack of integrated graphics, (c) higher power consumption, heat and noise, and (d) probably worse single-threaded performance. These were enough that I have put it into the too-hard basket for now.

Ideally, I’d love to build two or three machines, benchmark them, and give all but one back. Or, it would be nice Intel’s rumoured Haswell-E 8-core consumer machines were available now.

Still, daydreams aside, compared to my current machine, the above machine should give a nice speed bump (maybe 15–20% for CPU-bound operations, and who-knows-how-much for disk-bound operations), should be quieter, and will allow me to do Windows builds much more easily.

Thanks again to everyone who gave such good advice! I promise that once I purchase and set up the new machine, I’ll blog about its performance compared to the old machine, so that any other Mozilla developers who want to get a new machine have some data points.