Any advice taken forward from here is of your own volition, and I assume no responsibility for any missteps you may take from my experience. From my anecdoctal account, the only thing that can be certain is that every endeavour is unique in itself, and special in its own way.
Why we refactor
As developers, one of our main tasks is to read code - code made by us, code made by others, and code made famous by repository pulls per month. In the reading process we often come across... Bumps in the code, whether they be edge cases, 'TODO' comments that never got addressed, or just overall hackery that was deemed 'good enough' to push through. Sometimes the bumps are more gradual, slowly rolling hills that we fail to notice until we need to build a bridge for others, where all the peaks and troughs become glaring roadblocks, or potential hazards. Refactoring is the art of seeing these formations and making a galant attempt at leveling those bumps to make things a bit smoother, to make branches off the main road less expensive to build and maintain in the long run.
The same practices in use in programming can be applied elsewhere in our lives, from our health, to our habits, to the hardware we use every day. In fact, my main anecdoctal story for this post resolves around my recent computer rebuild.
A bit of background
My first computer build was a frankenstein of a computer - a Gateway 838GM that my parents bought for me one Christmas. For my first computer it was decent - 512Mb RAM for starters, 32Mb of video RAM on the chipset (later upgraded to a dedicated card), and a 200Gb hard drive which was suitable for my needs. Over time, a wireless adapter was added, first a G adapter then an N PCIe adapter, then an upgraded video card (only a GeForce 8400, all I could afford on my shoestring budget), and it served its use up until I gave it to Goodwill last year.
In 2010 I decided I wanted to 'get serious' with my gaming and upgrade to something more substantial. Needless to say that computer isn't worth mentioning here, though as a prebuilt Dell Studio 17, it provided some value through my college years while my original Gateway computer was on loan to a friend for her schooling (yes, it worked fine 5-7 years after inception, believe it).
Fast forward to 2014, my partner in crime Cassidee bought me a CM Storm Scout 2 - the case I had been eyeing for about six months! Thus begun my first true bottom-to-top build, with nothing more than a case and a vague idea of what worked and what didn't work with my previous two computers: be careful on the processor, the motherboard and chipset platform, and especially be dilligent in choosing the brand. Not all brands are created equal folks, sorry to say! Many months later, during Black Friday, Newegg was moving to clear out a ton of products and so a few of them found their way into my computer: ASUS ROG Maximus Hero VI, Intel i7-4790k, Trident-X 1600 RAM, Kingston SSDNow 240Gb, and a Corsair HX 750. It was a lean start, which stayed lean for some time, as I paid down student debt and helped Cassidee live out her final year of school in Tucson. The build stagnated for nearly a year... I played games on one monitor, and usually on a lower resolution, which wasn't terribly bad since it was still better than my Xbox 360 in many ways (yes, I still have an Xbox 360 in 2018).
One year later, I put aside some cash to upgrade my rig with a video card, an Asus GTX 970 Turbo 4Gb (blower style) which would bring my build into the modern age. Admittedly this was a somewhat rushed purchase as the older, larger Strix variant which my roommates from 2014 had purchased for their computers, was overall a bit better in all regards (mainly on noise). The relief from having the build at a 'complete' state was extremely satisfying! Finally, I could play games reserved for the l33t PC players, and could become part of the 'PC Master Race', graduating from my laughable, outdated Xbox 360 (released in 2005, if you've forgotten). Some stop here, stop looking for ways to improve the 'complete' build, as it is a means to an ends (to play videogames). This is where the story begins.
Whirring and whining, a complaintive computer
Up to this point, the custom ROG build had just been powered on for small intervals, and only when my full attention was on some game. Moreover, even once I installed the card, the computer lived behind an entertainment center, hooked up to our TV, and so the noise of the JetFlo fans and the whir of the blower on the 970 didn't cause much of a fuss. Admittedly I bought the JetFlo setup because it would 'look cool' and the CFM, at the time, was impressive. I didn't really understand static pressure at all, and didn't really do enough research... Evidentally they were enough at the time.
Transition nearly 6 months to 8 months later, Cassidee and I move to San Antonio, and our apartment has a really great set up, where I can have the PC next to the desk, and hooked up to our TV, using an HDMI cable through the carpet connecting our home study and the living room. Instantly I regretted my decisions. Using the PC casually meant hearing the low hum of the blower, which didn't drop below 28% on its fan curve settings, and the JetFlo became an apparent earsore listening to them for more than an hour at a time. Soon I was researching fans, decibel levels, and what companies found a happy midpoint of functionality, of which Noctua rose above its competitors. The breadth of their product line, the accolades, and their attention to detail were very appealing, so I jumped on swapping to their S12 model (still not unstanding static pressure).
Sweet sweet silence on my intake fans only left the noisy video card. To tackle this I looked into many, many options, and eventually settled on the Corsair HG10 coupled with a Corsair H60 (the post-2013, pre-2018 version). Going this route, it was apparent that support for the Asus Turbo was lacking, and the HG10 was no different - it offerred no guarantees for fitment on the model, though others had modded the HG10 to work for them. I took the same road less traveled in pursuit of silence! My success was so great in this endeavour, I even wrote a review. The choice of the H60 was due to space constraints with my CPU cooler, a Zalman CNPS9000 and if you're looking for advice on choosing a closed loop cooler, definitely try for something a little better like the H110i for about 6c change over the H60, if you have the space. On load, the newly equipped card would be still a little noisy, but with a Noctua moving air off the H60 instead of the stock fan, this noise was minimized. On idle, the fan could be turned down to very low settings, making the computer nearly silent (at some point an Akasa 6-fan controller found its way into the Scout chasis... timelines are blurry but the guess is around the time the fan swap happened).
At last the build felt 'complete' again, silent but deadly, and now cruising at a much lower temperature across the GPU, with less noise! There's no greater feeling the satisfaction of a job well done, given your constraints and previous choices... Somehow I pulled off a decent build with quirky parts and fitments at times.
In the meanwhile...
From that build being 'complete' a certain urge to build more had arisen in me. The success of the build led me to trying more daring builds, and so I plunged into an mATX build for my partner Cassidee. Long story short, the build went only 'ok'. I made more mistakes in the mini build that I ever did with my mid tower, since many components just weren't made for the mini tower form factor... Cooler Master's Elite 130 is spacious enough, but the layout was quirky, and pushing a 970 mini into the chasis proved to be a challenge, next to a large Corsair RMi 800 and another quirky Zalman. Later the chasis was swapped for a Corsair Obsidian 250D, the Zalman for a Noctua low profile cooler, and the mini 970 for my ASUS Turbo blower card.
In the time that followed, I took on a few more builds including a laptop build for my sister, using HP's beautifully designed Folio as her base (it has a great feature set for most users, has a great price point, and is dead simple to disassemble), and also built a gaming PC for her roommate's son, using the Corsair Air Carbide 240 and the ASUS Strix 270-i motherboard for a Kaby Lake adventure into DDR4-land. The builds were all fun and I learned quite a bit from each, from choosing the 'right parts', to cost-benefit analysis on going with current-gen-tech or one-gen-old tech, to what just makes sense to spend a premium on (the motherboard and CPU are extremely important at buy time and later down the road). But these were all side stories to the main epic that is my main computer, so let's get back to that shall we?
So how could I refactor what I had come to know as perfection? How could I make it better, cooler, and quieter? These questions haunted the back of my mind for some time, and as the CPU and GPU dies began to get overclocked to meet my gaming demands (thanks Witcher 3, you magnificient feat of gaming, story-telling, and programming), these concerns became more present in the forefront of my mind.
Looking at the stats of Overclockers over at Overclock.net, the thought of water cooling the entire system began to sink in as a possible solution to my needs. Moreover, PC Part Picker's completed builds section was really enticing! One build in particular, the Poseiden 2.0 build, really caught my attention as to what a showcase, highly-functional PC could be (check out more of this great work on sirtechalot's Instagram). Form and function could combine to create art, from circuitry, pipes, fixtures, and the right 'finishing touches'. I started watching videos by YouTube user JayzTwoCents as he is the most vocal enthusiast water cooling blogger. Though he's not the most technical of guys out there, his viewpoints surrounding who should explore custom loops versus closed loops are generally well-founded. Jay is also not shy in his failures, as cautionary tales for the rest of us that even seasoned veterans of water cooling are not safe from problems.
Down the rabbit hole I went, round and round, researching all kinds of water cooling approaches this time, before pulling the trigger on an idea. I learned a great deal about fan static pressure previously that helped with learning about flow over radiator fins, how fin density can effect cooling, and how to appropriately vent the refactored system. Plenty of reviews exist to dive into fan performance, so we won't spend time on that here. The Scout 2 also started to become a problem to the end goal - it did not have sufficient space in the top or front for a radiator without heavy modification to the chasis, and it would not really showcase any kind of custom loop very well. Why create art to have it sit in storage, unless you're Dorian Gray? Looking into cooling the GPU also became a problem - finding a full cover for a last-gen GPU is like finding a unicorn out in the forest. Do I go with a generic GPU block, or dive into a new GPU also? Options, options, options... Tubing, fittings, and all the specialty fixtures were also a huge endeavour to review and learn about, though Jay has an introductory video to fittings to 'get your feet wet'. If you're planning on going down this path, do the legwork! All the research will help in deciding where the money goes.
The parts themselves were hard to decide on, and I changed my mind on paper many times before buying the 'final' set of items. Hardware Labs was my first choice of radiator, though I instead opted for the RX series from XSPC after reading a lengthy review on push versus push/pull, which favored thicker radiators, and more fans at lower RPMs. Fittings were also tough - a mix of functionality, price, and overall offerings, going with XSPC for the majoirity of fittings as well, except for speciality fittings which were procured from EK. Mainly XSPC fittings excel in having a place to grip when tightening down the lock ring, while EK does away with this for aesthetics at double the price per fitting. What EK does well is splitters, passthrough fittings, and fill ports. Both EK and XSPC black chrome look nearly identical and blend well. As for tubing, getting XSPC pretty much locks you into their tubing and that's a-okay - 14mm OD seemed to work really well, not too thin and not too thick! Before deciding on XSPC I ordered 12mm OD and 16mm OD piping from EK to try out the variants.. Accidentally I ordered 16mm acrylic instead of PETG, and that turned out to be a huge disaster - do NOT try to cut acrylic with PETG tooling! If you want to do the daring acrylic build, try actual pipe cutters like Jay mentions in his tube bending video. PETG is great to work with though, and my experience with acrylic made working PETG seemed like a dream.
With the radiators, tubing, and fittings all decided on, what the heck was I going to put the hardware in? A giant step backwards, my search for the 'right' computer case had begun. Thankfully Hardware Canucks had already done a great case lineup for the year, and so I leaned on their legwork, choosing the bigger brother of the P300 which they reviewed, the tempered glass Eclipse P400 Silent Edition. The case was about the same size as my Scout 2, but three inches longer which would help with the extra hardware needing to be crammed in there. For reference, the RX series are 56mm thick, so with 25mm fans, each radiator is minimally nearly 80mm, 8cm, or nearly one third a foot. With push-pull configured, 105mm would be quite a challenge when the total length of the case is only 470mm.
With the case dilemma sorted, the elephant still in the room was the graphics card upgrade. Above all else, this would be the largest piece of the budget - have you noticed the ridiculous prices for cards lately? I digress... Anyway, $800 for replacing the graphics card increased the build cost for this rebuild by nearly 200% - the whole custom loop materials came in around $500. I managed to find a seller out of Italy that wasn't price gouging... While other sellers were marking up the GTX 1070ti up to $1100, this seller offered the card at $750 plus tax.
Some assembly required
Once the build started, things went a bit rough. To guard myself from stupid spills filling the resevoir, I opted to create a frosted acrylic cover over the vented power supply area because who wants water dripping onto the top of their PSU? That was extremely interesting and painstaking, and I ended up breaking the acrylic in an unexpectedly cool way. 1000 grit sanded acrylic also does some amazing light diffusion under an led which was cool too. Many grits were tried and tested against the led strip which would be used in the finalized build, for accuracy of the final product. After that was cut, the radiator also needed a gasket to block airflow coming in from outside the 120mm fan width, as the case allows both 140mm and 120mm fans up front. This bent acrylic too was frosted and fitted to the front after some trial and error.
After finishing the acrylic work, fitting the front components of the loop started to take shape. First the RX240 was mounted, and then I attempted to mount the Swiftech MCP50x pump and accompanying resevoir. Earlier I had made a failed attempt at using XSPC's beautifully crafted D5 Photon pump / resevoir combo, but had to return it to Amazon since the thing was entirely too massive for this mid-tower build. Moreover, the MCP50x came with impressive stats and reviews, as well its own quirks which we'll get into later. My first pump mount was bent acrylic and was a phenonemal failure also, so I began searching online to see how I could solve this mounting issue. XSPC to the rescue again, with their universal radstand product! Though made for test bench setups and quirky other arrangements, the stands were modified by way of Dremel to meet my critera for mount holes on the MCP50x. Most importantly, the radstands helped lift the pump-res combo above where the GTX 1070ti would jut out. With the pump and resevoir fit, I began cutting the fill plug into the case, by lining up the midpoint of the power button to where it cleared the pieces below (admittedly this was just dumb luck, and I almost completely blew it here - call it beginner's luck). With the front end of the build taking shape, I began the PETG tube bending and fitting.
Thus began the most irritating part of the build process, and the source of many errors. Oddly enough bending PETG in a beautifully non-disruptive way to the material is actually kind of an art... From material being too hot in some spots or not hot enough, to bending too quickly - the struggle was all too real. To get everything to fit 'right' I had to dismantle my workstation and get the EK block set up on the motherboard, fit the tubing from the pump outlet to the CPU block, CPU block to the rear 120mm RX radiator, to the GPU full cover by EK, then run a pipe back to the front radiator. Although it sounds simple enough, 3 messed up tubes later, I finally got the long run back to the front correct! Always buy spare tubing, aka the 8-pack on Amazon from XSPC. Working with PETG versus the previous acrylic, it was much more error prone, as the issues with acrylic are it being too sturdy or too stiff whereas PETG was maybe a little too soft, causing the material deformations. Take some time to practice before doing the runs for real!
At some point in the build I ran out of angled rotary connectors and had to buy more, plus some had sufferred the infamous XSPC quality defects the reviews all talk about - yes they are confirmed, just check all the fittings you're going to be using in the build for any metal shavings, looseness, or any other deficiencies. One rotary fitting had a whole sliver of metal pulled from the rotation part of the fitting, a very unsettling discovery. If I had used that fitting and rotated it some, that inner o-ring probably would have leaked on me. The 90-degree and 45-degree rotary fittings work really well for oddball fitment and turns and relieves headaches when it comes time to connect everything up. Since all the piping was done, filling up the build was the next step.
Testing, testing - 1, 2...
Once I started leak testing the loop, things again did not go well. Despite all I had read online with jumping my PSU to test the pump, the MCP50x wasn't having it. With my test set up, it seemed like the MCP50x was drawing way more amperage than it should have been from the test bench PSU, triggering the PSU to shut itself off to reduce the possibility of damage to a system. Hunting around the net, little help was found on the subject, except one post buried in Overclock.net's forum, which stated that some PWM input had to be sent to the pump for it to behave normally...
When 'testing' out a water build for leaks, the last thing you want to do is turn on the whole system without a proper leak test. Hilariously, before finding this post I RMA-ed the pump because I thought it was faulty, but the Swiftech rep said nothing about this design 'feature'. My hack workaround? Pull the molex 2a 120v converter from my entertainment cooling rig and use it in testing. Since the converter isn't as smart as a PSU, it would overpull on energy and kill the unit, causing the unit to reset itself and try to power the pump again. This was actually ideal for getting the bubbles out of the system, even though it was a pain in the butt to discover! At this point, the build was nearing roughly 20 nights of labor, with the pump fiasco costing a couple of days with the fill-test-drain-rma-fill-test series of events. Aside from the pump speed bump, no visible leaks were found in the loop so woo!
After continued testing of the loop, I made minor tweaks here and there, and replaced a few kind of 'meh' 90 degree rotary fittings that seemed to be deteriorating rapidly (now up to 12-ish at this point, maybe even 16). The drainage fixture I had installed I learned fast was only useful for the pump and only part of the loop, where the graphics card outlet soon became by secondary drain pipe. After nearly a month, I finally had the rig up and running again!!
What did $1500 buy?
Once the build was operational, stress testing was done using Prime95 on the CPU die for an extended period of time (about 6 hours). Over the course of the testing, the CPU die temperature didn't exceed 62c when the system was running a max pump and fans speeds, with the overall system stabilizing at around 38c. This is extremely impressive, considering before I could never drop below 70c with the Zalman.
Moreover, when testing heat dissipation on the GPU, I found the full cover on the 1070ti kept the card around 44c while playing Witcher 3 with maxed out settings. Cooling delta on the GPU was substantial, as the 970 hybrid card, OCed to the 1070ti base clock, would run at 65c in the original 'perfect' system, resulting in a 20c delta between the 1070ti custom loop and the 970 Corsair loop.
Some people might not get excited about a 20c difference in thermal dissipation in the system, but damn, if you're a computer builder, you know how substantial a difference this makes to air coming off this system. Instead of blowing out piping hot air, the air coming out of the system is just now somewhat warm. When the system is idle, I barely hear it, but know its on from the intense glow from the Phantek Halo Lux fan lights, and top-mounted led strip. In the end, this magnificiently painstaking creationary process yielded prolific results, and a poetic masterpiece of a computer. Drama, suffering, victory, and defeat - elation and depression all wrapped into a single project, as the tale unfolded.
Looking back I probably wouldn't do much differently, as there were so many 'oh shit' moments that were shear bad luck, or unforeseen based on the information I could uncover. No amount of preplanning can prepare oneself for life's cruel yet important lessons in perseverance and commitment to completion of the masterwork. In all our endeavours we have the opportunity to trascend the norm, to push past mediocre and sit at the table of those who have triumphantly finished some intense undertaking, whatever that may be. I hope you have enjoyed my retelling of this journey, and hope to share more wisdom with you next time!