<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Francis Shanahan[.com] &#187; how to</title>
	<atom:link href="http://francisshanahan.com/index.php/tag/how-to/feed/" rel="self" type="application/rss+xml" />
	<link>http://francisshanahan.com</link>
	<description>Thoughts on technology from a citizen scientist</description>
	<lastBuildDate>Sun, 25 Jul 2010 00:23:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How To Build A Computer From Scratch (With Pictures)</title>
		<link>http://francisshanahan.com/index.php/2005/how-to-build-a-computer-from-scratch-with-pictures/</link>
		<comments>http://francisshanahan.com/index.php/2005/how-to-build-a-computer-from-scratch-with-pictures/#comments</comments>
		<pubDate>Sat, 19 Nov 2005 20:03:00 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Things I've Made]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[video card]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/index.php/2005/how-to-build-a-computer-from-scratch-with-pictures/</guid>
		<description><![CDATA[Building a PC is fairly easy and if you&#8217;re like me it&#8217;s simply the only way to get what you want. Granted you may have to jump through a few hoops to do so but the result is a more powerful machine for the money than you can buy from the store and you&#8217;re friends will think you&#8217;re an uber geek with magical powers (well maybe just a geek).
First thing is to order the parts: I bought the following from NewEgg:
* Antec NeoPower NeoHE 550 ATX12V 550W Power Supply &#8211; ...]]></description>
			<content:encoded><![CDATA[<p>Building a PC is fairly easy and if you&#8217;re like me it&#8217;s simply the only way to get what you want. Granted you may have to jump through a few hoops to do so but the result is a more powerful machine for the money than you can buy from the store and you&#8217;re friends will think you&#8217;re an uber geek with magical powers (well maybe just a geek).</p>
<p>First thing is to order the parts: I bought the following from NewEgg:</p>
<p>* Antec NeoPower NeoHE 550 ATX12V 550W Power Supply &#8211; Retail $118.00 (NOT RECOMMENDED)<br />
* eVGA 256-P2-N515-AX Geforce 7800GT 256MB GDDR3 PCI Express x16 &#8211; $345.00<br />
* AMD Athlon 64 X2 4200+ Manchester 1GHz FSB Socket 939 Dual Core Processor &#8211; $400.00<br />
* Seagate Barracuda 7200.9 ST3160812AS 160GB 7200 RPM SATA 3.0Gb/s Hard Drive &#8211; OEM &#8211; $92.00<br />
* OCZ 2GB (2 x 1GB) 184-Pin DDR SDRAM DDR 400 (PC 3200) Unbuffered Dual Channel Platinum System Memory Model &#8211; $252.55<br />
* ASUS A8N-SLI Premium Socket 939 NVIDIA nForce4 SLI ATX AMD Motherboard &#8211; $169.00<br />
* Antec Performance I P180 Silver Steel ATX Mid Tower Computer Case &#8211; $118.99</p>
<p>Subtotal: $1,492.55 &#8211; compared to ~$2500 from a store/bespoke retailer. </p>
<p>I had to return the Antec Neo HE power supply and would not recommend it. It has extremely low amps on the +5V rail which powers the CPU and motherboard chipsets. As a result the machine once built would power off after a few mins.<br />
I replaced the PSU with a Seasonic 600w S12. NewEgg then sent me the wrong one (a 330W version) so had to RMA that one also. They were nice enough about it although it was extremely aggravating. All told I&#8217;ve had far worse experiences with Gateway customer service back in the days when I bought off the shelf. Comes with the territory.</p>
<p>General rule: Don&#8217;t over-tighten anything.<br />
General rule: Push firm but not too hard, don&#8217;t want to break anything.<br />
General rule: Hold cards by the edges and try not to touch anything electronic.<br />
General rule: Don&#8217;t do this on carpet, you&#8217;ll probably get a static discharge and zap something.</p>
<p>1) Take your case out of it&#8217;s box and remove the packaging. Keep a phillips head screwdriver handy and be sure to DE-STATIC yourself (touch something metal).</p>
<p>2) Unpack the mobo and find the back-plane cover. Replace the one in your case with the one that comes with your mobo.</p>
<p>3) Screw in your mobo. You may need to add brass stand-offs to the case (these just screw in).</p>
<p>4) Push in your memory modules. Consult the motherboard manual for which slots to use depending on how many memory sticks you&#8217;re using.</p>
<p>5) Remove a PCI card cover from the case and push in your graphics card. If you have 2 repeat the process and push on your SLI connector. Do the memory first (step 4) as some boards won&#8217;t let you fit in memory once the graphics card is installed.</p>
<p>6) Clean your hands and take out your CPU. Whether it&#8217;s Intel or in my case AMD there&#8217;s only 1 way this goes in, make sure you line it up right. Raise the lever and drop it in. There should be NO pressure required for it to slot in.</p>
<p>7) This is the part when you begin to sweat. Install the CPU heatsink. Don&#8217;t touch the bottom of the heatsink, you don&#8217;t want grease or anything on here. Remove any pieces of plastic that might be on there. Before you start figure out what you&#8217;re doing as once it&#8217;s on the thermal grease or pad will stick to the CPU and it&#8217;s hard to re-position. Manufacturers recommend a thermal pad on the heatsink as it lasts longer than grease but most enthusiasts use grease (arctic silver) as it lets you change out your heatsink/processor more frequently. Either way you&#8217;ll usually need to apply some force to the heatsink to get it clicked in. Don&#8217;t be shy but be careful, too much pressure or uneven pressure will snap the CPU and it&#8217;s off to the silicon hospital for you.</p>
<p> <img src='http://francisshanahan.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Next, snap out the metal covering your 5 1/4&#8243; drive bays. Keep the plastic cover. Install some drive rails on your optical drive and push it in from the front of the case. Repeat per drive.</p>
<p>9) Install your hard drive using the screws from the case.</p>
<p>10) Install the PSU and snake your wires all over the place. You&#8217;ll have some combination of the following:<br />
 a) Either a 20 or 24pin connector on the mobo.<br />
 b) A second 4pin connector on the mobo (might be 8pin if you have dual CPUs).<br />
 c) A Sata power cable for each drive &#8211; looks like a thin wide connector.<br />
 d) A molex (4pin) for each IDE drive.<br />
 e) Some PSUs can power the fans in your case. Some fans can be powered off the motherboard. Depending on your setup connect the fans either to the motherboard (look on the board for the connectors, usually 3 pins sticking up) or the PSU (through a molex connector).<br />
 f) Power for the PCI-E graphics card (looks like a 6pin connector with 3 yellow and 3 black wires) or a 4-pin molex to your AGP graphics card.<br />
 g) The case you bought will have a power button, some lights that come on when the hard-drive&#8217;s working, a power light and some other stuff. For the power switch and lights, there&#8217;s usually a little tiny bank of pins all in a row where you plug in the connectors from the case. Find these and consult the motherboard manual for where to plug in what.<br />
 h) If your case has other connections for things like USB or front Firewire ports or Audio connections just take these one at a time and find them on the mobo using the manual and plug them in.</p>
