<?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>JWC.blog</title>
	<atom:link href="http://blog.jwcxz.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.jwcxz.com</link>
	<description>A(nother) Blog of Geekery and Whatnot</description>
	<lastBuildDate>Thu, 26 Aug 2010 00:07:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Setting up Remote Nightly Backups</title>
		<link>http://blog.jwcxz.com/?p=638</link>
		<comments>http://blog.jwcxz.com/?p=638#comments</comments>
		<pubDate>Thu, 26 Aug 2010 00:07:37 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=638</guid>
		<description><![CDATA[Unfortunately, my hosting provider had a hardware failure and I lost quite a bit of data (everything got rolled back to an 8/17 backup), so I decided to use dar to take nightly differential backups of my home directory (as well as regular backups of various other dirs and databases). Here is a simple script [...]]]></description>
			<content:encoded><![CDATA[<p>Unfortunately, my hosting provider had a hardware failure and I lost quite a bit of data (everything got rolled back to an 8/17 backup), so I decided to use <a href="http://dar.linux.free.fr/">dar</a> to take nightly differential backups of my home directory (as well as regular backups of various other dirs and databases).</p>
<p>Here is a simple script to remotely take a differential backup of one target server from another.<br />
<a href="http://jwcxz.com/other/backup/servernightly.sh">http://jwcxz.com/other/backup/servernightly.sh</a></p>
<p>This script is then run from the target server and can be run as a cron job without any modifications.  The only caveat is that since this script is only designed to take differential backups, you need to take a full backup first with:</p>
<pre>
ssh $butgt "dar -c - -z -m 150 -R $butgtdir -q -K :"`cat $bukey` > `date "+$budir/$bupfx-%y-%m-%d_%H-%M.1.dar"`
</pre>
<p>from the <em>other</em> server.</p>
<p>All of the action happens on the last two lines (they&#8217;re just modifications from the recommendations on dar&#8217;s <a href="http://dar.linux.free.fr/doc/Notes.html#XII">notes page</a>).  The first of these lines sets up dar_slave, which handles retrieving data from the reference backup to determine which files have been changed.  The second is kind of weird since it has an ssh connection within another, but it just tells the backup server to instruct the target server to start taking backups.  The backup is named prefix-year-month-day_hour-minute.1.dar.  Typically, the differential backups are only a few megs for my home directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=638</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LED Wall Lamp Schematics and PCB Layout</title>
		<link>http://blog.jwcxz.com/?p=636</link>
		<comments>http://blog.jwcxz.com/?p=636#comments</comments>
		<pubDate>Tue, 24 Aug 2010 04:50:28 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=636</guid>
		<description><![CDATA[(Note: a hardware failure caused this post, originally posted August 17, to be lost&#8230;) I’ve pretty much finalized the schematics for the wall lamps. They’re available as a PDF or as a gschem file (with a symbol for the TLC5926). I chose TI’s TLC5926 to drive the LEDs. It is a constant current sink, so [...]]]></description>
			<content:encoded><![CDATA[<p>(Note: a hardware failure caused this post, originally posted August 17, to be lost&#8230;)</p>
<p>I’ve pretty much finalized the schematics for the wall lamps.  They’re available as a <a href="http://jwcxz.com/projects/acris/ledpcb/lamp.pdf">PDF</a> or as a <a href="http://jwcxz.com/projects/acris/ledpcb/lamp.sch">gschem file</a> (with a <a href="http://jwcxz.com/projects/acris/ledpcb/tlc5926.sym">symbol for the TLC5926</a>).</p>
<p>I chose TI’s <a href="http://focus.ti.com/docs/prod/productfolder.jhtml?genericPartNumber=TLC5926">TLC5926</a> to drive the LEDs.  It is a constant current sink, so it can drive  common anode LEDs.  It has 16 output channels, each capable of sinking  up to 120mA, and the outputs can be placed in parallel.</p>
<p>I decided to order some professionally-printed boards from <a href="http://expresspcb.com/">ExpressPCB</a>.   I used their PCB layout tool (which runs fine in Linux under Wine) to  create a board that could handle sinking up to a total of about 6A  (roughly 2A per channel):</p>
<p style="text-align: center;"><a href="http://jwcxz.com/projects/acris/ledpcb/pcb-both.png"><img class="aligncenter" src="http://jwcxz.com/projects/acris/ledpcb/pcb-both_t.png" alt="" width="400" height="333" /></a></p>
<p style="text-align: center;"><a href="http://jwcxz.com/projects/acris/ledpcb/pcb-bottom.png"><img class="aligncenter" src="http://jwcxz.com/projects/acris/ledpcb/pcb-bottom_t.png" alt="" width="400" height="333" /></a></p>
<p>You can grab the PCB layout file <a href="http://jwcxz.com/projects/acris/ledpcb/drivers.pcb">here</a>.</p>
<p>The 5926 is controlled by serial input, which should be a good way to  get data over long distances.  So, I wired up a DB9 connector with all  of the relevant data lines that will come from the FPGA.</p>
<p>The boards should be here in a few days; ExpressPCB has really fast  turnaround time for their MiniBoard service.  I’ll end up with 6 of  them, which will probably be useful if (i.e. when) I mess something up.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=636</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DIY Etching of QSOP Traces</title>
		<link>http://blog.jwcxz.com/?p=628</link>
		<comments>http://blog.jwcxz.com/?p=628#comments</comments>
		<pubDate>Mon, 16 Aug 2010 04:49:19 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[etch]]></category>
		<category><![CDATA[ferric chloride]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[qsop]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=628</guid>
		<description><![CDATA[Last week, I finally found some current sinking LED drivers that would work well with the LEDs that I chose for the wall lamps.  The TLC5926 has pretty much exactly the capability that I need to power these LED arrays.  Because the LEDs have a common anode instead of a common cathode, it is necessary [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, I finally found some current sinking LED drivers that would work well with the <a href="http://blog.jwcxz.com/?p=612">LEDs that I chose</a> for the wall lamps.  The <a href="http://focus.ti.com/docs/prod/folders/print/tlc5926.html"> TLC5926</a> has pretty much exactly the capability that I need to power these LED arrays.  Because the LEDs have a common anode instead of a common cathode, it is necessary to use constant current sinks instead of sources because they sit between the LED and ground.</p>
<p>Unfortunately, the only ones I could find in stock were in TI&#8217;s ultra-small QSOP package (other manufacturers use the term &#8220;SSOP&#8221;).  After they arrived, I realized that it would be pretty difficult to prototype with them.  Eventually, I planned to order PCBs from <a href="http://expresspcb.com">ExpressPCB</a> (more on that later), but I wanted a quick way to access one of the drivers I had purchased for testing.  I started by trying some 30-gauge wrapping wire, but neither of my attempts yielded anything decent.</p>
<p style="text-align: center;"><a href="http://jwcxz.com/projects/acris/pics/tlc5926-1.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-1_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-2.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-2_t.jpg" alt="" width="400" height="300" /></a></p>
<p>I then began reading about DIY PCB etching.  I&#8217;ve wanted to try this for a long time now (I even had a bottle of ferric chloride just waiting to be used).  Unfortunately, I don&#8217;t have a laser printer.  We do, however, have an old, half-broken laser copier, which decorates copied documents with ghost images and random streaks.  I couldn&#8217;t find any information on manually etching QSOP traces (they&#8217;re so small that I was almost positive either the inkjet printer or the copier wouldn&#8217;t have the resolution required to print the traces out).  So, I tried it out anyways.  I managed to print a simple breakout design and transfer it onto  the board using glossy photo paper, heating the board with an iron (on its highest temperature) for about 30 seconds, putting the transfer paper onto the board, and then just holding the iron in place for about 5 minutes.  After transferring the toner, part of the paper came off very easily, but the other piece needed to be dissolved away in water.</p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-3.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-3_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-4.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-4_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-5.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-5_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-6.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-6_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-7.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-7_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-8.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-8_t.jpg" alt="" width="400" height="300" /></a></p>
<p>Next, it was time for the ferric chloride.  It&#8217;s pretty nasty stuff, so we did all of the work outside.  After about 45 minutes of swishing the board around (we should have masked more of the PCB to speed up the process), the copper had dissolved, and I washed the masked traces  off with some acetone.</p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-9.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-9_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-10.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-10_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-11.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-11_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-12.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-12_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-13.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-13_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-14.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-14_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-15.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-15_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/tlc5926-16.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/tlc5926-16_t.jpg" alt="" width="400" height="300" /></a></p>
<p>Finally, it was just a matter of soldering the device onto the board.  To do this, I soldered all of the pins together and then used a wick to wipe away all the bridges, leaving nicely soldered joints.  If you saw the pictures above, you probably noticed that the traces aren&#8217;t the right size!  This is a result of the old copier we have; it somehow slightly changed the paper size.  Fortunately, it doesn&#8217;t matter for this chip, which only uses the first four pins on each side individually, while the rest of the pins are all combined together to act as one big current sink.</p>
<p>Surprisingly, it&#8217;s quite possible to etch QSOP-sized traces using the &#8220;standard&#8221; method of DIY PCB etching.</p>
<p>I&#8217;m currently in the process of testing these drivers.  In the meantime, I&#8217;ve already made an order with ExpressPCB for the actual driver boards.  I&#8217;ll post those, along with schematics for the entire wall lamp soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=628</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replacing Leaky Caps in a 1992 Dodge Stealth</title>
		<link>http://blog.jwcxz.com/?p=620</link>
		<comments>http://blog.jwcxz.com/?p=620#comments</comments>
		<pubDate>Wed, 11 Aug 2010 15:03:38 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[1992]]></category>
		<category><![CDATA[3000gt]]></category>
		<category><![CDATA[click]]></category>
		<category><![CDATA[dodge]]></category>
		<category><![CDATA[ecm]]></category>
		<category><![CDATA[leaky capacitor]]></category>
		<category><![CDATA[mitsubishi]]></category>
		<category><![CDATA[stall]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[stealth]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=620</guid>
		<description><![CDATA[My mom drives a 1992 Dodge Stealth (Mitsubishi 3000GT). Despite the fact that the car is almost 20 years old, it still runs pretty well, with the occasional exception. For example, recently, the window regulator (on the driver&#8217;s side) broke and had to be fixed. Then, a few weeks later, the car would stall shortly [...]]]></description>
			<content:encoded><![CDATA[<p>My mom drives a <a href="http://www.cars.com/dodge/stealth/1992/">1992 Dodge Stealth</a> (Mitsubishi 3000GT).  Despite the fact that the car is almost 20 years old, it still runs pretty well, with the occasional exception.  For example, recently, the window regulator (on the driver&#8217;s side) broke and had to be fixed.  Then, a few weeks later, the car would stall shortly after starting it, making a clicking noise in the process.</p>
<p>It turns out that one of the most likely causes for this failure is due to leakage of the electrolytic capacitors on the engine control module (ECM), the computer responsible for sparkplug timing.  ECMs go for anywhere from $800-$1000, so if you can identify this problem and replace the capacitors, you will have saved quite a bit of money.</p>
<p>So my dad and I took apart the car, following <a href="http://www.stealth316.com/2-ecmremoval.htm">these instructions</a> and extracted the ECM.  When we opened it up, we found that two of the caps had pretty heavily leaked on the board, while the other two (yes, there were four in this car &#8212; not sure why given that every guide I&#8217;ve seen has shown 3) were probably okay.  We decided to clean the board replace all of them.  Unfortunately, the board was covered in a conformal coating, and we didn&#8217;t remove the coating before working, which lead to having to fix things very carefully afterwards.  I think that in the end, this <em>would have been</em> the best way to do things.</p>
<ol>
<li>Completely remove the conformal coating in the area surrounding (and under!) the capacitors using alcohol.</li>
<li>Desolder the capacitors from the board and use a solder sucker to clear the barrels.  Note that you need a fairly powerful iron &#8212; a standard microelectronics iron won&#8217;t work as effectively as a larger iron with a chisel tip.</li>
<li>Clean the board with more alcohol to remove the fluid that has leaked from the capacitors.  In our case, it hadn&#8217;t actually corroded the board yet, so it wasn&#8217;t necessary to repair the underlying PCB.  But, it was important to ensure that all of the electrolyte was removed.</li>
<li>Ensure that the barrels are okay.  It might even be a good idea to very gently sand them to reveal a fresh layer of copper.</li>
<li>Solder new capacitors onto the board.  On our board, there were two 47uF @ 50V caps, one 100uF @ 16V, and one 22uF @ 50V.  We used caps that were rated up to 105C.  Use lots of flux.</li>
<li>Ensure that all electrical connections are good.  Then, inspect to make sure that the caps are mechanically sound.</li>
<li>Clean off the flux with alcohol.</li>
<li>Apply a new conformal coating.  We used acrylic coating, but maybe urethane or silicon coating would be better.  As you can see below, I inspected the coating with a blu-ray laser (UV light works well too).  I chose not to coat the capacitors entirely, but that probably would have been a good idea.</li>
</ol>
<p>Removing the conformal coating before doing anything else really is a necessary first step.  I thought it wasn&#8217;t, and that heat from my iron would lift the coating easily, but it didn&#8217;t.  Otherwise, we were able to create pretty decent solder joints.</p>
<p>Here are a few pictures of the process.  Unfortunately, I forgot to take more in order to really illustrate the removal of the conformal coating, but these are sufficient.  In the first two pictures, we see the leakage of the electrolyte.  Next, we see the result of cleaning the area around the capacitor (again, I didn&#8217;t remove the conformal coating before desoldering like I should have).  Finally, in the last two pictures, the new capacitors are safely in place and the board is ready to be installed back into the car.</p>
<p><a href="http://jwcxz.com/other/stealth-ecm/1.jpg"><img class="aligncenter" src="http://jwcxz.com/other/stealth-ecm/1_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/other/stealth-ecm/2.jpg"><img class="aligncenter" src="http://jwcxz.com/other/stealth-ecm/2_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/other/stealth-ecm/3.jpg"><img class="aligncenter" src="http://jwcxz.com/other/stealth-ecm/3_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/other/stealth-ecm/4.jpg"><img class="aligncenter" src="http://jwcxz.com/other/stealth-ecm/4_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/other/stealth-ecm/5.jpg"><img class="aligncenter" src="http://jwcxz.com/other/stealth-ecm/5_t.jpg" alt="" width="400" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=620</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evaluating LEDs for ACRIS</title>
		<link>http://blog.jwcxz.com/?p=612</link>
		<comments>http://blog.jwcxz.com/?p=612#comments</comments>
		<pubDate>Fri, 06 Aug 2010 05:07:56 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[ACRIS]]></category>
		<category><![CDATA[DealExtreme]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[multichip]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=612</guid>
		<description><![CDATA[I got sidetracked (what else is new) from my audio visualization project and things have been progressing somewhat slowly.  First of all, my oscilloscope has randomly decided to stop displaying channel 2, so I need to fix that at some point so that I can use my spectrum analyzer again. Anyways, I recently received four [...]]]></description>
			<content:encoded><![CDATA[<p>I got sidetracked (what else is new) from my audio visualization project and things have been progressing somewhat slowly.  First of all, my oscilloscope has randomly decided to stop displaying channel 2, so I need to fix that at some point so that I can use my spectrum analyzer again.</p>
<p>Anyways, I recently received four RGB LEDs from DealExtreme.  DX sells two types, so I bought two of each to determine which one to buy for my lighting project.  The <a href="http://www.dealextreme.com/details.dx/sku.4530">first one I saw</a> is on a star board and is cheaper than <a href="http://www.dealextreme.com/details.dx/sku.20999">the second</a>, which is enclosed in its own casing.</p>
<p>First, a few pictures:</p>
<p><a href="http://jwcxz.com/projects/acris/pics/ledtest-1.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-1_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/ledtest-2.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-2_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/ledtest-3.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-3_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/ledtest-4.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-4_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/pics/ledtest-5.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-5_t.jpg" alt="" width="400" height="300" /></a></p>
<p>These pictures were taken while the LEDs were being driven with very little current.  The star emitter is supposedly rated at 350mA for each channel and when each color is driven at this current, the LED is extremely bright.  I initially anticipated needing around 20-25 LEDs for each wall lamp, but I can see that 5-10 will definitely suffice.</p>
<p>I think I know why the star emitter is so cheap.  It&#8217;s labeled incorrectly.  The emitter, like most others, is common anode, meaning that the + terminal is common to all three colors.  The markings on the board are indeed wrong.  The enclosed emitter is also common anode.</p>
<p>Here&#8217;s a graph of some preliminary tests of driving the diodes at different voltages.  I pushed the enclosed one a lot harder, so I will need to set up a more rigorous test for complete characterization of the diode.  Also, I wasn&#8217;t able to heatsink the encased emitter, but stuck the star emitter on a big block of aluminum with some thermal compound.</p>
<p style="text-align: center;"><a href="http://jwcxz.com/projects/acris/pics/ledtest-graph.png"><img class="aligncenter" src="http://jwcxz.com/projects/acris/pics/ledtest-graph.png" alt="" width="400" height="300" /></a></p>
<p style="text-align: left;">As is fairly easy to see, the voltage curves look very similar between the two emitter models, except for the green channel.  However, it is also important to note that at 350mA, the first LED did not get anywhere near its rated operating voltage.  I haven&#8217;t pushed it far enough to see just how much current is necessary for it to be at is operating voltage, but the diode is certainly bright enough at 350mA.  I don&#8217;t want to overly degrade the diode by pushing it too far, or my wall lights will keep breaking.</p>
<p style="text-align: left;">I&#8217;ll probably go with the star emitter because it&#8217;s easier to attach a bunch of them to a heatsink block.  I&#8217;ll definitely need some kind of diffuser for the lamp, though.</p>
<p style="text-align: left;">The enclosed diodes are great for custom LED projects where you only need one or two of them; I wouldn&#8217;t recommend it for creating a compact array, though.  I might use them in my computer case or something; I could make them change color depending on processor load.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=612</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>tmux Extended Window Status Patch</title>
		<link>http://blog.jwcxz.com/?p=610</link>
		<comments>http://blog.jwcxz.com/?p=610#comments</comments>
		<pubDate>Thu, 05 Aug 2010 06:24:56 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[tmux]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=610</guid>
		<description><![CDATA[Well, time to cross something off of my ideas list.  One of the few frustrating things about tmux is that its status bar doesn&#8217;t distinguish between different types of window alerts.  If a bell goes off in the window, the window&#8217;s label in the status bar is changed to the same color as it would [...]]]></description>
			<content:encoded><![CDATA[<p>Well, time to cross something off of my <a href="http://ideas.jwcxz.com/">ideas list</a>.  One of the few frustrating things about <a href="http://tmux.sf.net">tmux</a> is that its status bar doesn&#8217;t distinguish between different types of window alerts.  If a bell goes off in the window, the window&#8217;s label in the status bar is changed to the same color as it would be if just some content changed.</p>
<p>To me, that seemed like counterintuitive behavior, so I wrote up a quick patch that breaks out the window-status-alert-* style into three new styles: -activity, -content, and -bell.</p>
<p>You can <a href="http://jwcxz.com/projects/tmux-wstatus">grab the patch here</a>.  If you run Arch Linux, you can <a href="http://aur.archlinux.org/packages.php?ID=39424">get the PKGBUILD</a> for tmux-cvs with the patch applied in the AUR instead.  I will also submit this patch to the tmux devs.</p>
<p><a href="http://jwcxz.com/projects/tmux-wstatus"><img class="aligncenter" src="http://jwcxz.com/projects/tmux-wstatus/window-status.png" alt="" width="418" height="290" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=610</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AVR-Oscilloscope Spectrograph</title>
		<link>http://blog.jwcxz.com/?p=607</link>
		<comments>http://blog.jwcxz.com/?p=607#comments</comments>
		<pubDate>Sun, 25 Jul 2010 05:23:35 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=607</guid>
		<description><![CDATA[Sometimes, when you&#8217;re working with waveforms, it&#8217;s helpful to get a live picture of the frequency spectrum.  Since I&#8217;m trying to develop audio visualization algorithms, I thought it would be a good idea to create a tool to plot the FFT of a signal.  I was inspired by this excellent project, which uses an Atmel [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, when you&#8217;re working with waveforms, it&#8217;s helpful to get a live picture of the frequency spectrum.  Since I&#8217;m trying to develop audio visualization algorithms, I thought it would be a good idea to create a tool to plot the FFT of a signal.  I was inspired by <a href="http://elm-chan.org/works/akilcd/report_e.html">this excellent project</a>, which uses an Atmel ATMEGA8 and an LCD to display a waveform and its corresponding FFT with a delay only on the order of milliseconds.  The project designer built a nice FFT library, which I incorporated into my project along with his recommendation for an anti-aliasing filter.</p>
<p>The problem was that I didn&#8217;t have an LCD to play with, so I had to settle for something slightly different; I wrote up a quick block to display the FFT data on my trusty Tektronix 335 oscilloscope.</p>
<p>There are basically two parts to the modification: first, I created an 8-bit DAC resistor ladder so that I could represent the intensity of each frequency of an FFT as an analog value.  Secondly, I created a low-frequency clock line that changed with each transition to a new frequency.  Finally, I just needed to trigger on the clock line with the oscilloscope to be able to view the full FFT.  This is easier to explain with a picture:</p>
<p><a href="http://jwcxz.com/projects/acris/spectrograph/1.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/spectrograph/1_t.jpg" alt="" width="400" height="300" /></a></p>
<p>This FFT from an audio clip shows a large low-frequency component and a smaller mid-range component.  I tried playing some sine waves, sawtooth waves, etc. as well and the output was pretty accurate.  Here are a few pics of my setup (yes, I&#8217;m really bad at board layouts):</p>
<p><a href="http://jwcxz.com/projects/acris/spectrograph/2.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/spectrograph/2_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/spectrograph/3.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/spectrograph/3_t.jpg" alt="" width="400" height="300" /></a></p>
<p><a href="http://jwcxz.com/projects/acris/spectrograph/4.jpg"><img class="aligncenter" src="http://jwcxz.com/projects/acris/spectrograph/4_t.jpg" alt="" width="400" height="300" /></a></p>
<p>There are still a few major problems that I need to work through.  The biggest one is due some pretty painful noise coming from the clock lines and what looks to be my computer.  The latter can probably be solved by implementing a decent filter, though I&#8217;m not sure how the other project&#8217;s designer had so much success with his setup.  The other sources of noise seem to be coming from the clock lines and other lines around the board.  These can be solved by properly implementing this circuit on a PCB like the author did.  I&#8217;m seeing a lot of strange low-frequency noise in the FFT as well (the quick fix was to just remove the lowest few bars from the FFT output).  In addition to solving the noise problem, I need to fine tune some of the delay values I have for oscilloscope output to make it look better.</p>
<p>I&#8217;ll have code and schematics up in a few days.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=607</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Electronics Lab Done</title>
		<link>http://blog.jwcxz.com/?p=604</link>
		<comments>http://blog.jwcxz.com/?p=604#comments</comments>
		<pubDate>Mon, 19 Jul 2010 03:49:12 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=604</guid>
		<description><![CDATA[I procrastinated a lot, but I&#8217;ve finally finished organizing all my electronics stuff.  Now, I actually know what kinds of parts I have so that I don&#8217;t end up buying them again.  My passive components are organized by value in drawers, I have a bucket full of power supplies, and I have a shelf just [...]]]></description>
			<content:encoded><![CDATA[<p>I procrastinated a lot, but I&#8217;ve finally finished organizing all my electronics stuff.  Now, I actually know what kinds of parts I have so that I don&#8217;t end up buying them again.  My passive components are organized by value in drawers, I have a bucket full of power supplies, and I have a shelf just dedicated to laser stuff.  A few buckets on the bottom shelf hold all of the larger stuff that I plan to repair or use in other projects (e.g. a GameCube that someone gave away which just needs a new drive motor, a keyboard that needs a driver, etc.).</p>
<p>Work on my <a href="http://jwcxz.com/projects/acris">lighting system</a> begins tomorrow.  <img src='http://blog.jwcxz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://jwcxz.com/other/elab/1.jpg"><img class="aligncenter" src="http://jwcxz.com/other/elab/1_t.jpg" alt="" width="400" height="309" /></a></p>
<p><a href="http://jwcxz.com/other/elab/2.jpg"><img class="aligncenter" src="http://jwcxz.com/other/elab/2_t.jpg" alt="" width="400" height="312" /></a></p>
<p><a href="http://jwcxz.com/other/elab/3.jpg"><img class="aligncenter" src="http://jwcxz.com/other/elab/3_t.jpg" alt="" width="400" height="519" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=604</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free VoIP Calling using Google Voice, Antisip, and IPKALL (and a CLI utility)</title>
		<link>http://blog.jwcxz.com/?p=599</link>
		<comments>http://blog.jwcxz.com/?p=599#comments</comments>
		<pubDate>Sun, 18 Jul 2010 07:59:05 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[antisip]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gvcall]]></category>
		<category><![CDATA[ipkall]]></category>
		<category><![CDATA[linphone]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[phone]]></category>
		<category><![CDATA[sip]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=599</guid>
		<description><![CDATA[I&#8217;ve been experimenting with my FreeRunner recently and came across some articles about free VoIP.  As it turns out, thanks to Google Voice and a few extra services, it&#8217;s possible to both receive incoming and make outgoing calls completely for free.  After setting these services up, I wrote a CLI utility that combines a Python [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been experimenting with my FreeRunner recently and came across some articles about free VoIP.  As it turns out, thanks to Google Voice and a few extra services, it&#8217;s possible to both receive incoming and make outgoing calls completely for free.  After setting these services up, I <a href="http://jwcxz.com/projects/gvcall">wrote a CLI utility</a> that combines a <a href="http://code.google.com/p/pygooglevoice/">Python Google Voice framework</a> with <a href="http://linphone.org/">Linphone</a> in order to make the task of placing a call easy.</p>
<h4>Getting free VoIP</h4>
<p>You need three things: a <a href="http://voice.google.com/">Google Voice</a> account, an <a href="http://antisip.com/">Antisip</a> account, and an <a href="http://phone.ipkall.com/">IPKALL</a> phone number.  Go to each of these websites to create them.  For Antisip, you can use your Google Voice number for the PSTN Phone.  For IPKALL, you&#8217;ll need to provide the following information:</p>
<p style="padding-left: 30px;">SIP Phone Number: <em>[antisip username]</em><br />
SIP Proxy: <em>sip.antisip.com</em></p>
<p>After some time, you&#8217;ll receive a Washington state phone number.</p>
<p>Now, open up Linphone using either the GUI or the CLI client (probably easier with the GUI).  In the preferences of the GUI, there is a tab called &#8220;Manage SIP Accounts;&#8221; go there.  Add a proxy account with the following information:</p>
<p style="padding-left: 30px;">Your SIP identity: <em>sip:[antisip username]@sip.antisip.com</em><br />
SIP Proxy address: <em>sip:sip.antisip.com</em><br />
Register at startup: <em>yes</em></p>
<p>Now, Linphone should register.  You can try calling a SIP echoline at <em>sip:*010600@ekiga.net</em> to see if things are working.</p>
<h4>Putting it all together</h4>
<p>Lastly, we want to be able to make free calls to regular phones, too.  This is where the IPKALL number and Google Voice come in.  Antisip only allows incoming calls.  When you call a number from Google Voice, it first calls you and then calls the other person, thereby acting as a link between the two connections.</p>
<p>So, add the phone number you got from IPKALL to Google Voice and try calling a phone number from the Google Voice interface.  It should call your SIP client first and then call the other number.</p>
<h4>CLI App</h4>
<p>To make this process quick and painless, I wrote a quick Python script called <strong><a href="http://jwcxz.com/projects/gvcall">gvcall</a></strong>.  Basically, it makes the process of calling a number from your computer as painless as <em>gvcall 5555555555</em>.  You can also use your non-VoIP numbers as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=599</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Backyard Wildlife</title>
		<link>http://blog.jwcxz.com/?p=594</link>
		<comments>http://blog.jwcxz.com/?p=594#comments</comments>
		<pubDate>Sun, 11 Jul 2010 17:22:14 +0000</pubDate>
		<dc:creator>JWC</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jwcxz.com/?p=594</guid>
		<description><![CDATA[There was a chipmunk outside the window today, so I decided to start a new an album of animals in my backyard.  Not too much there yet&#8230; there&#8217;s a photo of some birds and another of the black squirrel I took back in January.  Last week, there was a rabbit sitting on the walkway. And [...]]]></description>
			<content:encoded><![CDATA[<p>There was a chipmunk outside the window today, so I decided to start a new an <a href="http://jwcxz.com/photos/backyardwildlife">album of animals in my backyard</a>.  Not too much there yet&#8230; there&#8217;s a photo of some birds and another of the <a href="http://blog.jwcxz.com/?p=520">black squirrel</a> I took back in January.  Last week, there was a rabbit sitting on the walkway.</p>
<p>And then there was this little fella today:</p>
<p style="text-align: center;"><a href="http://jwcxz.com/photos/backyardwildlife/5.jpg"><img class="aligncenter" src="http://jwcxz.com/photos/backyardwildlife/5_t.jpg" alt="" width="400" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jwcxz.com/?feed=rss2&amp;p=594</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
