<?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>Memory Leak &#187; How-To</title>
	<atom:link href="http://www.foobert.com/blog/category/how-to/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.foobert.com/blog</link>
	<description>That which fades into the ether.</description>
	<lastBuildDate>Sat, 26 Nov 2011 20:49:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>GE Frontload Washer Door Gasket Replacement</title>
		<link>http://www.foobert.com/blog/2011/02/08/ge-frontload-washer-door-gasket-replacement/</link>
		<comments>http://www.foobert.com/blog/2011/02/08/ge-frontload-washer-door-gasket-replacement/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 16:50:26 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[gasket]]></category>
		<category><![CDATA[repair]]></category>
		<category><![CDATA[washer]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=666</guid>
		<description><![CDATA[
<p style="text-align: left;">
After ~5 years of reliable service from our GE Adora front loading washer, the first repair it needed was to replace the torn door gasket. Upon finding a pool of water under the washer, I was rather miffed that the rubber would fail so catastrophically. However, upon opening the bottom panel, I found the [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: left;">
After ~5 years of reliable service from our GE Adora front loading washer, the first repair it needed was to replace the torn door gasket. Upon finding a pool of water under the washer, I was rather miffed that the rubber would fail so catastrophically. However, upon opening the bottom panel, I found the remnants a Parker pen sitting underneath the washer drum &#8212; it probably found its way into the door seal during the spin cycle and ripped a huge hole after being wedged into it.</p>
<p>Some searching around revealed it was a fairly expensive repair to have done, but the gasket could be acquired for under $100. The GE part number for my washer was WH08X10036 and I got it shipped from Amazon for $92.</p>
<p>You&#8217;ll need the following tools to do the job:
</p>
<ul>
<li> #2 Phillips and straight-slot screw drivers</li>
<li> 7 mm nut driver or socket (optional)</li>
<li> 13 mm wrench (socket, ideally)</li>
<li> A fresh supply of patience</li>
</ul>
<p style="text-align: left;">
The replacement wasn&#8217;t all that hard and took me 2 hours start to finish, including taking all of the pictures! A motivated, mechanically inclined person could probably finish in under an hour. The most difficult aspect of the job is being able to stretch the new seal over the wash drum.
</p>
<p style="text-align: left;">
<strong>(1)</strong><br />
Unplug the washer from the wall socket. This is more than just a safety precaution since we&#8217;ll be disconnecting the wiring to the control panel.
</p>
<p style="text-align: left;">
<strong>(2)</strong><br />
Remove the lower front panel (not pictured). There are 3 screws clearly visible from the front on the bottom.
</p>
<p style="text-align: left;">
<strong>(3)</strong><br />
Behind the control panel, remove the three screws holding the molding onto the rear of the control panel. There are two snaps that require it to be gingerly lifted off to avoid breaking them.
</p>
<p style="text-align: center;"><strong>Remove the three screws holding faceplate molding.</strong><br />
<img src="http://foobert.com/linked/2011/20110207220752_DSC_0065.jpg" width=800 height=509/><br />
<span style="color: #999999;">Nikon D200, ISO 400, ƒ/2.8, 1/125sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(4)</strong><br />
Remove the screws on the top, rear of the machine that hold the top cover on.
</p>
<p style="text-align: center;"><strong>Remove the three screws on the rear holding the top cover on.</strong><br />
<img src="http://foobert.com/linked/2011/20110207220659_DSC_0064.jpg" width=800 height=459/><br />
<span style="color: #999999;">Nikon D200, ISO 400, ƒ/2.8, 1/250sec, 31mm focal L.</span></p>
<p style="text-align: left;">
<strong>(5)</strong><br />
With the screws off, slide the top cover back about 1-2 inches, and it will easily lift of.
</p>
<p style="text-align: center;"><strong>Slide the top-cover back and then lift it off.</strong><br />
<img src="http://foobert.com/linked/2011/20110207221044_DSC_0067.jpg" width=800 height=401/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/125sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(6)</strong><br />
Depress the tab to remove the soap tray. Probably a good time to clean out all the soap scum build up while you have it out.
</p>
<p style="text-align: center;"><strong>Remove the soap tray.</strong><br />
<img src="http://foobert.com/linked/2011/20110207221122_DSC_0069.jpg" width=800 height=490/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/40sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(7)</strong><br />
Remove the screw hiding behind the soap tray.
</p>
<p style="text-align: center;"><strong>Remove the screw behind the soap tray.</strong><br />
<img src="http://foobert.com/linked/2011/20110207221414_DSC_0072.jpg" width=800 height=512/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/45sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(8)</strong><br />
Remove the four screws holding the control panel.
</p>
<p style="text-align: center;"><strong>Remove the four screws holding the control panel on.</strong><br />
<img src="http://foobert.com/linked/2011/20110207221244_DSC_0070-Edit.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/4.5, 1/125sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(9)</strong><br />
Now the control panel can be removed. Note that there are a couple of tabs that would benefit from not being forced off.
</p>
<p style="text-align: center;"><strong>With all 5 control panel screws removed, lift the tabs to remove the panel.</strong><br />
<img src="http://foobert.com/linked/2011/20110207221536_DSC_0074.jpg" width=800 height=476/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/250sec, 34mm focal L.</span></p>
<p style="text-align: left;">
<strong>(10)</strong><br />
Carefully disconnect all of the connector harnesses and take note of where the connections go. It is quite likely yours will not look exactly like mine does.  Also, be careful not to touch the electronic components as they are static sensitive.</p>
<p>Alternately, you could get creative and loosely tie the control panel up so that you can get behind it without stressing the wires.
</p>
<p style="text-align: center;"><strong>Note the correct placement of all the connectors.</strong><br />
<img src="http://foobert.com/linked/2011/20110207235731_DSC_0118.jpg" width=800 height=481/><br />
<span style="color: #999999;">Nikon D200, ISO 1600, ƒ/2.8, 1/90sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(11)</strong><br />
Remove the door latch screws.
</p>
<p style="text-align: center;"><strong>Remove the three screws holding the door latch.</strong><br />
<img src="http://foobert.com/linked/2011/20110207222303_DSC_0078-Edit.jpg" width=536 height=800/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/20sec, 35mm focal L.</span></p>
<p style="text-align: left;">
<strong>(12)</strong><br />
Open the door and hook a screw driver under the wire retaining ring around the door seal. Pull this off being careful not to kink the wire.
</p>
<p style="text-align: center;"><strong>Remove the wire ring holding gasket to the door panel.</strong><br />
<img src="http://foobert.com/linked/2011/20110207223211_DSC_0084.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/20sec, 32mm focal L.</span></p>
<p style="text-align: left;">
<strong>(13)</strong><br />
Prepare to remove the door panel by removing the gasket from the panel and pushing the door latch out of the way. There&#8217;s no need to disconnect the door latch wires.
</p>
<p style="text-align: center;"><strong>Free the gasket and door latch from the door panel.</strong><br />
<img src="http://foobert.com/linked/2011/20110207223317_DSC_0085.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/10sec, 32mm focal L.</span></p>
<p style="text-align: left;">
<strong>(14)</strong><br />
Remove the four screws at the corners of the door panel.
</p>
<p style="text-align: center;"><strong>Remove the door panel screws.</strong><br />
<img src="http://foobert.com/linked/2011/20110207222821_DSC_0081-Edit.jpg" width=605 height=800/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/10sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(15)</strong><br />
With the screws removed, the door panel is still resting securely on the hooks shown below. Lift the panel off the hooks and set it aside, door and all. There is no need to remove the door from the panel.
</p>
<p style="text-align: center;"><strong>Lift the door panel off the hooks.</strong><br />
<img src="http://foobert.com/linked/2011/20110207223025_DSC_0082.jpg" width=457 height=800/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/30sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(16)</strong><br />
Remove the lower concrete weight. A real pro wouldn&#8217;t bother with this step, but, I assure you it&#8217;s worth it to remove the lower concrete weight from the drum. It&#8217;ll save you much frustration when trying to install the new seal.
</p>
<p style="text-align: center;"><strong>Remove the lower concrete weight.</strong><br />
<img src="http://foobert.com/linked/2011/20110207223530_DSC_0087-Edit.jpg" width=800 height=663/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/10sec, 26mm focal L.</span></p>
<p style="text-align: left;">
<strong>(17)</strong><br />
Finally, unscrew the wire band holding the gasket onto the drum and remove the gasket. Be very gentle with the soap tube attached to the gasket in the upper left. The soap tube is a fairly flimsy plastic, and could easily break if it is yanked on too hard.
</p>
<p style="text-align: center;"><strong>Remove the wire ring holding the gasket onto the drum.</strong><br />
<img src="http://foobert.com/linked/2011/20110207224116_DSC_0093.jpg" width=800 height=780/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/10sec, 26mm focal L.</span></p>
<p style="text-align: left;">
<strong>(18)</strong><br />
The drain holes in the bottom of my wash drum were totally clogged with soap scum and lint. This is a good time to clean those up to minimize water puddling in the gasket. Also, make sure that the outer gasket ring of the drum is free of soap scum so the new gasket can seal around it.
</p>
<p style="text-align: center;"><strong>Good time to clean things up.</strong><br />
<img src="http://foobert.com/linked/2011/20110207225511_DSC_0102.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 1250, ƒ/2.8, 1/20sec, 38mm focal L.</span></p>
<p style="text-align: left;">
<p style="text-align: left;">
It was interesting to note that the new gasket has an added feature to stop clothes from riding around the outer lip of the drum.
</p>
<p style="text-align: center;"><strong>Note the new feature.</strong><br />
<img src="http://foobert.com/linked/2011/20110207224531_DSC_0095-Edit.jpg" width=425 height=800/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/15sec, 24mm focal L.</span></p>
<p style="text-align: left;">
<strong>(19)</strong><br />
When putting the new gasket on, take note that it has alignment marks that should match up to the drum.  The lower triangle on the drum will be inside of the gasket when it is installed.  Use the notch at the top.</p>
<p>I don&#8217;t know of any good trick to install the gasket. It probably took me ~45 minutes of trial and error to get it stretched out and installed correctly.  The winning technique that finally worked for me was:
</p>
<ul>
<li> Do not insert the soap tube or door sprayer into the gasket until the end.</li>
<li> Don&#8217;t bother with the wire band until the gasket is fully stretched over the washer drum. It only gets in the way and adds to the frustration.</li>
<li> Avoid using any tools on the gasket (pliers or pry bars). It would be fairly easy to tear it. </li>
<li> I started from the top and worked it down and around. If you are having trouble with it popping off the top once you start working toward the bottom, that probably means it wasn&#8217;t really seated at the top to begin with. There&#8217;s not a lot of room and no easy way to get pressure in the right spot to insure it&#8217;s seated.</li>
<li> Pulling from the outside and pushing from the inside will get it to yield. An extra pair of hands would be very beneficial to keep it from popping off the other side, but, I managed it by myself.</li>
</ul>
<p style="text-align: center;"><strong>Alignment marks.</strong><br />
<img src="http://foobert.com/linked/2011/20110207224755_DSC_0100-Edit.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 800, ƒ/2.8, 1/30sec, 27mm focal L.</span></p>
<p style="text-align: left;">
<strong>(20)</strong><br />
The door sprayer is easiest to insert by pulling it off the tubing and then removing the retaining washer from the fitting.  Push the nozzle through from the bottom of the gasket, taking note that it&#8217;s pointed at the door, and then push the plastic washer onto the fitting, and then the hose onto the fitting.
</p>
<p style="text-align: center;"><strong>Insert the door sprayer.</strong><br />
<img src="http://foobert.com/linked/2011/20110207233415_DSC_0104.jpg" width=800 height=536/><br />
<span style="color: #999999;">Nikon D200, ISO 1600, ƒ/2.8, 1/10sec, 40mm focal L.</span></p>
<p style="text-align: left;">
<strong>(21)</strong><br />
When reinstalling the concrete weight, note that the bolts have a long flat edge that should be pushed into the slot.
</p>
<p style="text-align: center;"><strong>Note the correct orientation of the weight bolts</strong><br />
<img src="http://foobert.com/linked/2011/20110207234215_DSC_0108.jpg" width=800 height=573/><br />
<span style="color: #999999;">Nikon D200, ISO 1600, ƒ/2.8, 1/13sec, 40mm focal L.</span></p>
<p style="text-align: left;">
The rest of the install procedure is the reverse of the disassembly.</p>
<p>I left the lower, front panel off for the first load to make sure it easy to check for leaks. None found!</p>
<p>Best of luck for those attempting to tackle the job!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2011/02/08/ge-frontload-washer-door-gasket-replacement/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Arduino battery capacity tester</title>
		<link>http://www.foobert.com/blog/2009/11/08/arduino-battery-capacity/</link>
		<comments>http://www.foobert.com/blog/2009/11/08/arduino-battery-capacity/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 07:03:09 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Geek-Stuff]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[arduino]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=471</guid>
		<description><![CDATA[<p style="text-align: left;">My first Arduino project was to build a battery capacity tester.  I&#8217;ve got a box of rechargeable AA batteries, and it seams they&#8217;ve been less and less effective. Since most applications require 4 batteries, invariably one problem battery makes the rest of them look bad.</p>
<p>The Atmel ATMega328 microcontroller has 6 analog inputs with [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">My first <a href="http://arduino.cc/en">Arduino</a> project was to build a battery capacity tester.  I&#8217;ve got a box of rechargeable AA batteries, and it seams they&#8217;ve been less and less effective. Since most applications require 4 batteries, invariably one problem battery makes the rest of them look bad.</p>
<p>The Atmel ATMega328 microcontroller has 6 analog inputs with 10-bit A-to-D converters and a external AREF that allows you to define what voltage 0x3FF represents. In other words, it&#8217;ll give you ~1.4mV precision measuring 0-1.5V when given a 1.5V analog reference. Plenty accurate for a battery capacity measurement.</p>
<p>The principle is fairly simple. Apply a known load to a battery, record the voltage periodically while the battery discharges, stop recording at some point, and integrate to arrive at the area under the curve in order to derive the amp-hours delivered from the battery.</p>
<p>Enough theory, let&#8217;s see how it works.  The UI starts with a helpful message:</p>
<p style="text-align: center;"><strong>Insert Battery</strong><br />
<img src="http://foobert.com/linked/2009/20091107215531_DSC_4782.jpg" alt="" width="696" height="700" /><br />
<span style="color: #999999;">NIKON D70, ISO 500, ƒ/2.0, 1/20sec, 50mm focal L.</span></p>
<p style="text-align: left;">While the battery discharges, the UI prints the voltage, real-time capacity measured thus far, and the duration that the measurement has been taking place.</p>
<p style="text-align: center;"><strong>Battery In</strong><br />
<img src="http://foobert.com/linked/2009/20091107221459_DSC_4783.jpg" alt="" width="671" height="700" /><br />
<span style="color: #999999;">NIKON D70, ISO 500, ƒ/2.0, 1/25sec, 50mm focal L.</span></p>
<p style="text-align: left;">When the cut-off voltage of 0.9V has been reached, the &#8220;usable&#8221; capacity is saved at the top.  The real-time data continues so the capacity below 0.9V is measured.  For the NiMH batteries I&#8217;ve tested, the capacity below 0.9V is minimal (~100mAH).</p>
<p>After the cut-off is reached, an LED starts blinking to attract attention that the test is effectively over.</p>
<p style="text-align: center;"><strong>Done</strong><br />
<img src="http://foobert.com/linked/2009/20091107215454_DSC_4780.jpg" alt="" width="494" height="700" /><br />
<span style="color: #999999;">NIKON D70, ISO 500, ƒ/2.0, 1/20sec, 50mm focal L.</span></p>
<p><a href="http://foobert.com/linked/2009/battery_test.pde">Here&#8217;s the code (click to download as text rather than the questionable HTML translated version pasted below):</a></p>
<blockquote><pre>
/*  Battery Characterization Tool

     11/7/2009 John Terry

     Compiled on Aurdino 0017 in 4930 bytes.

 This uses the analog in to measure the voltage of a battery under a known load and
 integrates the area under the curve to arrive at the useful capacity of the
 batterin in mAH.
*/

#include &lt;LiquidCrystal.h&gt;

// Set some constants -- these will need to be adjusted for your setup
//
// Connect a ~10K Ω (Rr) resistor from 3.3V supply pin to the AREF pin,
//   creating a voltage divder with the internal 32KΩ resistor on AREF.
//      aRefVoltage = supply_voltage * 32K / Rr
//   Alternatively, measure the actual AREF voltage applied with a good DMM:
//  my measured aRefVoltage = 2.62;
const float     aRefVoltage = 2.62;

// Connect a load resistor (Rl) to the battery. ~2.2 Ω restistor gives ~500mA drain which
//   is about right for a battery rated at 2500mAH.  Note, this should be a &gt;=1W resistor!
//   Dont trust your DMM to meausre such a low resistance accurately. I measured the current
//   and back-calculated the resistance. Best just to trust rated resistance.
//   my  resistance = 2.18;
//
// The integrator works by accumulating the sampled voltage values from the start until
//   hitting a pre-determined low-voltage threshold. Since they are sampled at a
//   known period, the number of samples taken cancels out and the accumulation of all samples
//   simply needs to be scalled by a factor
//
//   Let's make some definitions to show the derivation of how this is so:
//   I = current
//   V = load voltage
//   Rl = load resistance
//   samples = number of voltage samples made
//   sensor = value read out of analog A-&gt;D
//   rate = number of samples taken per second
//
//                                     ave(V)
//   capacity = ∫I ~= ave(I) * time = -------- * time
//                                       Rl
//
//   Where:
//                ∑(V)     ∑(sensor) * aRefVoltage/1024
//     ave(V) = ------- = ---------------------------------
//              samples              samples
//
//      time  =  samples/rate
//
//   Thus:
//               ∑(sensor) * aRefVoltage     samples
//   capacity = ------------------------- * ---------
//                samples * 1024 * Rl         rate
//
//               ∑(sensor) * aRefVoltage
//   capacity = ------------------------- = ∑(sensor) * quanta
//                  1024 * Rl * rate
//
//           quanta = aRefVoltage/(1024 * Rl * rate ) * 1000/3600   // scaled for mA Hours
const double quanta = 0.00030179; // 2.62/1024/2.355/3.6

// Define low voltage threshold where any remaining capacity is "unusable"
//        lowThreshold = 0.9V * 1024/aRefVoltage
const int lowThreshold = 354;

int sensorPin          = 0;    // select the analog input pin for the voltage measurement
int ledPin             = 13;   // select the pin for the LED
int fetGatePin         = 8;    // select the pin for the LED
int sensorValue        = 0;    // unscaled sensor output
float voltage          = 0;    // measured voltage
double mAH             = 0;    // Calculated current
long accumulator       = 0;    // sum of all unscalled sensor values sampled
int epoch              = 0;    // seconds since battery was inserted
int lowVolts           = 0;    // debounce the low voltage threshold
boolean done           = false;// Voltage has dropped below threshold
boolean batteryIn      = false;// Battery present

// initialize the the LCD library with the numbers of the interface pins
//  LCD Pins  --  RS, EN, D4, D5, D6, D7
LiquidCrystal lcd(12, 11,  5,  4,  3,  2);

void setup() {
  // declare the ledPin and fetGatePin as an OUTPUT:
  pinMode(ledPin,     OUTPUT);
  pinMode(fetGatePin, OUTPUT);  

  // set analog reference to external
  analogReference(EXTERNAL);

  // set up the LCD's number of rows and columns:
  lcd.begin(16, 2);

  // Print a helpful start-up message to the LCD.
  lcd.print("Insert battery");

  // DEBUG initialize serial communications at 9600 bps:
  // Serial.begin(9600);
}

void loop() {

  sensorValue = analogRead(sensorPin);    

  if (!batteryIn &#038;&#038; (sensorValue &gt; 100)) {
    // Initialize upon the insertion of a "fresh" battery
    batteryIn   = true;
    done        = false;
    epoch       = 0;
    accumulator = 0;
    lowVolts    = 0;
    digitalWrite(ledPin, LOW);
    digitalWrite(fetGatePin, HIGH);
    // clear out when LCD when starting over
    lcd.setCursor(0, 0);
    lcd.print("vlts  mAH  Time ");
    lcd.setCursor(0, 1);
    lcd.print("                ");
  }
  else if (batteryIn &#038;&#038; done &#038;&#038; (sensorValue &lt;= 20)) {
    // consider the battery removed only after finishing the last measurement to
    // debounce a glitchy concact
    batteryIn=false;
  }
  else if (batteryIn) {
    // Running state during discharge state

    voltage = sensorValue*aRefVoltage/1024.0;

    // print voltage
    lcd.setCursor(0, 1);
    lcd.print(voltage);

    if (!done) {
      accumulator += sensorValue;
      // print mAH
      mAH = accumulator*quanta;
      if      (mAH &lt;   10) { lcd.setCursor(8, 1); }  // adjust to make it perdy
      else if (mAH &lt;  100) { lcd.setCursor(7, 1); }
      else if (mAH &lt; 1000) { lcd.setCursor(6, 1); }
      else                 { lcd.setCursor(5, 1); }
      lcd.print(int(mAH));

    }

    // print current time
    lcd.setCursor(11, 1);
    lcd.print(epoch/60.0);
    lcd.setCursor(15, 1);
    lcd.print("m");

    if (!done) {

      // lowVolts requires 10 seconds in the last 20 before being done
      if (sensorValue &lt; lowThreshold) { lowVolts++;}
      else if (lowVolts &gt; 0)          { lowVolts--;}  

      // If it's below threshold for 10 of 20 samples, bail out
      if (lowVolts &gt; 10) {
        done=true;
        digitalWrite(fetGatePin, LOW);
        lcd.setCursor(0, 0);
        lcd.print("    mAH in     ");
        lcd.setCursor(1, 0);
        lcd.print(int(mAH));

        // put the time, in minutes in the upper right
        lcd.setCursor(11, 0);
        lcd.print(epoch/60.0);
        lcd.setCursor(15, 0);
        lcd.print("m");

        // Clear out the bottom line
        lcd.setCursor(4, 1);
        lcd.print("v      ");
      }
    }

    epoch++;
  } // batteryIn -- main routine

  if (done) {
    // When done, flash the LED to get attention
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(499);
  } else {
    // Since the processing takes some time prior to the delay, we'll assume 1mS
    // This could stand to be improved with an interrupt routine that is kicked off
    // before all the processing starts for each loop
    delay(999);
  }

/* DEBUG

  Serial.print("\nsensor = " );
  Serial.print(sensorValue);
  Serial.print("\t lowvolrs = " );
  Serial.print(lowVolts);
*/

}
</pre>
</blockquote>
<p>Compiles into 4930 bytes.</p>
<p>Schematics, excluding the LCD display (pin-out is listed in the code).</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/capacity_meter_bb.png" alt="" />
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/capacity_meter_schem.png" alt=""  /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2009/11/08/arduino-battery-capacity/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>iPhone software 3.0&#8211;email full resolution pictures</title>
		<link>http://www.foobert.com/blog/2009/07/02/iphone-software-3-0-email-full-resolution-pictures/</link>
		<comments>http://www.foobert.com/blog/2009/07/02/iphone-software-3-0-email-full-resolution-pictures/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 07:13:49 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Geek-Stuff]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[picture]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=279</guid>
		<description><![CDATA[<p>I just stumbled on a new feature of the iPhone 3.0 software &#8212; using the copy/paste feature, you can send a full resolution picture in an email:</p>

In the picture browser, tap the picture to highlight it and make the &#8220;copy&#8221; button appear. Tap the copy button.
Close the picture browser app.
Open email app
Compose a new email, and [...]]]></description>
			<content:encoded><![CDATA[<p>I just stumbled on a new feature of the iPhone 3.0 software &#8212; using the copy/paste feature, you can send a full resolution picture in an email:</p>
<ol>
<li>In the picture browser, tap the picture to highlight it and make the &#8220;copy&#8221; button appear. Tap the copy button.</li>
<li>Close the picture browser app.</li>
<li>Open email app</li>
<li>Compose a new email, and &#8220;paste&#8221; the image into the body of the email.</li>
</ol>
<p>If you simply use the &#8220;mail-to&#8221; button in the photo app, it&#8217;ll shrink the image to 800&#215;600 resolution.  Using the copy/paste method, it sends the full 1600&#215;1200 resolution (of the now <em>vintage </em>Gen 1 phone, anyway. New phones prolly have better cameras).</p>
<p>Unfortunately, it still omits all the EXIF data just the same as using the &#8220;mail-to&#8221; button. I wish it would keep at least some of the basics, like, date+time the picture was taken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2009/07/02/iphone-software-3-0-email-full-resolution-pictures/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building pannier hardmounts for a BMW F800</title>
		<link>http://www.foobert.com/blog/2009/05/21/building-pannier-hardmounts-for-a-bmw-f800/</link>
		<comments>http://www.foobert.com/blog/2009/05/21/building-pannier-hardmounts-for-a-bmw-f800/#comments</comments>
		<pubDate>Thu, 21 May 2009 16:25:58 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[motorcycle]]></category>
		<category><![CDATA[aluminum]]></category>
		<category><![CDATA[BMW F800ST]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[panniers]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=268</guid>
		<description><![CDATA[<p>The thought of spending over $1k for the BMW panniers (that aren&#8217;t even water proof) is totally absurd to me. Other aftermarket options add up to &#62;$700+ by the time you buy the special F800 adapter frame for them.  I guess I just couldn&#8217;t justify such expense for something that will only get put on the [...]]]></description>
			<content:encoded><![CDATA[<p>The thought of spending over $1k for the BMW panniers (<a href="http://f800riders.org/forum/showthread.php?t=26785" target="_blank">that aren&#8217;t even water proof</a>) is totally absurd to me. Other aftermarket options add up to &gt;$700+ by the time you buy the special F800 adapter frame for them.  I guess I just couldn&#8217;t justify such expense for something that will only get put on the bike a few times a year.</p>
<p>Soft bags can be had for very reasonable prices, but, the attachment straps are questionably secure and the paint abrasion/scratching from the bags moving with the bumps and wind is totally unacceptable.  This left me with just one other option &#8212; spend some time build my own pannier racks to hold soft bags.</p>
<p>I found some <a href="http://www.ortliebusa.com/CartGenie/prod-59.htm" target="_blank">waterproof Ortlieb saddle bags</a> rated at 47L. It has a &#8220;drybag&#8221; style  roll top, and semi rigid plastic shell on 4 sides. The fabric is heavy rubberized material &#8212; definitely waterproof.</p>
<p>First a shot of the finished product.<br />
<img src="http://foobert.com/linked/2009/DSC_1652.jpg" alt="" /></p>
<p>The frame is constructed from 1/8&#8243; aluminum stock.  Each side bolts using 2 bolts: the bolt in the side of the factory luggage rack to support the factory panniers and one bolt that holds a bracket around the lower luggage rack support.</p>
<p>Here&#8217;s the upper bolt attachment. Note that the bolt goes through from the inside the bag, through the internal support frame and into the luggage rack. The three small bolts attach the square stiffener tube a piece of flat stock that makes up the internal framework (not removed when the bags are removed).<br />
<img src="http://foobert.com/linked/2009/DSC_1646.jpg" alt="" /></p>
<p>The primary part of the lower attachment is 2 pieces of 1.5&#8243; angle stock bolted together to make an upside-down &#8220;U&#8221; shaped piece. One face of the &#8220;U&#8221; bolts to the inside of the pannier, and the other side of the &#8220;U&#8221; is used to attach to the lower luggage rack.  The &#8220;U&#8221; is wider at the front and narrow at the back in order to define the angle that keeps the bag from rubbing on the plastic under the saddle and to keep it from rubbing on the upper luggage rack at the rear. Not that this angle means the total width of the panniers is widest at the front, and narrower at the rear &#8212; which is fine with me as it keeps the weight hugged in as close to the center of the bike as possible. (please overlook my chicken strips <img class="inlineimg" src="http://f800riders.org/forum/images/smilies/icon_smile_blush.gif" border="0" alt="" />)<br />
<img src="http://foobert.com/linked/2009/DSC_1648.jpg" alt="" /></p>
<p>The lower luggage rack attachment was the most challenging part of the design and I ended up throwing out the prototype and doing a second design here. The square tube is pop riveted to the inner face of the inner &#8220;U&#8221; shape and it supports the weight of the bags by resting on the top of the factory luggage frame.  Note that the pop rivets only hold things together when it&#8217;s detached &#8212; the attachment bolt is the primary fastener for strength.  Then, another piece angle stock is bolted to the inside of the square tube to capture the factory luggage frame on all sides.<br />
<img src="http://foobert.com/linked/2009/DSC_1642.jpg" alt="" /></p>
<p>And another angle of the lower luggage frame attachment point:<br />
<img src="http://foobert.com/linked/2009/DSC_1640.jpg" alt="" /></p>
<p>A wider shot of the lower attachment point. Note that the bit of angle stock hanging down is a heat shield to keep the heat of the muffler off the bag.<br />
<img src="http://foobert.com/linked/2009/DSC_1638.jpg" alt="" /></p>
<p>And, here&#8217;s another shot giving a good reference to the clearances to the luggage rack and the side plastic under the saddle.<br />
<img src="http://foobert.com/linked/2009/DSC_1645.jpg" alt="" /></p>
<p>Not shown is the fact that the upper &amp; lower exterior frames are connected by means of a piece of flat stock on the inside of the bag connecting to 2 vertical pieces of angle stock at the front and back corners of the bag (all on the inside). This adds total rigidity to the system. There are no other straps/velcro needed to hold the bags on the bike &#8212; only the 2 bolts mentioned above.</p>
<p>So far, I&#8217;ve had them overloaded for an 1100 mile trip there&#8217;s been no issues.<br />
<strong><br />
Update</strong></p>
<p>Since I&#8217;ve gotten a request for more info, here&#8217;s the cut-list of each part. All dimensions are in inches:</p>
<table>
<tr>
<td>#</td>
<td>Part name                    </td>
<td> Material                    </td>
<td>Length  </td>
<td>Quantity</td>
<td> Total</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>1</td>
<td>Lower Truss                  </td>
<td> 1.5 x 1.5 x 0.125 Angle     </td>
<td>  12.75 </td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>Angled Attach Truss          </td>
<td> 1.5 x 1.5 x 0.125 Angle     </td>
<td>  7     </td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>Luggage frame retainer</td>
<td> 1.5 x 1.5 x 0.125 Angle     </td>
<td>  4     </td>
<td>2</td>
</tr>
<tr>
<td> </td>
<td>                             </td>
<td> 1.5 x 1.5 x 0.125 Angle     </td>
<td>        </td>
<td>        </td>
<td>47.5</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>4</td>
<td>Luggage Frame rest           </td>
<td> 0.75 x 0.75 x  0.0625 Square</td>
<td>  4.5   </td>
<td>2</td>
</tr>
<tr>
<td>5</td>
<td>Upper Stiffener              </td>
<td> 0.75 x 0.75 x  0.0625 Square</td>
<td>  9.75  </td>
<td>2</td>
</tr>
<tr>
<td> </td>
<td>                             </td>
<td> 0.75 x 0.75 x  0.0625 Square</td>
<td>        </td>
<td>        </td>
<td>28.5</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>6</td>
<td>Interior Vertical support    </td>
<td> 0.75 x 0.75 x 0.125 Angle   </td>
<td>  6.875 </td>
<td>4</td>
</tr>
<tr>
<td> </td>
<td>                             </td>
<td> 0.75 x 0.75 x 0.125 Angle   </td>
<td>        </td>
<td>        </td>
<td>27.5</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>7</td>
<td>Upper Horizontal support  </td>
<td>1.5 x 0.125 Flat             </td>
<td>  14.625</td>
<td>2</td>
</tr>
<tr>
<td>8</td>
<td>Exterior Vertical support    </td>
<td>1.5 x 0.125 Flat             </td>
<td>  4     </td>
<td>4</td>
</tr>
<tr>
<td> </td>
<td>                             </td>
<td>1.5 x 0.125 Flat             </td>
<td>        </td>
<td>        </td>
<td>45.25</td>
</tr>
</table>
<p style="text-align: left;">
The following pictures detail what the pannier frame looks like without the Ortlieb bag.  <strong>All pictures below are taken of the right-side frame.  </strong></p>
<p>As if it&#8217;s not obvious, the numbered parts correspond to the part number in the cut-list above.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216212703_DSC_5710-Edit.jpg" width=900 height=565/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/25sec, 38mm focal L.</span></p>
<p style="text-align: left;">
If you want the top of the bag to be tucked in a little tighter, you might wish to change the part #5, Upper Stiffener to use angle stock instead of the square tubing.  This would tuck the top of the frame about 3/4&#8243; closer toward the center of the bike.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216212758_DSC_5711-Edit.jpg" width=900 height=569/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/50sec, 29mm focal L.</span></p>
<p style="text-align: left;">
Below is a detail of the lower luggage rest.  Ideally, if it is constructed correctly, this square tube bears the majority of weight of the bag by resting on top of the bike&#8217;s luggage frame. Thus, the top pin/bolt is not under significant sheering moment and should mostly be in tension.  Achieving this goal requires carefully locating the bolt hole for the top bolt threaded into the bike&#8217;s luggage rack.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216213006_DSC_5712.jpg" width=900 height=453/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/40sec, 29mm focal L.</span></p>
<p style="text-align: left;">
Below is the detail of the luggage frame retainer.  This captures the bikes luggage frame on all 4 sides, giving a solid lower mounting point.  The slot in the retainer piece is milled out to make room for the &#8220;tab&#8221; welded to the inside of the luggage frame. The tab is perfect to keep the lower mount from sliding fore/aft on the frame.</p>
<p>I cut the slot by drilling many holes along the path, and then using a dremel tool and file to clean it up. Those with access to a milling machine will make fast work of the slot.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216213024_DSC_5713-Edit.jpg" width=900 height=452/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/30sec, 29mm focal L.</span></p>
<p style="text-align: left;">
The photo below is the bottom view of the right-hand side frame and is attempting to illustrate how the angled attach truss is built.  This angled piece defines how much &#8220;toe&#8221; the panniers will have relative to the center-line of the bike.  If you note in the first 2 pictures of this post, the front of the panniers are wider than the back (overall, measuring outside of left pannier to outside or right pannier).  I chose not to make them parallel to the center-line of the bike in order to keep the mass as close as possible to the center-line.  If it bothers you that they are &#8220;out of square&#8221;, adjust accordingly.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216213140_DSC_5716-Edit.jpg" width=900 height=415/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/80sec, 29mm focal L.</span></p>
<p style="text-align: left;">
And, here&#8217;s another angle showing, well, the angle! This is viewed from the back of the right-hand side frame.  </p>
<p>Also note, at the bottom of the photo you can see how the luggage &#8220;pin&#8221; rests on the square tube. Again, if you want the top of the pannier tucked in tighter, either use something beside the stock luggage peg, or use an angle stock instead of the square tube as the upper stiffener.
</p>
<p style="text-align: center;">
<img src="http://foobert.com/linked/2009/20100216213206_DSC_5717.jpg" width=845 height=900/><br />
<span style="color: #999999;">NIKON D70, ISO 800, ƒ/2.8, 1/15sec, 29mm focal L.</span></p>
<p>Other construction notes:</p>
<p>All parts were hand-fitted and positioned on the bike, marked, and then drilled and fastened.   I used pop rivets extensively to quickly assemble and test fit. In most cases, when I was happy with the fit, I drilled additional (larger) holes and augmented with 1/4&#8243; bolts for strength. The only joint that relies solely on pop rivets is the upper horizontal support attaching to the 2 vertical supports. </p>
<p>The astute observer might notice that the interior horizontal support (#8) is not 1.5 inch flat-stock in the photos &#8212; and you&#8217;d be correct.  I used 1&#8243; stock, but, it would be preferred to use something beefier.</p>
<p>One could easily adapt the concept to make a frame for other panniers besides the Ortlieb.</p>
<p>It was a fun project needing nothing more than a drill, hack saw (I used a sawsall), a file and some patience. All totaled up I have less than $200 in the bags and materials.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2009/05/21/building-pannier-hardmounts-for-a-bmw-f800/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Install Givi E370N top case on BWM F800ST</title>
		<link>http://www.foobert.com/blog/2009/04/29/install-givi-e370n-bwm-f800st/</link>
		<comments>http://www.foobert.com/blog/2009/04/29/install-givi-e370n-bwm-f800st/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 16:47:55 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[motorcycle]]></category>
		<category><![CDATA[BMW F800ST]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[luggage]]></category>
		<category><![CDATA[top case]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=245</guid>
		<description><![CDATA[<p>The universal mounting/adapter plate that comes with the Givi E370N top case gives many options for bolt placement, but, unfortunately the rest of the hardware is inadequate to work on BMW F800ST luggage rack.</p>
<p>My goals for the install:</p>

No drilling/modification of the luggage rack
Offer some amount of cushion/padding to prevent the hard case from marring the paint.
Position [...]]]></description>
			<content:encoded><![CDATA[<p>The universal mounting/adapter plate that comes with the Givi E370N top case gives many options for bolt placement, but, unfortunately the rest of the hardware is inadequate to work on BMW F800ST luggage rack.</p>
<p>My goals for the install:</p>
<ol>
<li>No drilling/modification of the luggage rack</li>
<li>Offer some amount of cushion/padding to prevent the hard case from marring the paint.</li>
<li>Position the bolts at the outside of the mounting plate to provide the most secure attachment</li>
<li>As far forward position possible, given the above considerations.</li>
</ol>
<p>Additional supplies that I used:</p>
<ul>
<li>Qty 4 &#8212; 1/4&#8243; bolts by 1.75&#8243; long</li>
<li>Qty 1 &#8212; 1/4&#8243; bolt by 2&#8243; long</li>
<li>Qty 5 &#8212; 1/4&#8243; elastic stop nuts</li>
<li>Qty 1 &#8212; large outer diameter washer</li>
<li>Heat shrink tube</li>
<li>Ribbed rubber mat</li>
</ul>
<p>The mounting points will be 2 &#8220;U&#8221; shape bolts to wrap around the forward part of the luggage rack, and 1 through bolt at the back.</p>
<p>Since I was unable to find a U bolt with the right geometry at my hardware store, I modified the supplied brackets by drilling 2 holes to form the legs of the U with some regular bolts.</p>
<p>Here&#8217;s the bracket punched and ready to drill</p>
<p><img class="alignnone size-medium wp-image-246" title="dsc_1484" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1484-300x199.jpg" alt="dsc_1484" width="300" height="199" /></p>
<p>The 3 brackets drilled and ready to apply the heat-shrink tubing.</p>
<p><img class="alignnone size-medium wp-image-247" title="dsc_1485" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1485-300x199.jpg" alt="dsc_1485" width="300" height="199" /></p>
<p>With the heat-shrink and the holes punched through the tubing. I don&#8217;t know if the shrink tube will survive, but, it&#8217;s gotta be somewhat better than bare metal against the rack.</p>
<p><img class="alignnone size-medium wp-image-248" title="dsc_1486" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1486-300x199.jpg" alt="dsc_1486" width="300" height="199" /></p>
<p>Next, I outlined the shape of the universal mounting adapter onto the rubber mat to cut.</p>
<p><img class="alignnone size-medium wp-image-249" title="dsc_1487" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1487-300x199.jpg" alt="dsc_1487" width="300" height="199" /></p>
<p>The rubber mat cut to shape. I plan to but the ribbed side down against the luggage rack.</p>
<p><img class="alignnone size-full wp-image-254" title="dsc_1493" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1493.jpg" alt="dsc_1493" width="1024" height="517" /></p>
<p>The supplied hardware kit only had 4 square &#8220;washers&#8221;, so, I fabricated one by squaring up a round washer with a file.</p>
<p><img class="alignnone size-medium wp-image-256" title="dsc_1497" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1497-300x199.jpg" alt="dsc_1497" width="300" height="199" /></p>
<p>Now its ready for install. You&#8217;ve all seen the bare luggage rack on the F800ST:</p>
<p><img class="size-medium wp-image-257 alignnone" title="dsc_1499" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1499-300x199.jpg" alt="F800ST luggage rack" width="300" height="199" /></p>
<p>Put the mat down and poke the bolts through the holes punched in it. The four 1.75&#8243; bolts up front, and the 2&#8243; bolt in the back.</p>
<p><img class="alignnone size-full wp-image-259" title="dsc_1501" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1501.jpg" alt="dsc_1501" width="1024" height="681" /></p>
<p>Mounting plate down, and the square &#8220;washers&#8221;, and then the elastic stop nuts.  I chose not to use washers since the bolts were just that much too short. Tight with minimal torque to avoid ripping the washers through the plastic adapter plate.</p>
<p><img class="alignnone size-full wp-image-260" title="dsc_1504" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1504.jpg" alt="dsc_1504" width="1024" height="681" /></p>
<p>Underside shot showing how the brackets are arranged. Rear on the left side of frame, and front-right on the right side of frame.</p>
<p><img class="alignnone size-full wp-image-261" title="dsc_1506" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1506.jpg" alt="dsc_1506" width="1024" height="681" /></p>
<p>The finished mount!</p>
<p><img class="alignnone size-full wp-image-262" title="dsc_1507" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1507.jpg" alt="dsc_1507" width="1024" height="681" /></p>
<p><img class="alignnone size-full wp-image-263" title="dsc_1508" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1508.jpg" alt="dsc_1508" width="1024" height="681" /></p>
<p><img class="alignnone size-full wp-image-264" title="dsc_1509" src="http://www.foobert.com/blog/wp-content/uploads/2009/04/dsc_1509.jpg" alt="dsc_1509" width="1024" height="681" /></p>
<p>I like the narrow look of the E370 top-case. Doesn&#8217;t look so much like a flying saucer <img src='http://www.foobert.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2009/04/29/install-givi-e370n-bwm-f800st/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On tankless hot water heaters and sizing a natural gas pipe</title>
		<link>http://www.foobert.com/blog/2008/08/12/on-tankless-hot-water-heaters-and-sizing-a-natural-gas-pipe/</link>
		<comments>http://www.foobert.com/blog/2008/08/12/on-tankless-hot-water-heaters-and-sizing-a-natural-gas-pipe/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 05:27:13 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[flow]]></category>
		<category><![CDATA[formula]]></category>
		<category><![CDATA[natural gas]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/?p=101</guid>
		<description><![CDATA[<p>Researched tank-less hot water heaters and their voracious demand for natural gas. Decided to go for the Takagi T-K3-OS because: 1) it is for outdoor installation &#8212; no fancy exhaust flume required, and 2) its *minimum* BTU rating of 11K was one of the lowest I&#8217;d seen (considering that the maximum side was more than capable).</p>
<p>I [...]]]></description>
			<content:encoded><![CDATA[<p>Researched tank-less hot water heaters and their voracious demand for natural gas. Decided to go for the <a title="Takagi tankless hot water heater" href="http://www.takagi-usa.com/index.php?product_id=2&amp;page_id=2">Takagi T-K3-OS</a> because: 1) it is for outdoor installation &#8212; no fancy exhaust flume required, and 2) its <em>*minimum* </em>BTU rating of 11K was one of the lowest I&#8217;d seen (considering that the maximum side was more than capable).</p>
<p>I worried about the minimum rating because there&#8217;s a dirty little secret about tankless hot water heaters: they completely shut down when the flow is too low and you get no hot water.  Yup, your water conservation efforts of running a trickle of water will be for <em>not</em> with most gas fired tankless heaters.  And after having the T-K3 in use for a few days now, I&#8217;m glad I did worry &#8211;0.4 gpm doesn&#8217;t <em>quite </em>go low enough for my liking.  It&#8217;s probably just me, but the small stream of water I use when washing dishes is not enough to keep the water heater from turning off due to inadequate flow.  You don&#8217;t read about it often, but, this is one of the cons to a tankless hot water heater.</p>
<p>A second negative to the tankless setup is the amount of natural gas they consume at full water flow &#8212; 190,000 BTU&#8217;s for the T-K3. That&#8217;s more than my furnace, oven/range, clothes drier, and old water heater&#8230; <em>combined. </em>Most installs are going to need to upgrade the gas plumbing to provided enough gas flow.</p>
<p>Here&#8217;s an <a title="Natural gas flow calculator" href="http://www.engineeringtoolbox.com/natural-gas-pipe-calculator-d_1042.html" target="_blank">online natural gas flow calculator</a> that takes into consideration more than the standard 0.5&#8243; water column pressure drop that most flow tables use.</p>
<p>Here&#8217;s is a good <a href="http://www.foobert.com/blog/wp-content/uploads/2008/08/ayres_2002_lpefngv-upcar.pdf">paper that illustrates the application of the low-pressure gas flow formula</a> [1] used in the above calculator, and gives some helpful information about how to account for discontinuities. For example, a 90&amp;deg; elbow adds 2 linear ft of &#8220;equivalent pipe length&#8221; of resistance. Things that make you go, &#8220;huh&#8221;.</p>
<p>[1] found <a href="http://www.strandearthquake.com/pdfs/Papers/Ayres_2002_LPEFNGV-UPCAR.pdf">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2008/08/12/on-tankless-hot-water-heaters-and-sizing-a-natural-gas-pipe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Network tar using SSH</title>
		<link>http://www.foobert.com/blog/2008/02/18/network-tar-using-ssh/</link>
		<comments>http://www.foobert.com/blog/2008/02/18/network-tar-using-ssh/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 10:45:45 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Geek-Stuff]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/2008/02/18/network-tar-using-ssh/</guid>
		<description><![CDATA[<p>Never realized how easy it is to duplicate a directory tree from one machine to another through the network without building an intermediate tarball and finding room for it and the original files all at the same time. Simply pipe the tar command through ssh and untar it on the fly.</p>
<p>For example, suppose we have direcotry [...]]]></description>
			<content:encoded><![CDATA[<p>Never realized how easy it is to duplicate a directory tree from one machine to another through the network without building an intermediate tarball and finding room for it and the original files all at the same time. Simply pipe the tar command through ssh and untar it on the fly.</p>
<p>For example, suppose we have direcotry &#8220;pictures&#8221; on SRC_HOST machine and I want to replicate it over to DST_HOST, do this from the SRC_HOST machine:</p>
<blockquote><p>tar cvf &#8211; pictures | ssh user@DST_HOST &#8220;cat | tar xf -&#8221;</p></blockquote>
<p>Or, if you just wanted to create a compressed archive of &#8220;pictures&#8221; on DST_HOST:</p>
<blockquote><p> tar czvf &#8211; pictures | ssh user@DST_HOST &#8220;cat &gt; pictures.tar.gz&#8221;</p></blockquote>
<p>I&#8217;m ashamed to admit how many times I&#8217;ve jumped through hoops to find the free space on both machines due to making a compressed tarball, copying it over, unpacking it, then deleting the tarball.</p>
<p><strong>Update: </strong>While the above is functional, it&#8217;s all rather academic.  Not but a few days after writing this, I stumbled across &#8216;<a href="http://rsync.samba.org/ftp/rsync/rsync.html" target="_blank">rsync</a>&#8216;. Yeaeh, this is a little easier:</p>
<blockquote><p>rsync -avz  user@DST_HOST:pictures pictures</p></blockquote>
<p>And how to do it on a Mac and get all the resource forks to transfer to a non-HFS file system requires extra care and a <a href="http://www.quesera.com/reynhout/misc/rsync+hfsmode/" target="_blank">better version of rsync than Apple delivers</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2008/02/18/network-tar-using-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More resources on low-power computing</title>
		<link>http://www.foobert.com/blog/2008/02/17/more-resources-on-low-power-computing/</link>
		<comments>http://www.foobert.com/blog/2008/02/17/more-resources-on-low-power-computing/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 08:17:12 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Geek-Stuff]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[MythTV]]></category>
		<category><![CDATA[low power]]></category>
		<category><![CDATA[tuner card]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/2008/02/17/more-resources-on-low-power-computing/</guid>
		<description><![CDATA[<p>The Via Epia mini-ITX boards are some of the lowest power around. Epiacenter.com has a power simulator  that&#8217;s good for comparing the differences in boards.</p>
<p>Although, I&#8217;ve noticed that the VB7001G board I&#8217;m using has inconsistent results on the calculator &#8212; 16.23 watts idle versus 13.92 in &#8220;network mode&#8221;.  Take it for what it&#8217;s worth.</p>
<p>While [...]]]></description>
			<content:encoded><![CDATA[<p>The Via Epia mini-ITX boards are some of the lowest power around. <a href="http://www.epiacenter.com/powersim/powersim_v2/epiasimulator_v2.htm" target="_blank">Epiacenter.com has a power simulator</a>  that&#8217;s good for comparing the differences in boards.</p>
<p>Although, I&#8217;ve noticed that the VB7001G board I&#8217;m using has inconsistent results on the calculator &#8212; 16.23 watts <em>idle</em> versus 13.92 in &#8220;network mode&#8221;.  Take it for what it&#8217;s worth.</p>
<p>While I&#8217;m at it &#8212; first booted the Via VB7001G this evening. The sole purpose of this is for use as my main mail/web server as well as the mythtv backend. With a good power supply and a laptop HD for the primary (non-video) storage, I hope to have a box that idles at &lt;30 watts. Then the power hog P4 system connected to the TV would only be booted as needed.</p>
<p>Using an el&#8217;cheepo power supply and an old Maxtor HDD pulled from the shelf, it&#8217;s currently idling along at 46 W.  Not a bad start. I think there&#8217;s easily enough room for improvement to achieve the goal. Silent PC Review got their <a href="http://www.silentpcreview.com/article609-page4.html" target="_blank">EN12000 board down to 17W</a> at idle &#8212; mind you, they had a 5 W head start on me using a low-power variant of the C7 CPU  (not to mention 20% slower, and ~300% more expensive).</p>
<p>Here&#8217;s a good <a href="HTS721010G9AT00" target="_blank">review of popular 2.5&#8243; notebook hard drives</a>.</p>
<p><strong>Update:</strong> With a <a href="http://www.mini-box.com/picoPSU-90" target="_blank">90W Pico Power supply</a>  + the tuner card and 1.25 TB of disk on-line (2 disks, one 250MB laptop, and one 3.5&#8243; 1.0 TB Western Digital Caviar Green Power drives), the box is <em><u>idling at a grand total of 25 watts (AC wall power)</u>!</em>  Mission Accomplished.</p>
<p>There&#8217;s still some room to tweak that down a bit. The 1TB drive does not need to be spun-up full time. That should drop the idle power down a few extra watts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2008/02/17/more-resources-on-low-power-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macbook Pro keyboard randomly stops working</title>
		<link>http://www.foobert.com/blog/2007/11/28/macbook-pro-keyboard-randomly-stops-working/</link>
		<comments>http://www.foobert.com/blog/2007/11/28/macbook-pro-keyboard-randomly-stops-working/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 06:22:16 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[Geek-Stuff]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[MacBook Pro]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/2007/11/28/macbook-pro-keyboard-randomly-stops-working/</guid>
		<description><![CDATA[<p>Update 3:  I&#8217;ll cut to the chase &#8212; this update has fixed the problem for me. It&#8217;s been several weeks since the keyboard stopped responding. 
</p>
<p>Over Thanksgiving week, my new Apple Macbook Pro showed up.  While it was a refurbished model, it&#8217;s the latest generation (model 3,1; aka Santa Rosa) with the 15&#8243; screen using [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update 3:</strong>  I&#8217;ll cut to the chase &#8212; <a href="http://www.apple.com/support/downloads/macbookmacbookprosoftwareupdate11.html" target="_blank">this update</a> has fixed the problem for me. It&#8217;s been several weeks since the keyboard stopped responding. <a href="http://www.appleinsider.com/articles/07/12/18/apple_releases_update_for_freezing_macbook_keyboards.html" target="_blank"><br />
</a></p>
<p>Over Thanksgiving week, my new Apple Macbook Pro showed up.  While it was a refurbished model, it&#8217;s the latest generation (model 3,1; aka Santa Rosa) with the 15&#8243; screen using LED back lighting; which is <a href="http://www.engadget.com/2007/06/06/macbook-pro-backlight-comparison-led-vs-ccfl/" title="screen comparison" target="_blank">much brighter than fluorescent screens</a>.</p>
<p>Unfortunately, it has already got a problem &#8212; the keyboard completely stops working at random intervals, for no apparent reason. Every keyboard button is dead.  The track pad and &#8220;mouse button&#8221; work fine when this happens and the rudimentary diagnostics that allows one to do show that nothing out of the ordinary is happening &#8212; no kernel panics, no CPU load&#8230;</p>
<p>And, just as randomly as it stops working, it&#8217;ll suddenly start working again. <em>Highly frustrating.</em>  The only thing&#8217;s I&#8217;ve found that seam to accelerate it working again are:</p>
<ul>
<li>Put to sleep, then wake up.</li>
<li>Reboot.</li>
</ul>
<p>Apparently, <a href="http://forums.appleinsider.com/showthread.php?p=1175561&amp;posted=1#post1175561" target="_blank">I&#8217;m</a> <a href="http://discussions.apple.com/thread.jspa?threadID=1232311&amp;tstart=0" target="_blank">not</a> <a href="http://www.appletell.com/apple/comment/leopard-bringing-macbook-macbook-pro-keyboard-freezes/" target="_blank">the</a> <a href="http://www.powerpage.org/2007/11/leopard_losing_touch_with_macbook_pro_keyboards_trackpads.html" target="_blank">only</a> <a href="http://news.softpedia.com/news/MacBook-Pro-Leopard-Keyboard-Problems-Surface-70882.shtml" target="_blank">one</a> <a href="http://digg.com/apple/MacBook_MacBook_Pro_owners_suffer_keyboard_freezing_with_Leopard" target="_blank">with</a> <a href="http://forums.macrumors.com/showthread.php?t=379627" target="_blank">this</a> <a href="http://www.mac-forums.com/forums/showthread.php?t=85694" target="_blank">problem</a> (yes, those are all uniquely clickable).  The common theme: OS X 10.5, Leopard.  And, no, 10.5.1 didn&#8217;t help.</p>
<p>Some people reported that fixing disk permissions (!?!) solved their problem.  It&#8217;s simple enough to do and I&#8217;ve got nothing to lose. It did find a few problems; time will tell if it makes a difference.  If it becomes repeatable enough, it&#8217;s going to the Apple store for a demonstration at the &#8220;Genius Bar&#8221;.</p>
<p>Will keep you updated&#8230;</p>
<p><strong>Update 1: </strong>Nope, disk permissions didn&#8217;t fix it.</p>
<p><strong>Update 2:</strong>  Well, Apple acknowledged there was a problem and <a href="http://www.appleinsider.com/articles/07/12/18/apple_releases_update_for_freezing_macbook_keyboards.html" target="_blank">came up with software a fix.</a> I&#8217;ve installed it just now and we&#8217;ll see if it really addresses the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2007/11/28/macbook-pro-keyboard-randomly-stops-working/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GE Adora front loading washer does not drain</title>
		<link>http://www.foobert.com/blog/2007/04/02/ge-adora-front-loading-washer-does-not-drain/</link>
		<comments>http://www.foobert.com/blog/2007/04/02/ge-adora-front-loading-washer-does-not-drain/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 07:55:19 +0000</pubDate>
		<dc:creator>john</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[washer]]></category>

		<guid isPermaLink="false">http://www.foobert.com/blog/2007/04/02/ge-adora-front-loading-washer-does-not-drain/</guid>
		<description><![CDATA[<p>Just over a year ago, we bought a new G.E. Adora front loading washer (WHDVH626FWW to be exact) and, for the most part, it&#8217;s been a great unit. Very quiet except during the fastest spin cycles.</p>
<p>Twice in the last year it has stopped in the middle of a load and failed to drain the water out [...]]]></description>
			<content:encoded><![CDATA[<p>Just over a year ago, we bought a new G.E. Adora front loading washer (WHDVH626FWW to be exact) and, for the most part, it&#8217;s been a great unit. Very quiet except during the fastest spin cycles.</p>
<p>Twice in the last year it has stopped in the middle of a load and failed to drain the water out of drum.</p>
<p>The problem is that the drain has plugged.  There&#8217;s a coarse &#8220;screen&#8221; that traps lint and clothing, preventing them from getting into the drain pump (and thus, causing much more serious problems). Both times this has happened, there was a small article of clothing that slipped past gap at the front of the washer drum, thus finding its way into the trap and, eventually, clogging it completely.</p>
<p>The fix is remarkably simple thanks to GE placing the screen in an accessible location.</p>
<ol>
<li>First, remove the 3 screws holding the lower front panel in place.<br />
<br clear="left"/><img src="http://foobert.com/blog/wp-content/uploads/2007/04/washer_front.jpg" height="752" width="500" /></li>
<li>With the front panel off, locate the lint trap as shown below.<br />
<br clear="left"/><img src="http://foobert.com/blog/wp-content/uploads/2007/04/washer_drain.jpg" height="444" width="500" /></li>
<li>Place a large bowl underneath to catch the water that drains out. Note that the bowl pictured was <em>barely</em> large enough. I suggest getting a bigger one. If you don&#8217;t have the pedestal, you&#8217;ll have to be creative to find something to catch the water.</li>
<li>The drain simply threads out with normal threads (lefty loosey). It should be hand tight.  Be prepared for a fairly disgusting mess of junk to come out with the screen &#8212; lint, toothpicks, 2 (!) baby socks, etc. in my case.</li>
<li>Clean up the screen and thread it back into place. Re-install the cover and you&#8217;re done.</li>
</ol>
<p>I&#8217;ve found that leading up to the wash load stopping without draining, that the wash times get much longer than normal &#8212; like 3 hours.  So, if you&#8217;ve determined that the cycle length is too long you probably have a partially plugged screen that the washer is struggling with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.foobert.com/blog/2007/04/02/ge-adora-front-loading-washer-does-not-drain/feed/</wfw:commentRss>
		<slash:comments>73</slash:comments>
		</item>
	</channel>
</rss>