<p>11) Last thing, install your IDE cable to your optical drives (big wide ribbon) or a SATA cable to your hard drives (skinny red cable).</p>
<p>Button her up and you&#8217;re done. Check the connections, tighten any screws and you should be ready to fire up the machine.</p>
<p>Install the OS by booting from CD. Once you get the OS installed it&#8217;s time to &#8220;burn in&#8221; the machine. The idea is to stress the machine in it&#8217;s first few days. If something&#8217;s going to go wrong it&#8217;ll go wrong then (usually).</p>
<p>a) If your motherboard has self-diagnostic features, turn them on the first few times you boot. Run any memory tests the board has. This stuff is typically enabled by default, if not you can go into the BIOS and turn it on. You can also test memory with Microsoft&#8217;s memory scanning utility.</p>
<p>b) Update your motherboards BIOS and drivers. The BIOS flashing procedure is usually described by your motherboard&#8217;s manual. Sometimes you&#8217;ll need to update the chipset drivers (done through the WindowsUpdate or nVidia.com) BEFORE flashing the bios, again read the manual and you&#8217;ll be all set.</p>
<p>c) Install something like SANDRA lite and use it to check your machine&#8217;s temperature and voltages. CPU should be around 30-40C whilst idle but don&#8217;t be surprised if it gets up to 60C under load. Any higher and I&#8217;d start to get concerned. GPU (graphics processing unit) temps can be checked through the utilities that came with your card, in the case if nVidia just right-click on the desktop and click &#8220;Nvidia Properties&#8221;. ATI will have something similar. GPU temps will be around 40-50C and can get as high as 80C but this is unusual.</p>
<p>d) Run utilities like 3DMark and SuperPi to generate some load on the machine. Run these for a couple of hours. If the machine doesn&#8217;t overheat or blue-screen then you&#8217;re golden(probably). If it does overheat or bluescreen it&#8217;s time to hit the message boards and diagnose the problem.</p>
<p>Hopefully that helps de-mystify the process of building a PC. Of course you may run into problems, but there are plenty of forums to help you.</p>
<table>
<tbody>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4710.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4710.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4715.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4715.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4716.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4716.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4717.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4717.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4722.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4722.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">The Motherboard Box (you&#8217;ll need one of these)</td>
<td align="center" valign="top">Open Motherboard box</td>
<td align="center" valign="top">The motherboard itself</td>
<td align="center" valign="top">Alternative motherboard angle</td>
<td align="center" valign="top">The Case box (you&#8217;ll need one of these)</td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4723.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4723.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4724.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4724.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4725.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4725.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4726.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4726.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4728.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4728.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">The Power supply (you&#8217;ll need one of these). DON&#8217;T buy this one, it&#8217;s garbage. I recommend the Seasonic S-12 600Watt. You&#8217;ll see later that I returned this Antec unit for a Seasonic. </td>
<td align="center" valign="top">The Video Card. You&#8217;ll need at least one of these but could buy 2 for an SLI machine. This is an eVGA brand 7800GT PCI Express card. Good value for the money and a killer card overall. </td>
<td align="center" valign="top">The motherboard box again (it&#8217;s too pretty). This is an SLI motherboard from Asus. It sports a passive (no fan) cooled chipset and an excellent layout. </td>
<td align="center" valign="top">The Hard Drive (you&#8217;ll need at least one of these). This is an OEM hard drive and literally comes with NOTHING else. You can save money buy buying OEM parts.  </td>
<td align="center" valign="top">The Processor (you&#8217;ll need one of these). This is an AMD 64 bit Athlon 4200+ dual core. An EXCELLENT processor. I don&#8217;t recommend buying an OEM processor, it&#8217;s not worth the savings. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4729.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4729.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4730.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4730.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4731.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4731.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4735.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4735.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4736.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4736.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">2 sticks of Memory. You&#8217;ll need at least 1 memory stick but I recommend buying 2 matched sticks like this. This is 2x1GB of OCZ Platinum DDR400 memory. </td>
<td align="center" valign="top">The Antec P180 case coming out of it&#8217;s box.</td>
<td align="center" valign="top">The Antec P180. I have a passive recommendation of this case. It&#8217;s cheap and quiet but don&#8217;t expect Lian Li build quality. </td>
<td align="center" valign="top">The motherboard box&#8217;s contents. Don&#8217;t be alarmed, you don&#8217;t need all this stuff. It&#8217;s nice to have for the future though. </td>
<td align="center" valign="top">The mobo one more time.</td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4737.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4737.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4738.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4738.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4739.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4739.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4740.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4740.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4741.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4741.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">Take off the side panels. </td>
<td align="center" valign="top">Take out the drive cages and other removable fans. </td>
<td align="center" valign="top">This is the backplane, it&#8217;s gotta go and be replaced by the one that came with the mobo. </td>
<td align="center" valign="top">The P180 hides it&#8217;s screws in a box behind one of the cages. </td>
<td align="center" valign="top">You can find brass-standoffs in this box but I didn&#8217;t need them. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4742.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4742.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4743.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4743.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4744.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4744.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4746.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4746.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4747.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4747.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">The new backplane in place, it just pushes in. </td>
<td align="center" valign="top">Slide the motherboard up and lift the tabs on the backplane up over the motherboard ports. </td>
<td align="center" valign="top">The mobo is in place, screw that baby down. </td>
<td align="center" valign="top">The Power Supply contents. NOTE: This is an Antec 550W and I ended up returning it. I&#8217;m just leaving the pictures in to demonstrate the assembly. </td>
<td align="center" valign="top">Unscrew the cage from the P180 and wrap the PSU with it. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4748.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4748.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4749.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4749.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4750.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4750.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4751.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4751.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4752.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4752.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">It&#8217;s a good fit but the Seasonic I ended up using won&#8217;t fit this thing. It&#8217;s not needed anyway. </td>
<td align="center" valign="top">Depending on your PSU you&#8217;ll have different cables. This is what a 4 pin motherboard connection looks like. There are 2 in case you have a dual cpu motherboard. Plug in 1. </td>
<td align="center" valign="top">Can you guess where this goes? </td>
<td align="center" valign="top">These are molex connectors, they go to things like fans and IDE drives (not SATA drives). </td>
<td align="center" valign="top">This big fan is not really needed but blows air on the PSU. I took it out to make wiring easier. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4754.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4754.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4756.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4756.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4757.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4757.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4759.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4759.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4760.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4760.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">For the optical drives, you&#8217;ll need to break off a piece like this for each drive. </td>
<td align="center" valign="top">Screw two of the drive rails onto each drive. Metal tabs face the front and should be flush with the front of the drive. </td>
<td align="center" valign="top">I use these itty bitty screws. </td>
<td align="center" valign="top">Slide the drive in from the front until it clicks. </td>
<td align="center" valign="top">Hard drive next. Screw each drive into the drive cage. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4761.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4761.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4762.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4762.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4763.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4763.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4764.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4764.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4765.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4765.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">You have to use these elongated screws to make it through the silicone grommits. </td>
<td align="center" valign="top">Nice drive in it&#8217;s cage. </td>
<td align="center" valign="top">Contents of the video card box. </td>
<td align="center" valign="top">This is where the video card is going. </td>
<td align="center" valign="top">Put the memory in like this, BEFORE the video card. Otherwise the memory won&#8217;t fit past the card. Use slots 1 and 3 or whatever your mobo manual says. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4766.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4766.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4767.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4767.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4768.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4768.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4770.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4770.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4771.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4771.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">Push in the graphics card. </td>
<td align="center" valign="top">Contents of the CPU&#8217;s box.</td>
<td align="center" valign="top">AMD CPUs come with a easy to follow sheet. </td>
<td align="center" valign="top">Hold the CPU gingerly, remember not to touch the pins and not to get grease on the chip. Marvel at the amazing pins. Lift the handle and slot that sucker home. No force should be needed. </td>
<td align="center" valign="top">Here&#8217;s the bottom of the heatsink. Keep that baby clean. </td>
</tr>
<tr>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4773.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4773.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4774.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4774.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4775.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4775.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4776.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4776.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4778.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4778.JPG"></a></td>
</tr>
<tr>
<td align="center" valign="top">It&#8217;s the most nerve wracking thing to squash that heatsink on the chip but here&#8217;s the finished product. </td>
<td align="center" valign="top">Slide the drive cages in. </td>
<td align="center" valign="top">No time to wire up the case to the motherboard. This is a mess but take your time, consult the motherboard manual and you&#8217;ll find where everything goes. </td>
<td align="center" valign="top">Stick a SATA cable in your drive (the red thing).</td>
<td align="center" valign="top">Some wiring is needed. </td>
</tr>
<tr>
<td align="center" valign="top"></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4779.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4779.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4781.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4781.JPG"></a></td>
<td align="center" valign="top"><a href="/images/buildapc/__xs_IMG_4731.JPG" target="_blank"><img src="/images/buildapc/__thumbnails/__xs_IMG_4731.JPG"></a></td>
<td align="center" valign="top"></td>
</tr>
<tr>
<td align="center" valign="top"></td>
<td align="center" valign="top">A cable tie can help keep things neat. </td>
<td align="center" valign="top">I ended up replacing my power supply as the Antec 550W has a low Amp rating on the +5v rail. This meant the machine would turn off unexpectedly. I returned it for a Seasonic S-12 600W. Here you see a Seasonic S-12 330W which New Egg sent me by mistake. Imagine my dismay!</td>
<td align="center" valign="top">Finished product, ready to be powered up. </td>
<td align="center" valign="top"></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2005/how-to-build-a-computer-from-scratch-with-pictures/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Record Netmeeting (or anything) Demonstrations and Save them as Movies</title>
		<link>http://francisshanahan.com/index.php/2004/record-netmeeting-or-anything-demonstrations-and-save-them-as-movies/</link>
		<comments>http://francisshanahan.com/index.php/2004/record-netmeeting-or-anything-demonstrations-and-save-them-as-movies/#comments</comments>
		<pubDate>Sat, 13 Nov 2004 11:20:00 +0000</pubDate>
		<dc:creator>Francis</dc:creator>
				<category><![CDATA[Things I've Made]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[netmeeting]]></category>
		<category><![CDATA[record]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/index.php/2004/record-netmeeting-or-anything-demonstrations-and-save-them-as-movies/</guid>
		<description><![CDATA[Download this utility
http://francisshanahan.com/download/bigvideocapturesetup.zip
My job occasionally involves hosting &#8220;Brown Bag&#8221; type sessions where I demonstrate a technology to other folks in the office. The topics can range from Web Services to basic .NET stuff to Remoting etc.
Recently I decided to demonstrate Biztalk 2004 including the integration with Visual Studio, the new orchestration designer, the pipeline editor, mapper and schema designer and so on. Traditionally this would mean I create a PowerPoint presentation and some sample code on my laptop, get everyone together over lunch and project the entire thing onto a ...]]></description>
			<content:encoded><![CDATA[<p>Download this utility<br />
<a href="http://francisshanahan.com/download/bigvideocapturesetup.zip">http://francisshanahan.com/download/bigvideocapturesetup.zip</a></p>
<p>My job occasionally involves hosting &#8220;Brown Bag&#8221; type sessions where I demonstrate a technology to other folks in the office. The topics can range from Web Services to basic .NET stuff to Remoting etc.</p>
<p>Recently I decided to demonstrate Biztalk 2004 including the integration with Visual Studio, the new orchestration designer, the pipeline editor, mapper and schema designer and so on. Traditionally this would mean I create a PowerPoint presentation and some sample code on my laptop, get everyone together over lunch and project the entire thing onto a big screen with an overhead projector.</p>
<p>Couple of issues with this are that<br />
a) It means getting everyone who&#8217;s interested together at one time. When some folks are in Bangalore India, New Delhi India, Chicago, Boston or offsite at a client that can be difficult.<br />
b) If I ever needed to give the demo again it would mean setting up the entire thing, including the project from scratch. This sucks when you&#8217;re dealing with Biztalk as the system is very complicated, even for the simplest orchestrations and to set it up takes a lot of time and planning.<br />
c) If heaven forbid something went wrong during the demo, I have to scramble and debug it on the spot which rarely happens but when it does it&#8217;s a nightmare.</p>
<p>So, the answer I felt was to somehow record the session offline into a movie and make the movie available on our corporate network.</p>
<p>I figured I&#8217;ll just download some free software and get started. I come to find out there really is no free software and I&#8217;m not about to spend my hard-earned cash just to give a demo for the good of my health. Especially with a compiler and Visual Studio gleaming in my Programs menu.</p>
<p>So last week once my daughter had gone to bed I fired up Studio and whipped up a simple utility to capture screenshots every X milliseconds and convert them into an AVI file. It&#8217;s multi-threaded and gets pretty good performance without slowing down what you&#8217;re trying to demonstrate.</p>
<p>It also draws a fake mouse &#8220;pointer&#8221; as it&#8217;s not possible to capture the mouse image with a screenshot.</p>
<p>Since AVIs can get pretty large, it automatically chunks the screenshots so for example, every 50 screenshots it&#8217;ll start a new AVI file.</p>
<p>Lastly it captures audio in the form of a WAV at about 11Khz which isn&#8217;t CD quality but is good enough to get the message across without bloating the resulting movie.</p>
<p>Once you have the AVI and the WAV, these can be combined using Windows Movie Maker into a WMV file or into an MPEG2 encoded movie using TMPGEnc. Both are free.</p>
<p>So now I have a complete presentation with mouse-movements and audio stored in about 5 WMV files, each about 20MB in size that I can distribute to whomever&#8217;s interested. The entire thing&#8217;s about 1 hour in length. Not bad for a weeks&#8217; work.</p>
<p>You can download the utility from this site [<a href="http://francisshanahan.com/download/bigvideocapturesetup.zip">HERE</a>] , instructions on how to use it are included in the README.txt.</p>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2004/record-netmeeting-or-anything-demonstrations-and-save-them-as-movies/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Using OpenGL with MFC</title>
		<link>http://francisshanahan.com/index.php/2000/using-opengl-with-mfc/</link>
		<comments>http://francisshanahan.com/index.php/2000/using-opengl-with-mfc/#comments</comments>
		<pubDate>Sat, 14 Oct 2000 14:29:00 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Things I've Made]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[mfc]]></category>
		<category><![CDATA[opengl]]></category>

		<guid isPermaLink="false">http://francisshanahan.com/www/index.php/2000/using-opengl-with-mfc/</guid>
		<description><![CDATA[This tutorial is intended to describe how to setup MFC with OpenGL or how to setup OpenGL with MFC.
In this lesson we&#8217;ll create a simple MFC project, workspace and application. The project will create a window complete with menu, toolbar, status bar and rotate a nice torus in the window.
First off, Download the code for this lesson.
This tutorial is intended to describe how to setup MFC with OpenGL or how to setup OpenGL with MFC, depending on your point of view. Many people have asked for this and it&#8217;s a ...]]></description>
			<content:encoded><![CDATA[<p>This tutorial is intended to describe how to setup MFC with OpenGL or how to setup OpenGL with MFC.</p>
<p>In this lesson we&#8217;ll create a simple MFC project, workspace and application. The project will create a window complete with menu, toolbar, status bar and rotate a nice torus in the window.</p>
<p>First off, <strong><a href="http://francisshanahan.com/download/mfc_basic.zip">Download the code</a></strong> for this lesson.</p>
<p>This tutorial is intended to describe how to setup MFC with OpenGL or how to setup OpenGL with MFC, depending on your point of view. Many people have asked for this and it&#8217;s a topic that comes up frequently on the message boards so here it is. It&#8217;s also surprisingly simple to do.<br />
MFC really is easy to use once you get used to it and Visual C++ IDE does a tremendous job of automating the development process. So let&#8217;s get started.</p>
<p>In this lesson we&#8217;ll create a simple MFC project, workspace and application. The project will create a window complete with menu, toolbar, status bar and rotate a nice torus in the window.</p>
<p><img src="../../images/howto/mfc_basic_1.gif" alt="The Classes you'll have after your application is generated." align="left" /><br />
First thing you want to do is create the project. Fire up VC++ and create a new MFC App Wizard project. Move through the wizard, entering the parameters as you see fit. It really doesn&#8217;t matter what you pick here so go nuts.<br />
Here&#8217;s a shot of the classes you&#8217;ll end up with.</p>
<p>VC generates lots of neat code for you. It&#8217;s a good idea to have it insert &#8220;TODO&#8221; comments as this will help you figure out what most of the methods are for.<br />
Now let&#8217;s prepare the window. First off you need to modify the window in the PreCreateWindow method of the View class so that the window can work with OpenGL. Do this by adding the following lines to your project:</p>
<p>BOOL CMfc_basicView::PreCreateWindow(CREATESTRUCT&amp; cs)<br />
{<br />
// Add Window styles required for OpenGL before window is created<br />
cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS | CS_OWNDC);</p>
<p>return CView::PreCreateWindow(cs);<br />
}</p>
<p><img src="../../images/howto/mfc_basic_2.gif" alt="The PreCreateWindow Message handler in the Workspace window." align="right" /><br />
Make your PreCreateWindow look like mine ( with the exception of the CMFC_basicView:: piece, this is the class name and will differ based on what you named your project/class ).</p>
<p>Ok, let&#8217;s get the include files inserted into the project. But where do they go I hear you ask: Since we&#8217;ll be using openGL calls from potentially anywhere in the application, we&#8217;ll add them to a file called stdafx.h. You may need to go find this file under the &#8220;headers&#8221; section in the File view of the Workspace window.<br />
Here&#8217;s a snippet from that file that includes the last line generated by VC++ and the include files I&#8217;ve added.</p>
<p>#include &lt;afxcmn.h&gt;<br />
// MFC support for Windows Common Controls</p>
<p>// Inserted these files for openGL<br />
#include &lt;gl.h&gt;<br />
#include &lt;glut.h&gt;<br />
#include &lt;glu.h&gt;<br />
#include &lt;glaux.h&gt;</p>
<p>#endif // _AFX_NO_AFXCMN_SUPPORT</p>
<p>Now we&#8217;ll setup the PixelFormat etc. for OpenGL. Before we do, here are a couple of member variables I find it useful to add to the View class at this point. They are the following.<br />
Just paste these into your View class .h file under Attributes, public section.</p>
<p>HGLRC    m_hRC; // Permanent Rendering Context<br />
HDC m_myhDC; // Private GDI Device Context<br />
int    m_height; // Stores the height of the View<br />
int    m_width; // Stores the width of the view</p>
<p>These variables store the rendering and Device context information.<br />
I also like to store the width and height in case I need them. I could use a GetRect call to obtain these when I need them but I like to grab&#8217;em and store them when the window is re-sized. We&#8217;ll see that later.</p>
<p>While you&#8217;re in the View class header add the following method : BOOL SetupPixelFormat();<br />
You can use VC++&#8217;s tool to do this by right-clicking on the View class and then selecting Add Member Function. I recommend using this method as it&#8217;s going to generate the .h statement and the body of the function for you. Here&#8217;s the code I enter into that method. It&#8217;s pretty much the same as every other OpenGL function and I&#8217;ve commented the code so it should make sense. Let me know if you need any further explanation.</p>
<p>BOOL COglm_demoView::SetupPixelFormat()<br />
{<br />
GLuint PixelFormat;<br />
static PIXELFORMATDESCRIPTOR pfd= {<br />
sizeof(PIXELFORMATDESCRIPTOR),<br />
// Size Of This Pixel Format Descriptor<br />
1,<br />
// Version Number (?)<br />
PFD_DRAW_TO_WINDOW |      // Format Must Support Window<br />
PFD_SUPPORT_OPENGL |      // Format Must Support OpenGL<br />
PFD_DOUBLEBUFFER,       // Must Support Double Buffering<br />
PFD_TYPE_RGBA,          // Request An RGBA Format<br />
24,             // Select A 24Bit Color Depth<br />
0, 0, 0, 0, 0, 0, // Color Bits Ignored (?)<br />
0,               // No Alpha Buffer<br />
0,               // Shift Bit Ignored (?)<br />
0,               // No Accumulation Buffer<br />
0, 0, 0, 0,             // Accumulation Bits Ignored (?)<br />
16,             // 16Bit Z-Buffer (Depth Buffer)<br />
0,               // No Stencil Buffer<br />
0,               // No Auxiliary Buffer (?)<br />
PFD_MAIN_PLANE,      // Main Drawing Layer<br />
0,              // Reserved (?)<br />
0, 0, 0       // Layer Masks Ignored (?)<br />
};</p>
<p>m_myhDC = ::GetDC(m_hWnd);    // Gets A Device Context For The Window<br />
PixelFormat = ChoosePixelFormat(m_myhDC, &amp;pfd); // Finds The Closest Match To The Pixel Format We Set Above</p>
<p>if (!PixelFormat)<br />
{<br />
::MessageBox(0,&#8221;Can&#8217;t Find A Suitable PixelFormat.&#8221;,&#8221;Error&#8221;,MB_OK|MB_ICONERROR);<br />
PostQuitMessage(0);<br />
// This Sends A &#8216;Message&#8217; Telling The Program To Quit<br />
return false ;    // Prevents The Rest Of The Code From Running<br />
}</p>
<p>if(!SetPixelFormat(m_myhDC,PixelFormat,&amp;pfd))<br />
{<br />
::MessageBox(0,&#8221;Can&#8217;t Set The PixelFormat.&#8221;,&#8221;Error&#8221;,MB_OK|MB_ICONERROR);<br />
PostQuitMessage(0);<br />
return false;<br />
}</p>
<p>m_hRC = wglCreateContext(m_myhDC);<br />
if(!m_hRC)<br />
{<br />
::MessageBox(0,&#8221;Can&#8217;t Create A GL Rendering Context.&#8221;,&#8221;Error&#8221;,MB_OK|MB_ICONERROR);<br />
PostQuitMessage(0);<br />
return false;<br />
}</p>
<p>if(!wglMakeCurrent(m_myhDC, m_hRC))<br />
{<br />
::MessageBox(0,&#8221;Can&#8217;t activate GLRC.&#8221;,&#8221;Error&#8221;,MB_OK|MB_ICONERROR);<br />
PostQuitMessage(0);<br />
return false;<br />
}</p>
<p>// Now that the screen is setup we can<br />
// initialize OpenGL();<br />
InitGL();<br />
return true;<br />
}</p>
<p>Next you&#8217;ll want to disable the WM_ERASEBACKGROUND message. Without disabling this you&#8217;ll see a nasty flicker in your applications. Do this by returning FALSE from the OnEraseBkgnd() method. Your view won&#8217;t have this by default so you&#8217;ll need to right-click on the view class in the workspace window. Next select &#8220;Add Windows Message Handler&#8221; from the pop-up menu.In the Dialog that opens up look in the list box for the WM_ERASEBKGND message. Finally hit the &#8220;Add and Edit&#8221; button to add this<br />
message handler and edit it. This will point you at the newly created message handler for that message, aka<br />
OnEraseBkgnd(CDC* pDC).</p>
<p>Getting back to disabling this method: in the message handler just return FALSE. Make itlook like this.</p>
<p>BOOL CMfc_basicView::OnEraseBkgnd(CDC* pDC)<br />
{<br />
return FALSE;<br />
}</p>
<p>Alright, we&#8217;re almost half-way there. You&#8217;ll have noticed that in SetupPixelFormat I called a function InitGL(). Let&#8217;s add that function to your View class. This will initialize OpenGL and you can modify it as you see<br />
fit.</p>
<p>void CMfc_basicView::InitGL()<br />
{<br />
// Enables Depth Testing<br />
glEnable(GL_DEPTH_TEST);</p>
<p>// Enable the point size for selected points<br />
glPointSize(5.0f);</p>
<p>// This Will Clear The Background Color To Black<br />
glClearColor(.4, 0.2, 0.0, 0.0f);</p>
<p>// Reset the current projection matrix<br />
SetProjection();</p>
<p>glMatrixMode(GL_MODELVIEW);<br />
glLoadIdentity();</p>
<p>//Enable back face culling, defaults to Clock wise vertices.<br />
glEnable(GL_CULL_FACE);</p>
<p>glEnable(GL_COLOR_MATERIAL);<br />
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);<br />
glShadeModel(GL_SMOOTH);<br />
glPolygonMode(GL_FRONT, GL_FILL);</p>
<p>}</p>
<p>Next we&#8217;ll want to write some code to handle the window resizing. In order to do this we add some code to another message handler. This time it&#8217;s the OnSize Message Handler. Right-click as before and follow the same steps to create the OnSize Message handler. You&#8217;ll notice the &#8220;UINT nType, int cx, int cy&#8221; paramaters that get passed into the method. These are the new width and height, cx and cy, of the window. We can use these to adjust our viewport and<br />
projection matrices like accordingly.</p>
<p>void CMfc_basicView::OnSize(UINT nType, int cx, int cy)<br />
{</p>
<p>CView::OnSize(nType, cx, cy);</p>
<p>glMatrixMode(GL_MODELVIEW);<br />
glLoadIdentity();</p>
<p>// Make the rendering context current<br />
wglMakeCurrent(m_myhDC,m_hRC);</p>
<p>// Reset The Current Viewport And Perspective Transformation<br />
glViewport(0, 0, cx, cy);</p>
<p>m_height= cy;<br />
m_width = cx;</p>
<p>// Calculate The Aspect Ratio Of The Window<br />
gluPerspective(60.0f,<br />
(GLfloat)cx/(GLfloat)cy,<br />
0.1f,<br />
1000.0f);<br />
}</p>
<p>Ok, we just have one more function to add and that&#8217;s this one.</p>
<p>void CMfc_basicView::SetProjection()<br />
{</p>
<p>glViewport(0, 0, m_width, m_height);</p>
<p>// Reset The Projection Matrix<br />
glMatrixMode(GL_PROJECTION);<br />
glLoadIdentity();</p>
<p>// It&#8217;s a perspective projection<br />
// Calculate The Aspect Ratio Of The Window<br />
gluPerspective(60.0f,(GLfloat)m_width/(GLfloat)m_height, 0.1f,3000.0f);<br />
}</p>
<p>This is just a simple function I use sometimes to reset the projection matrices. It&#8217;s up to you if you want to include this in your project.</p>
<p>So where do we put the Drawing code? Before we do that let&#8217;s link in the OpenGL libraries we need. Go the Project Menu and select Settings. Hit the Link tab and add the following statements to the end of the library entries.</p>
<p>opengl32.lib glu32.lib glut.lib glaux.lib</p>
<p>Next we want to add the call to SetupPixelFormat. The best time to do this is on window creation, just like you&#8217;d do in a normal win32 application. For this we&#8217;ll make use of the OnCreate message handler. Add this as you&#8217;ve added the other message handlers. Here&#8217;s the code to call the SetupPixelFormat function. Note I&#8217;ve added the call to wglMakeCurrent(NULL,NULL). This gives up the context to other processes.</p>
<p>int CMfc_basicView::OnCreate(LPCREATESTRUCT lpCreateStruct)<br />
{<br />
if (CView::OnCreate(lpCreateStruct) == -1)<br />
return -1;</p>
<p>SetupPixelFormat();<br />
wglMakeCurrent(NULL,NULL);</p>
<p>return 0;<br />
}</p>
<p>Let&#8217;s compile, hit Ctrl-F5 and you should get a working application that just draws a window. It won&#8217;t even clear the screen for you. We need to add some drawing code. I&#8217;ve added a call to draw a few Toruses.</p>
<p>/////////////////////////////////////////////////////////////////////////////<br />
// CMfc_basicView drawing<br />
// This function draws three toruses on the screen and rotates them<br />
// Replace this with your own drawing code.<br />
//<br />
void CMfc_basicView::OnDraw(CDC* pDC)<br />
{<br />
// Integer declared as static so the value is maintained<br />
static int i=0;</p>
<p>// Increase i, this is the rotation value.<br />
i += 1.11;</p>
<p>// Make the rendering context current as we&#8217;re about to<br />
// draw into it<br />
wglMakeCurrent(m_myhDC,m_hRC);</p>
<p>// Clear the screen and the depth buffer<br />
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</p>
<p>// Reset the model matrix<br />
glMatrixMode(GL_MODELVIEW);<br />
glLoadIdentity();</p>
<p>// Translate to a suitable position<br />
glTranslatef(0,0,-100);</p>
<p>// We&#8217;re going to draw using this color. ( an orange )<br />
glColor3f( 0.89f, 0.36f, 0.0f);</p>
<p>// Rotate to some angle (i)<br />
glRotatef(i, 1,0,0);<br />
glRotatef(i ,0,1,0);<br />
glRotatef(i ,0,0,1);</p>
<p>// Draw the first torus.<br />
auxSolidTorus( 8,50);</p>
<p>// Rotate some more and draw the second.<br />
glRotatef(i ,0,1,0);<br />
glRotatef(i ,0,0,1);<br />
auxSolidTorus( 8,30);</p>
<p>// Rotate some more and draw the third<br />
glRotatef(-i ,0,1,0);<br />
glRotatef(i ,0,0,1);<br />
auxSolidTorus( 8,10);</p>
<p>// Swap the virtual screens<br />
SwapBuffers(m_myhDC);</p>
<p>// Invalidate the window as we&#8217;re<br />
// ready to draw another frame<br />
Invalidate(FALSE);</p>
<p>}</p>
<p>And that&#8217;s it. Ths application is complete. Obviously this can be improved, the app only draws three toruses. It also uses a lot of CPU in idle time. I left these features as they are since I only wanted to illustrate the use of OpenGL with MFC. If you&#8217;d like to experiment, take this code and run with it. I&#8217;ll be happy to post anything you come up with. I hope found this TUT useful, if you did let me know.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://francisshanahan.com/index.php/2000/using-opengl-with-mfc/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
	</channel>
</rss>
