nov '15

I've never built a computer before.  As a developer who wants to understand as much of the stack I work with as possible, this feels like a gap in my knowledge that needs filling.

I started getting really into programming at about age 14, so I've been doing it for about 10 years now, and I've always gotten by using a mac as "my machine". I think my first computer was an inherited Power Mac G4. These were pretty cool: you could pull this latch and the entire side would hinge flat, so you could really see what was inside.

The first time I realised this, I discovered how dusty a computer's insides become over time. Mine literally had cobwebs in it. Even at that age, I knew enough to understand that this would in no way impact the running of the thing, but I took the time to really clean the shit out of it anyway. Not because of spiders, but because I loved it, and I wanted to feel in some way connected with the tangible parts of it.

There's something missing in our relationship in technology. We've reached a stage in our application of abstraction where no one person understand how anything as complicated as an entire computer works, but we can still use them every day. This is obviously powerful and necessary, but somehow sad.  

I've know people who know how to fix their own cars, and even build them from parts. They say it's impossible with newer cars. Two thirds of teens don't know how to change a tire. Personally, I believe that everyone has a right to understand the things that they depend on to live, and "technology" is in that box.

Now, that computer I was talking about before is literally in a box. I few years later, I inherited its successor, the G5. When I (immediately) pulled it open, there was no dust, and no cobwebs. It's insides were modular, contained in their own partitions and separated by clear plastic. When I read the Steve Jobs biography years later, I got the impression this is what he had always wanted, for the guts to be part of the designed product. But to me it felt like more separation, more distance from that understanding I think is important.

At some point, I started buying MacBooks. First the pro, then the retina. There has never been anything that I wanted or needed to build that I couldn't build on in OS X.

Anyway, this computer I'm making. It's also going to be made of parts I've chosen. A CPU and its fan, enough RAM to store Infinite Jest three hundred thousand times over, a hard drive with no moving parts, some sick graphics, some power, a motherboard to stick all the parts on, and a case to stick all the parts in.

To do this, I need to do some research. I need to make sure that all the parts work together. This is actually an interesting problem: First, only some of the parts are really dependant on the others. Does the RAM have the right number of pins for the motherboard? Will the CPU's fan fit in the case? Will the power supply provide enough power for all of the components?

Then, I need to know if they will each work with linux. I've used linux a lot over the years, but never built a computer to run on it. And from what I've heard, I should do googling, and make sure I'm not going to hit weird compatibility issues that sound difficult to fix. This is another series of constraints.

Provided all of these dependencies are satisfied, and I get the right cables to connect all the parts, they will form a system that works. I'll assemble it inside its case, and I'll plug it in. And if I've learned anything, it'll work, and I'll understand a bit more about how it works.

(Number of "Infinite Jest"s in 8GB: 

8GB is about 8 trillion bytes. We get one character per byte, or half a character if we're using fancy symbols. I don't know if we are, because I haven't read it.

Infinite Jest is about half a million words, or 28 million characters - David Foster Wallace's average word length was 4.69, plus 1 for spaces.

So we can store it in memory as many times we can fit 28 million characters into 8 trillion, so about 300 thousand times.)