<?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>philihp.com &#187; Uncategorized</title>
	<atom:link href="http://www.philihp.com/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.philihp.com/blog</link>
	<description>I do things, and then I tell the internet about them.</description>
	<lastBuildDate>Mon, 06 Feb 2012 05:40:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Maximum sizes of MySQL Blob Fields</title>
		<link>http://www.philihp.com/blog/2011/maximum-sizes-of-mysql-blob-fields/</link>
		<comments>http://www.philihp.com/blog/2011/maximum-sizes-of-mysql-blob-fields/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 03:36:26 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=704</guid>
		<description><![CDATA[This is not immediately obvious from the documentation(, which as it seems is often the case, was written for people who just like to read documentation, and not for people who are looking for answers). The maximum sizes of the MySQL Blob fields are as follows: Type What They Say It Needs That Means You Get [...]]]></description>
			<content:encoded><![CDATA[<p>This is not immediately obvious from the <a href="http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html">documentation</a>(, which as it seems is often the case, was written for people who just like to read documentation, and not for people who are looking for answers).</p>
<p>The maximum sizes of the MySQL Blob fields are as follows:</p>
<table border="1" cellspacing="0" cellpadding="4">
<tr>
<th>Type</th>
<th>What They Say It Needs</th>
<th>That Means You Get</th>
</tr>
<tr>
<td>TINYBLOB</td>
<td>L+1 bytes, where L &lt; 2<sup>8</sup></td>
<td>256 bytes</td>
</tr>
<tr>
<td>BLOB</td>
<td>L+2 bytes, where L &lt; 2<sup>16</sup></td>
<td>65 kilobytes</td>
</tr>
<tr>
<td>MEDIUMBLOB</td>
<td>L+3 bytes, where L &lt; 2<sup>24</sup></td>
<td>16 megabytes</td>
</tr>
<tr>
<td>LONGBLOB</td>
<td>L+4 bytes, where L &lt; 2<sup>32</sup></td>
<td>4 gigabytes</td>
</tr>
</table>
<p>There. Now it&#8217;s on the Internet and people can find the answer to this question. The world is a better place.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2011/maximum-sizes-of-mysql-blob-fields/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using SAS/OR to solve Sudoku puzzles</title>
		<link>http://www.philihp.com/blog/2011/using-sasor-to-solve-sudoku-puzzles/</link>
		<comments>http://www.philihp.com/blog/2011/using-sasor-to-solve-sudoku-puzzles/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 19:41:47 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=680</guid>
		<description><![CDATA[I just got back from SAS Global Forum 2011 and heard about this really cool package called SAS/OR (Operations Research). Within it, there&#8217;s a procedure called CLP, which does nothing short of programming voodoo. The CLP procedure is a finite-domain constraint programming solver for constraint satisfaction problems (CSPs) with linear, logical, global, and scheduling constraints. [...]]]></description>
			<content:encoded><![CDATA[<p>I just got back from <a href="http://support.sas.com/events/sasglobalforum/2011/">SAS Global Forum 2011</a> and heard about this really cool package called SAS/OR (Operations Research).</p>
<p>Within it, there&#8217;s a procedure called CLP, which does nothing short of programming voodoo.</p>
<blockquote><p>The CLP procedure is a finite-domain constraint programming solver for constraint satisfaction<br />
problems (CSPs) with linear, logical, global, and scheduling constraints.</p></blockquote>
<p>Basically, you tell it your <a href="http://www.facebook.com/MikeTheSituation">situation</a>, and it tells you a solution. In the following example (<a href="http://support.sas.com/documentation/cdl/en/orcpug/63349/PDF/default/orcpug.pdf">pulled straight from the documentation</a>), we tell it what the final solution of a sudoku would look like, and we give it a puzzle. Then it solves it for us.</p>

<div class="wp_syntax"><div class="code"><pre class="sas" style="font-family:monospace;"><span style="color: #000080; font-weight: bold;">proc clp</span> out=outdata;
	<span style="color: #006400; font-style: italic;">/* Define variables */</span>
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_1_1-X_1_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_2_1-X_2_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_3_1-X_3_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_4_1-X_4_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_5_1-X_5_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_6_1-X_6_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_7_1-X_7_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_8_1-X_8_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #0000ff;">var</span> <span style="color: #66cc66;">&#40;</span>X_9_1-X_9_9<span style="color: #66cc66;">&#41;</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #2e8b57; font-weight: bold;">1</span>,<span style="color: #2e8b57; font-weight: bold;">9</span><span style="color: #66cc66;">&#93;</span>;
	<span style="color: #006400; font-style: italic;">/* Tell PROC CLP that all rows must be different */</span>
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_1-X_1_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_2_1-X_2_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_3_1-X_3_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_4_1-X_4_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_5_1-X_5_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_6_1-X_6_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_7_1-X_7_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_8_1-X_8_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_9_1-X_9_9<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #006400; font-style: italic;">/* Tell PROC CLP that all columns must be different */</span>
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_1 X_2_1 X_3_1 X_4_1 X_5_1 X_6_1 X_7_1 X_8_1 X_9_1<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_2 X_2_2 X_3_2 X_4_2 X_5_2 X_6_2 X_7_2 X_8_2 X_9_2<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_3 X_2_3 X_3_3 X_4_3 X_5_3 X_6_3 X_7_3 X_8_3 X_9_3<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_4 X_2_4 X_3_4 X_4_4 X_5_4 X_6_4 X_7_4 X_8_4 X_9_4<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_5 X_2_5 X_3_5 X_4_5 X_5_5 X_6_5 X_7_5 X_8_5 X_9_5<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_6 X_2_6 X_3_6 X_4_6 X_5_6 X_6_6 X_7_6 X_8_6 X_9_6<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_7 X_2_7 X_3_7 X_4_7 X_5_7 X_6_7 X_7_7 X_8_7 X_9_7<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_8 X_2_8 X_3_8 X_4_8 X_5_8 X_6_8 X_7_8 X_8_8 X_9_8<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_9 X_2_9 X_3_9 X_4_9 X_5_9 X_6_9 X_7_9 X_8_9 X_9_9<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #006400; font-style: italic;">/* Tell PROC CLP that all clusters must be different */</span>
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_1 X_1_2 X_1_3 X_2_1 X_2_2 X_2_3 X_3_1 X_3_2 X_3_3<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_4 X_1_5 X_1_6 X_2_4 X_2_5 X_2_6 X_3_4 X_3_5 X_3_6<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_1_7 X_1_8 X_1_9 X_2_7 X_2_8 X_2_9 X_3_7 X_3_8 X_3_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_4_1 X_4_2 X_4_3 X_5_1 X_5_2 X_5_3 X_6_1 X_6_2 X_6_3<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_4_4 X_4_5 X_4_6 X_5_4 X_5_5 X_5_6 X_6_4 X_6_5 X_6_6<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_4_7 X_4_8 X_4_9 X_5_7 X_5_8 X_5_9 X_6_7 X_6_8 X_6_9<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_7_1 X_7_2 X_7_3 X_8_1 X_8_2 X_8_3 X_9_1 X_9_2 X_9_3<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_7_4 X_7_5 X_7_6 X_8_4 X_8_5 X_8_6 X_9_4 X_9_5 X_9_6<span style="color: #66cc66;">&#41;</span>;
	alldiff<span style="color: #66cc66;">&#40;</span>X_7_7 X_7_8 X_7_9 X_8_7 X_8_8 X_8_9 X_9_7 X_9_8 X_9_9<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #006400; font-style: italic;">/* Linear conditions... (starting point) */</span>
	lincon X_1_3 = <span style="color: #2e8b57; font-weight: bold;">5</span>;
	lincon X_1_6 = <span style="color: #2e8b57; font-weight: bold;">7</span>;
	lincon X_1_9 = <span style="color: #2e8b57; font-weight: bold;">1</span>;
	lincon X_2_2 = <span style="color: #2e8b57; font-weight: bold;">7</span>;
	lincon X_2_5 = <span style="color: #2e8b57; font-weight: bold;">9</span>;
	lincon X_2_8 = <span style="color: #2e8b57; font-weight: bold;">3</span>;
	lincon X_3_4 = <span style="color: #2e8b57; font-weight: bold;">6</span>;
	lincon X_4_3 = <span style="color: #2e8b57; font-weight: bold;">3</span>;
	lincon X_4_6 = <span style="color: #2e8b57; font-weight: bold;">1</span>;
	lincon X_4_9 = <span style="color: #2e8b57; font-weight: bold;">5</span>;
	lincon X_5_2 = <span style="color: #2e8b57; font-weight: bold;">9</span>;
	lincon X_5_5 = <span style="color: #2e8b57; font-weight: bold;">8</span>;
	lincon X_5_8 = <span style="color: #2e8b57; font-weight: bold;">2</span>;
	lincon X_6_1 = <span style="color: #2e8b57; font-weight: bold;">1</span>;
	lincon X_6_4 = <span style="color: #2e8b57; font-weight: bold;">2</span>;
	lincon X_6_7 = <span style="color: #2e8b57; font-weight: bold;">4</span>;
	lincon X_7_3 = <span style="color: #2e8b57; font-weight: bold;">2</span>;
	lincon X_7_6 = <span style="color: #2e8b57; font-weight: bold;">6</span>;
	lincon X_7_9 = <span style="color: #2e8b57; font-weight: bold;">9</span>;
	lincon X_8_5 = <span style="color: #2e8b57; font-weight: bold;">4</span>;
	lincon X_8_8 = <span style="color: #2e8b57; font-weight: bold;">8</span>;
	lincon X_9_1 = <span style="color: #2e8b57; font-weight: bold;">8</span>;
	lincon X_9_4 = <span style="color: #2e8b57; font-weight: bold;">1</span>;
	lincon X_9_7 = <span style="color: #2e8b57; font-weight: bold;">5</span>;
<span style="color: #000080; font-weight: bold;">run</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">NOTE: Variable selection strategy: MINR.
NOTE: Value selection strategy: MIN.
NOTE: Preprocessing: ON
NOTE: Number of ALLDIFF constraints: 27.
NOTE: Number of LINEAR constraints: 24.
NOTE: Total number of arrays: 0.
NOTE: Total number of variables: 81.
NOTE: Total number of constraints: 51.
NOTE: Required number of solutions found (1).
NOTE: The data set WORK.OUTDATA has 1 observations and 81 variables.
NOTE: PROCEDURE CLP used (Total process time):
      real time           0.05 seconds
      cpu time            0.04 seconds
&nbsp;
&nbsp;
STATUS=OK SOLUTION_STATUS=SOLN_LIMIT_REACHED SOLUTIONS_FOUND=1 SOLUTION_TIME=0.00</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">X_1_1=9 X_1_2=8 X_1_3=5 X_1_4=3 X_1_5=2 X_1_6=7 X_1_7=6 X_1_8=4 X_1_9=1
X_2_1=6 X_2_2=7 X_2_3=1 X_2_4=5 X_2_5=9 X_2_6=4 X_2_7=2 X_2_8=3 X_2_9=8
X_3_1=3 X_3_2=2 X_3_3=4 X_3_4=6 X_3_5=1 X_3_6=8 X_3_7=9 X_3_8=5 X_3_9=7
X_4_1=2 X_4_2=4 X_4_3=3 X_4_4=7 X_4_5=6 X_4_6=1 X_4_7=8 X_4_8=9 X_4_9=5
X_5_1=5 X_5_2=9 X_5_3=7 X_5_4=4 X_5_5=8 X_5_6=3 X_5_7=1 X_5_8=2 X_5_9=6
X_6_1=1 X_6_2=6 X_6_3=8 X_6_4=2 X_6_5=5 X_6_6=9 X_6_7=4 X_6_8=7 X_6_9=3
X_7_1=4 X_7_2=5 X_7_3=2 X_7_4=8 X_7_5=3 X_7_6=6 X_7_7=7 X_7_8=1 X_7_9=9
X_8_1=7 X_8_2=1 X_8_3=6 X_8_4=9 X_8_5=4 X_8_6=5 X_8_7=3 X_8_8=8 X_8_9=2
X_9_1=8 X_9_2=3 X_9_3=9 X_9_4=1 X_9_5=7 X_9_6=2 X_9_7=5 X_9_8=6 X_9_9=4</pre></div></div>

<p>But it gets even cooler! We can use the <a href="http://support.sas.com/documentation/cdl/en/orcpug/59630/HTML/default/orcpug_clp_sect010.htm#orcpug.clp.a0000000112">FINDALLSOLNS</a> option and it will tell us all the possible solutions to the puzzle&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">STATUS=OK SOLUTION_STATUS=ALL_SOLUTIONS SOLUTIONS_FOUND=125 SOLUTION_TIME=0.08</pre></div></div>

<p>And by browsing the output, we can know that there are only 3 possible solutions where row 9, column 3 is a &#8217;6&#8242;, which makes for a much more difficult puzzle.</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">STATUS=OK SOLUTION_STATUS=ALL_SOLUTIONS SOLUTIONS_FOUND=3 SOLUTION_TIME=0.00</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2011/using-sasor-to-solve-sudoku-puzzles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Things I Learned from Wiring a Car Stereo</title>
		<link>http://www.philihp.com/blog/2011/things-i-learned-from-wiring-a-car-stereo/</link>
		<comments>http://www.philihp.com/blog/2011/things-i-learned-from-wiring-a-car-stereo/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 17:33:40 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=639</guid>
		<description><![CDATA[So I just finished installing a car stereo into my car. I wanted to do it myself to learn as much a possible. This post is to share bits of information that were previously buried on message boards, or were myths that car audio shops had previously told me (or debunked for me). DISCLAIMER: I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_644" class="wp-caption alignright" style="width: 160px"><a href="http://linode.philihp.com/blog/wp-content/uploads/2011/03/S2000Wiring2.png"><img src="http://linode.philihp.com/blog/wp-content/uploads/2011/03/S2000Wiring2-150x150.png" alt="S2000 Wiring Diagram" title="S2000 Wiring Diagram" width="150" height="150" class="size-thumbnail wp-image-644" /></a><p class="wp-caption-text">S2000 Wiring Diagram</p></div>So I just finished installing a car stereo into my car. I wanted to do it myself to learn as much a possible. This post is to share bits of information that were previously buried on message boards, or were myths that car audio shops had previously told me (or debunked for me).</p>
<p>DISCLAIMER: I&#8217;m not a professional, any of this could be false, I just want to share what I now know.</p>
<h3>Running power</h3>
<ul>
<li>The entire chassis is grounded. This is why you remove the black contact first when installing a battery; you don&#8217;t want the red contact to brush up against the chassis and cause a short.</li>
<li>Shorts are bad, because resistance approaches zero, and Voltage=Current*Resistance. Voltage is a constant 12 volts, and all that current gets converted to heat (fire)</li>
<li>Install fuses as close to the battery as possible. This reduces the risk of a short by accidentally touching the red wire to the chassis.</li>
<li>Your amp should have fuses on it (e.g. mine each had two 25A fuses). Add up the total amperage, and use a fuse near the battery slightly higher than this (I used a 60A fuse going to each amp).</li>
<li>Battery power to the amps is DC, while lines going from the amps to the speakers is AC. This is why you need expensive high gauge wire for power, but speaker wire can be relatively thin in comparison.</li>
<li>It is a half-myth that electricity travels on the surface of the wire. This is only true for AC power, and should be <i>most</i> current travels on the surface, not all; so high thread-count for AC is important and not for DC. It is called the <a href="http://en.wikipedia.org/wiki/Skin_effect">skin effect</a>, and happens because at every point in a cross section of a wire, magnetic flux is inducing back EMF causing resistance, and the center of the wire is subject to highest amount of this. DC has no alternating flux, so this doesn&#8217;t happen, and resistance is even across the cross section of the wire. <i>However</i> high threadcount wire can be bent more before breaking, so it&#8217;s easier to snake around corners; that&#8217;s really the only advantage of it for power wire.</li>
<li>Avoid cheap alloy wires that are copper-coated. You can tell by looking at the ends of the wires where it is cut; it should be solid copper. Pure copper wire is fairly heavy too. If you get this wire, make sure it has low resistance.</li>
<li>At high amperages, the resistance of the power wire becomes significant. Calculate amps by watts = amps * volts (where volts is 12). If too much current goes through, too much heat is created which melts the insulation off and the wire touches the chassis which is grounded and causes a short. Since you installed a fuse, it will blow rather than your car catching on fire.</li>
<li>When grounding the amps, use the same gauge you used for running power. The same amount of current flows through them. Since the chassis is grounded, they can be terminated by bolting these to the chassis. Sand down the area where they&#8217;re bolted, because it&#8217;s probably painted (to stop rust and corrosion).
  </ul>
<h3>Amps and Speakers</h3>
<ul>
<li>Class D amps are good for subwoofers. They are generally 2/1 channel, which means they have 2 channels, but you can &#8220;bridge&#8221; the two together to get twice the boost for one channel.</li>
<li>Ignore the &#8220;max&#8221; watts of a speaker or amp, and only pay attention to RMS (Root Mean Square), which is essentially the &#8220;average&#8221; power of a speaker or amp. Don&#8217;t buy speakers who don&#8217;t list this, unless they are free, which in that case they are probably half of the &#8220;rated&#8221; power.</li>
<li>Pair your amp to your speakers; which means get an amp with slightly more average power than the speakers.</li>
<li>It is better to have underpowered speakers than an underpowered amp. If your volume goes too high the amp will start <a href="http://en.wikipedia.org/wiki/Clipping_(audio)">clipping</a> at peaks and troughs. At these points, pure DC is sent over the line rather than AC. DC creates heat which burns out the coils in your speakers. This is how speakers are usually blown.</li>
<li>Do not run signal wires parallel to power. If they cross, make it happen perpendicularly. Electrical <a href="http://en.wikipedia.org/wiki/Electromagnetic_induction">Induction</a> is a magical thing that you should avoid because it makes phantom buzzing in your music.</li>
</ul>
<h3>Headunits</h3>
<ul>
<li>This is the thing that goes in the dash, and is usually the flashiest and most superficial of things.</li>
<li>All Alpine headunits have RCA plugs out that go to the amp. This is not always the case for other makers.</li>
<li>There is a blue wire in the wiring harness somewhere; this should be run to the &#8220;remote&#8221; terminal on your amps. It is how the car tells the stereo that the car is on (rather than parked idle); without this your amps would always be on, and always be draining your battery. It&#8217;s very low current, so really thin wire will suffice.</li>
</ul>
<h3>Crossovers</h3>
<ul>
<li>They separate high frequencies and low frequencies.</li>
<li>These are electrically very simple things. You can build them yourself if you can solder. Don&#8217;t spend a lot of money on them.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2011/things-i-learned-from-wiring-a-car-stereo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excel 2010&#8242;s Default AutoRecover Location</title>
		<link>http://www.philihp.com/blog/2010/excel-2010s-default-autorecover-location/</link>
		<comments>http://www.philihp.com/blog/2010/excel-2010s-default-autorecover-location/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 02:23:57 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[AutoRecover]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Office]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=633</guid>
		<description><![CDATA[And so the only thing you need to know about Excel&#8217;s AutoRecover is this: the default path for Excel is: C:UsersyouApplication DataMicrosoftExcel Keep in mind, Application Data is usually a hidden folder, so you might not see it. It is still there.]]></description>
			<content:encoded><![CDATA[<p>And so the only thing you need to know about Excel&#8217;s AutoRecover is this: the default path for Excel is:</p>
<blockquote><p>C:Users<i>you</i>Application DataMicrosoftExcel</p></blockquote>
<p>Keep in mind, Application Data is usually a hidden folder, so you might not see it. It is still there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2010/excel-2010s-default-autorecover-location/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Family Reunion Problem</title>
		<link>http://www.philihp.com/blog/2009/the-family-reunion-problem/</link>
		<comments>http://www.philihp.com/blog/2009/the-family-reunion-problem/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 23:30:26 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=502</guid>
		<description><![CDATA[Here&#8217;s an interesting problem. I would like to call this the family reunion problem. As far as I know, this problem hasn&#8217;t been stated or generalized anywhere else. But maybe it has? Suppose a set of people live in different cities and wish to have a reunion. They&#8217;re fairly far apart such that they&#8217;ll be [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an interesting problem. I would like to call this the family reunion problem. As far as I know, this problem hasn&#8217;t  been stated or generalized anywhere else. But maybe it has?</p>
<p>Suppose a set of people live in different cities and wish to have a reunion. They&#8217;re fairly far apart such that they&#8217;ll be flying, cost is an issue. Everyone is indifferent as to the city, but they wish to minimize the total travel cost of the trip.</p>
<p>The family consists of the following people:</p>
<ul>
<li>Alice living in Boston</li>
<li>Bobby living in Miami</li>
<li>Cindy living in Los Angeles</li>
<li>David living in Seattle</li>
<li>Euclid living in San Francisco</li>
</ul>
<p>Costs to fly between each city are given in this matrix:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<th></th>
<th>BOS</th>
<th>MIA</th>
<th>LAX</th>
<th>SEA</th>
</tr>
<tr>
<th>SFO</th>
<td>218</td>
<td>233</td>
<td>98</td>
<td>98</td>
</tr>
<tr>
<th>SEA</th>
<td>218</td>
<td>238</td>
<td>138</td>
</tr>
<tr>
<th>LAX</th>
<td>218</td>
<td>283</td>
</tr>
<tr>
<th>MIA</th>
<td>168</td>
</tr>
</tbody>
</table>
<p>Which member of the family should host the reunion?</p>
<p>Of course this is easy with just 4 people, but family reunions usually have many times this. And family reunions don&#8217;t necessarily have to be held in a home city; it could be an entirely new venue.</p>
<p>My intuition tells me this is <a href="http://en.wikipedia.org/wiki/NP_(complexity)" target="_blank">NP-Complete</a>, but it has been a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2009/the-family-reunion-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AT&amp;T U-Verse DNS Loopback workaround for 3800HGV-B</title>
		<link>http://www.philihp.com/blog/2009/att-u-verse-dns-loopback-workaround-for-3800hgv-b/</link>
		<comments>http://www.philihp.com/blog/2009/att-u-verse-dns-loopback-workaround-for-3800hgv-b/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 20:18:56 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=428</guid>
		<description><![CDATA[AT&#038;T&#8217;s U-Verse network just came up on my street. So&#8230; since the gateway doubles as a router &#038; switch, I was trying to set it up so my httpd server was accessible from the outside. Setup the port forwarding through the firewall just fine, and indeed everything works for the rest of the internet. All [...]]]></description>
			<content:encoded><![CDATA[<p>AT&#038;T&#8217;s U-Verse network just came up on my street.</p>
<p>So&#8230; since the gateway doubles as a router &#038; switch, I was trying to set it up so my httpd server was accessible from the outside. Setup the port forwarding through the firewall just fine, and indeed everything works for the rest of the internet. All of you should be able to get to <a href="http://shatner.philihp.com">shatner.philihp.com</a>.</p>
<p>However I can&#8217;t. From what I gather, the gateway doesn&#8217;t support DNS loopback. So when I resolve shatner.philihp.com, it resolves to my WAN IP, then I try to connect to it and I timeout. It&#8217;s similar to the problem <a href="http://utalk.att.com/utalk/board/message?message.uid=131452">this guy</a> had with his FTP server.</p>
<p><a href="http://www.facebook.com/eric.devaudreuil">Eric DeVaudreuil</a> suggested that if I could get the DNS on the gateway to resolve the domain differently for LAN users, it would work. And it looks like from <a href="http://www.scribd.com/doc/3849281/3800HGVB-Uverse-Router-Userguide">the manual</a>, that there used to be a quazi-secret management console that had a &#8220;DNS Resolve&#8221; page for doing just this. However <a href="http://www.dslreports.com/forum/r19987755-2Wire-Cross-Site-Request-Forgery-Vulnerability">a recent firmware upgrade</a> totally removed this in order to fix some XSS attack. So that&#8217;s out of the picture.</p>
<p><a href="http://www.dd-wrt.com/phpBB2/viewtopic.php?p=260542">this guy</a> got around it by setting up a router behind his gateway&#8230; I suppose I could do this, but it seems like overkill for something that should just work.</p>
<p><a href="http://www.experts-exchange.com/Hardware/Networking_Hardware/Firewalls/Q_23447320.html">Someone at Experts-Exchange</a> says it can&#8217;t be done&#8230; but over there they use a sort of &#8220;democratic truth&#8221; similar to the abomination that is <a href="http://answers.yahoo.com/question/index?qid=20061201000344AAGkURf">Yahoo Answers</a>; so I wouldn&#8217;t believe much I see there.</p>
<p>Right now, I have this working solution/workaround. Admittedly it doesn&#8217;t scale well, but this isn&#8217;t an issue when my network is under half a dozen devices. My solution is just to add in lines to my /etc/hosts file for all of my machines to make the domain resolve to the LAN IP of the HTTP server, rather than the WAN IP. The only drawback/annoyance to this is with my laptop which constantly goes in and out of the local network.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2009/att-u-verse-dns-loopback-workaround-for-3800hgv-b/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Beep!</title>
		<link>http://www.philihp.com/blog/2009/beep/</link>
		<comments>http://www.philihp.com/blog/2009/beep/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:39:40 +0000</pubDate>
		<dc:creator>philihp</dc:creator>
				<category><![CDATA[Graphs]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Beep]]></category>

		<guid isPermaLink="false">http://www.philihp.com/blog/?p=350</guid>
		<description><![CDATA[Make my computer beep. Go here: http://shatner.philihp.com/beep/]]></description>
			<content:encoded><![CDATA[<p>Make my computer beep. Go here: <a href="http://shatner.philihp.com/beep/">http://shatner.philihp.com/beep/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.philihp.com/blog/2009/beep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

