I recently bought a desktop computer. As a first-time PC build I can highly recommend the process.

I wasn't much of a hardware guy before starting this process and I ended up learning quite a lot from picking out the parts and assembling them myself. It's also quite a bit cheaper than buying an equivalent pre-built PC and much better (performance-wise) than buying a similarly priced laptop.

And of course, there's something about knowing that you picked out this particular machine and assembled it with your own hands. Of all the machines I've worked with this one is the closest to my heart.

Goals

I wanted a decent home machine that can last me a while. While I need some computational power, I don't need too beefy of a machine. For heavy-duty processing there's always cloud providers who provide on-demand options. So the primary purpose was high quality components with an eye towards budget constraints of about $1000.

Components

I picked out my components from pcpartpicker.com. There are several posts bout selecting machines on the internet albeit with a bit stronger focus on deep learning. There's also resources more focused on gaming. Generally I tried to interpolate between these guides and my own considerations.

CPU

The comparable chips I looked at were the i7-8600 and Ryzen 2600. I decided to go with AMD over Intel due to the number of cores. Given that a large amount of my workload is embarassing parallel this seemed like a better idea than faster clock speeds. Out of the box R doesn't do that great of a job of using all of the cores, however there are packages available which work quite well.

The 2600 is also cheaper and comes with a stock CPU fan which reduces the price even further.

Motherboard

Honestly most of this was due to not wanting to deal with potentially needing a BIOS update to support my AMD CPU which implied a X470 board. After that it's just finding the cheapest board that was available. I started out with a Gigabyte X470 Aorus Ultra Gaming and ended up with an ASUS Prime X470-Pro (more about that later).

Of all the parts I'm least clear about the important features of motherboards. I'm not interested in overclocking or supporting multiple GPUs so that seems to rule out most of the advantages of a nicer motherboard.

Graphics Card

The biggest splurge in the build. GPUs are really used for two things: deep learning and gaming (assuming crypto has moved on to ASICS). I felt the GTX 1060 6 Gb was a decent compromise between performance and budget concerns. Like I mentioned before, I'm not interested in having a beast of a GPU on my local machine if it would be cheaper for me to just run jobs on the cloud. But for small jobs a local GPU would be nice; especially for learning purposes.

Memory

I picked up 2x8 GB DDR4-2400 RAM. I've got two more slots to upgrade in case I need more RAM. I had been maxing out the 8Gb on my previous machine so this will enable some analyses that I was previously having to do contortions with to fit into RAM.

Storage

I have two memory drives: one 250Gb SSD and one 2Tb HDD. The SSD is for the OS (100Gb) and perhaps working data sets. The HDD is for storage. I don't really use that much storage on my current machines so 2TB should cover me for the reasonable future.

Power Supply and Case

The unsexy bits of the machine. But I do have to mention my NZXT S340 case which was surprisingly nice to work with.

Mouse and Keyboard

I wanted to try out a mechanical keyboard so I got a GK-Force K83 Red. It's actually quite satisfying to type on so I finally get the mechanical keyboard hype (well at least the $40 hype, maybe not the $150 hype).

Mouse is nothing special from Amazon. I have keyboard controls for almost everything including web browsing so it won't necessarily get much use.

Monitor

I had originally just used an old Dell from an ancient desktop. It's fine for my purposes but the square aspect ratio started to grate upon me as it made split-screen awkward. So I picked up an Acer R240HY 23.8in monitor.

I'm tempted by a two monitor setup but unfortunately my home desk has a top which doesn't allow much clearance for monitors. As it was my current monitor just barely fits.

The Assembly

So the assembly was, um, harrowing. It started off fine: I watched a tutorial on YouTube and everything seemed straightforward. At its core it's just like assembling Legos and there's labels and instructions for everything. I got a much better understanding of the components and setup of a computer from this process.

But apparently it wasn't so straightforward. After all the tedious cable-plugging and screw tightening it was time to plug it in and bask in the glory of my new machine. I turned on the power and…. nothing happened.

Cue panic. I immediately went to the internet to try and figure out what was wrong. Is everything snugly plugged in? Yes. Do you have the right cables going to the right place? Yes. Did you remove the plastic thing on the CPU socket? What plastic thing!?!?! So I remove the CPU fan and CPU to see that my motherboard didn't come with a plastic thing. Except now the thermal paste on my CPU and CPU fan needs to be reapplied so I can't put it back on. At this point I call it a day and fret all night about bricking my expensive new purchase.

The next day I decide to whip out my general purpose troubleshooting tool: the credit card. I went to a local repair shop with my desktop and had them look into the problem. A week later my machine finally reached the top of their queue. Diagnosis: something wrong with the CPU or motherboard, replace them.

So back to Amazon whose return policy is thankfully excellent. I order a replacement CPU. The motherboard I originally bought is out-of-stock and I'm not interested in waiting anymore at this point so I pick the next least expensive board that will ship immediately.

After they arrive it's back to the assembly stage. This time was a bit more tense as a second failed build would have been devestating. Fortunately my girlfriend was available as a second pair of hands and moral support. Except for screwing in the motherboard which was considerable more painful than the first time (pro tip: remove the case fans), the second build was more straightforward as I didn't have to consult tutorials.

So finally the moment of truth. I turned on the power and…. nothing happened.

Just kidding. LEDs lit up, fans started spinning, BIOS came up on the monitor, everything was a go. The waves of relief I felt were undescribable. It was a long difficult road but Atlas finally lived (yes, I name my machines).

The Installation

After the stress of assembly it was nice to get back to something more in my wheelhouse: installing the OS.

My distro of choice is Arch Linux and by now I've become a veteran of installation. At the risk of incurring more afflictions due to my hubris I will again describe this process as straightforward. All you do is follow the directions.

Fortunately this went far better than the hardware assembly. The only hiccup was that I apparently forgot to mount my /home directory on my HDD and instead was writing to the SSD. I already knew how to handle that as I had transferred a /home directory for a friend just last week.

It also revealed yet another hardware problem: the CPU was hitting 90 degrees celsius which was quite distressing. Turns out you really have to screw the CPU fan in very tight for it to effectively cool the CPU. Now it reaches 40s. Yet another lesson learned. Although my laptop's CPU hits 90 under heavy load as well which is slightly disturbing.