<?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>Reflection Technology</title>
	<atom:link href="http://www.reflections.co.nz/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.reflections.co.nz/wordpress</link>
	<description>the chaotic meanderings of an inquisitive mind</description>
	<lastBuildDate>Fri, 20 Apr 2012 03:17:03 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-20150</generator>
		<item>
		<title>Converting _svn directories to .svn</title>
		<link>http://www.reflections.co.nz/wordpress/?p=203</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=203#comments</comments>
		<pubDate>Thu, 08 Mar 2012 11:00:00 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=203</guid>
		<description><![CDATA[I&#8217;ve been using TortoiseSVN on and to avoid grief with various Microsoft programs had been using the _svn hack (instead of .svn). I&#8217;ve now moved all main development to LinuxMint/Ubuntu and want to using standard svn commands which means I &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=203">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using TortoiseSVN on and to avoid grief with various Microsoft programs had been using the _svn hack (instead of .svn). </p>
<p> I&#8217;ve now moved all main development to LinuxMint/Ubuntu and want to using standard svn commands which means I need to find all the _svn directories and rename them to .svn. </p>
<p> Now I can almost certainly use find and xarg to do this but I whipped up this following little python script that does the job. </p>
<pre class="example"># I'll add the script later
# this is to test org2blog's publishing

def convert_svn(rootDir):
   files, dirs = os.walk(rootDir, topdown=False)
   for dir in dirs:
     if dir == "_svn":
       do_stuff()
</pre>
<p> Now let&#8217;s try publishing this to my wordpress blog using org2blog. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=203</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing software update error: NOPUBKEY 8771ADB0816950D8</title>
		<link>http://www.reflections.co.nz/wordpress/?p=194</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=194#comments</comments>
		<pubDate>Thu, 22 Dec 2011 02:45:03 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=194</guid>
		<description><![CDATA[Trying to do and software update on LinuxMint 11-Kaya (and the same will probably happen with Ubuntu 11.10) gives this error/warning: &#8220;W: GPG error: http://ppa.launchpad.net natty Release: The following signatures couldn&#8217;t be verified because the public key is not available: &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=194">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Trying to do and software update on LinuxMint 11-Kaya (and the same will probably happen with Ubuntu 11.10) gives this error/warning:</p>
<p style="padding-left: 30px;"><em>&#8220;W: GPG error: http://ppa.launchpad.net natty Release: The following signatures couldn&#8217;t be verified because the public key is not available: NO_PUBKEY 8771ADB0816950D8&#8243;</em></p>
<p>As having updates not completing correctly is unnerving, I went searching and found that is caused by the key for HandBrake video transcoder (http://handbrake.fr/) not being available. To fix this, download the key from a keyserver. I found the <em>subkeys.pgp.net</em> has this key.</p>
<pre><strong>gpg --keyserver subkeys.pgp.net --recv-keys 8771ADB0816950D8 </strong>
<strong>gpg --export --armor  8771ADB0816950D8 | sudo apt-key add -</strong></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=194</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Factoring Humanity</title>
		<link>http://www.reflections.co.nz/wordpress/?p=185</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=185#comments</comments>
		<pubDate>Sat, 17 Dec 2011 22:47:09 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[Books & Movies]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=185</guid>
		<description><![CDATA[I&#8217;ve just finished reading &#8220;Factoring Humanity&#8221; by Robert Sawyer. I enjoyed it. A good SciFi &#8211; to quote &#8220;A near-future philosophical SF story of first contact, quantum computing, and artificial intelligence&#8221; &#8211; i.e. lots of real science. I was following &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=185">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished reading <a title="&quot;Factoring Humanity&quot;" href="http://www.sfwriter.com/exfh.htm">&#8220;Factoring Humanity&#8221;</a> by Robert Sawyer. I enjoyed it. A good SciFi &#8211; to quote &#8220;<span style="font-size: small;"><strong>A near-future philosophical SF story of first contact, quantum computing, and artificial intelligence&#8221;</strong></span> &#8211; i.e. lots of real science. I was following up the &#8220;Drake pictogram&#8221; when I found this:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/QyInKT95eG0?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=185</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MMANA and offcentre/offset antenna feedpoints &#8211; an easy way</title>
		<link>http://www.reflections.co.nz/wordpress/?p=179</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=179#comments</comments>
		<pubDate>Fri, 18 Nov 2011 07:03:38 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Ham Radio]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=179</guid>
		<description><![CDATA[One way of having off-centre fed antennas is to use 3 wires, e.g. 10m, 0.1m, 20m and feed the antenna at the centre of the very short segment, but there is an easier way that uses just a single wire. &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=179">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Georgia;">One way of having off-centre fed antennas is to use 3 wires, e.g. 10m, 0.1m, 20m and feed the antenna at the centre of the very short segment, but there is an easier way that uses just a single wire.</span></p>
<p><span style="font-family: Georgia;"> You can specify the number of segments and the specify the feedpoint as a number, rather the just &#8216;w1b&#8217;, &#8216;w1c&#8217; or &#8216;w1e&#8217; (where b/c/e are beginning, centre or end).</span></p>
<p>It&#8217;s easiest to explaining using an example of a wire with a small number of segments:</p>
<p><span style="font-family: Georgia;">#e.g. a 6m wire long, 1m up, 0.8mm radius, 4 segments </span><br />
<span style="font-family: Georgia;"><br />
w1: 0,-3,1,    0,3, 1,   0.8,   4<br />
feedpoint (sources/Pulse) = w1b2</span></p>
<p>A wire above with 4 segments has 5 nodes (possible feedpoints). They&#8217;re numbered from &#8216;-1&#8242; to &#8216;n-1&#8242; where &#8216;n&#8217; is the number of segments.<br />
e.g.<br />
w1b-1   # beginning &#8211; the first coordinate (-1 really does work)<br />
w1b0    # (that&#8217;s b zero), 25%<br />
w1b1     # the centre<br />
w1b2    # 75%<br />
w1b3    # far end</p>
<p>Therefore if the number after the &#8220;b&#8221; is called the &#8220;feedpointNo&#8221;, we can get two useful equations:</p>
<p>fraction-along-wire = (feedpointNo+1)/no-of-segments</p>
<p>OR</p>
<p>feedPointNo = (fraction-along-wire * no-of-segments) &#8211; 1</p>
<p>A wire with 100 segments should be precise enough for most uses and is easy to work with.<br />
If want to feed it 20% of the way along:</p>
<p>feedPointNo = (0.20 * 100) &#8211; 1      # as 20% is 0.20</p>
<p>so w1b19  is the feedpoint.</p>
<p>I found the reference to digits after the wire/pulse in the documentation somewhere. The above writeup sounds like I had it all clear in my mind, but your question prompted me to go and play with MMANA and define a wire with 4 segments and play to sort out the details. Apparently the number of segments must be even, you can have 4 or 6 segments, but not 5.</p>
<p>IMPORTANT: make sure that the feedpoint number is between -1 and n-2</p>
<ul>
<li>if it&#8217;s n-1, the START button doesn&#8217;t seem to do anything, but there&#8217;s no warning</li>
<li>if it&#8217;s the same as the number of segments (or greater) the feedpoint vanishes, but the &#8220;Start&#8221; button does give an error message.</li>
</ul>
<p>Do try the example above with 4 segments. As there are so few it&#8217;s very clear in the geometry view where the feedpoint is.</p>
<p>Giovanni &#8211; ZL2GX</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=179</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MUSE (Massey University Smart Home) Waterflow detector</title>
		<link>http://www.reflections.co.nz/wordpress/?p=173</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=173#comments</comments>
		<pubDate>Sun, 25 Sep 2011 22:56:37 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[Electronics]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=173</guid>
		<description><![CDATA[MUSE (Massey University Smart Home) Waterflow detector This software is designed to control the Arduino microcontroller on the water turbulence waterflow detector. The idea is very simple &#8211; when water is flowing through a constriction (i.e. a tap), there&#8217;s turbulence &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=173">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>MUSE (Massey University Smart Home) Waterflow detector</p>
<p>This software is designed to control the Arduino microcontroller on the water turbulence waterflow detector.</p>
<p>The idea is very simple &#8211; when water is flowing through a constriction (i.e. a tap), there&#8217;s turbulence and this makes a noise. Unlike most other noises in a home, this one is (for most uses of a tap) constant for more than a second.</p>
<p>An electret microphone is attached near a tap and the sound amplifed and applied to a threshold detector which is fed to one of the external interrupt inputs of the Arduino. The software detects when the noise begins and starts timing. If the noise doesn&#8217;t fall below the threshold for a definable period (say 1.5 seconds), then it sets the &#8220;waterflow detected&#8221; output.</p>
<p>This is susceptible to other constant noises in the room (e.g. a blender) but this can be ameliorated by some accoustic insulation on the microphone (bluetack maybe?).</p>
<p>For the intended environment, the presence of loud and constant noises is unlikely to be a problem.</p>
<p>This software is release under the terms of the GNU Public General Licence <a href="http://www.gnu.org/licenses/gpl.html">http://www.gnu.org/licenses/gpl.html</a>.</p>
<p>I&#8217;ll upload the PC board and schematic shortly.</p>
<p>Giovanni Moretti<br />
g.moretti@massey.ac.nz</p>
<pre>/*
    Waterflow Detector for Massey University Smart Homes Research Project

    Accoustic Waterflow Detector Control Software
    Copyright (C) 2011 Giovanni S. Moretti

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.
 */

#include &lt;avr/sleep.h&gt;
#include &lt;avr/wdt.h&gt;
#include &lt;avr/power.h&gt;

// Inputs
int noiseDetectPin  = 2;    //  D2 - Int0 - Pin 4
int noiseLossPin    = 3;    //  D3 - Int1 - Pin 5

// Outputs
int waterflowOutput = 4;    //  D4 - Pin  6 - Hi to turn on 2N7000
int waterflowLED    = 5;    //  D5 - Pin 11 - Low to turn LED on
int batteryCheck    = 0;    // ADC0 - pin 23 - To ADC to check battery
int arduinoLED      = 13;

//==============================================================================
#define  NOISE_DETECTED     1
#define  NOISE_LOSS         2
#define  TIMEOUT            3
#define  OUTPUT_ACTIVE      4
#define  PIN_GONEBACKHIGH   5
#define  UNKNOWNINTERRUPT   6
#define  ATTEMPTTOPULLFROMEMPTYQUEUE 7

//==============================================================================
// Which Interrupt is currently active - Waiting for HIGH or LOW?

volatile int activeInterrupt;
#define  WAITINGFORHIGH 1
#define  WAITINGFORLOW  2
#define  NONE           0

#define OFF LOW
#define ON  HIGH

volatile int watchdogTickCount;
#define WATCHDOGPERIOD WDTO_30MS
#define WATCHDOGTICKTHRESHOLD 60

//==============================================================================
// Debug LEDs on Arduino development board
void arduinoLEDOn()
{
  digitalWrite(arduinoLED, ON);
}

void arduinoLEDOff()
{
  digitalWrite(arduinoLED, OFF);
}

//==============================================================================
// Functions to enable/disable both the waterflowOutput which
//==============================================================================

void waterflowOutputActive()          // Signal Waterflow detected
{
  digitalWrite(waterflowOutput, HIGH);  // Hi to turn 2N7000 on for Monnit Sensor
  digitalWrite(waterflowLED,    LOW);   // Low to turn onboard diagnostic LED on
}

void waterflowOutputReset()             // Waterflow stopped
{
  digitalWrite(waterflowOutput, LOW);   // Hi to turn 2N7000 on for Monnit Sensor
  digitalWrite(waterflowLED,    HIGH);  // Low to turn onboard diagnostic LED on
}

//==============================================================================
// Noise Detection Interrupt - Int0
// Signal that we've heard something and start a two second timer

void noiseDetectionInterruptHandler()
{
   detachInterrupt(0);                                  // To stop repeated Interrupts
   watchdogTimerEnableWithInterrupts(WATCHDOGPERIOD);        // Start Timer
   watchdogTickCount = 0;
   queueEvent(NOISE_DETECTED);                          // Flag to be checked after wakeup
}

//==============================================================================
// Watchdog Interrupt Handler - Goes off every ~30mS if the NoiseInput
// is still active, increment a counter if the noise is still present
// and the counter gets to 1.5 to 2 seconds, signal WaterflowDetected,
// otherwise just disable timer
// ==============================================================================

ISR(WDT_vect) {
  queueEvent(TIMEOUT);
  if (digitalRead(noiseDetectPin) == LOW) // Still Noise
    {  
      if (watchdogTickCount &lt; WATCHDOGTICKTHRESHOLD)
        watchdogTickCount++;
      else                            // Must be &gt;= to Threshold
        {
          waterflowOutputActive();
          queueEvent(OUTPUT_ACTIVE);
        }

      // Start Watchdog timer for next sample of Noise Deteched Pin
      watchdogTimerEnableWithInterrupts(WATCHDOGPERIOD);  
    }
  else  // Noise Stopped - Pin is HIGH, disable output &amp; reconnect interrupt handler
    {
      wdt_disable();
      queueEvent(NOISE_LOSS);
      waterflowOutputReset();
      watchdogTickCount = -1;
      attachInterrupt(0, noiseDetectionInterruptHandler, LOW);
    }
}
//==============================================================================
// Circular Queue: queue events under interrupt, and remove from the mainline

#define QUEUESIZE 25
volatile unsigned int hd, tl, count, tick = 0;
volatile unsigned int queue [QUEUESIZE];

void initEventQueue()
{
  hd = tl = count = tick = 0;
}

void queueEvent(int event)
{
  return;
  if (count &gt;= QUEUESIZE) return;      // Queue is full, ignore event
  queue[hd++] = (event &lt;&lt; 11) | watchdogTickCount;  // put item in queue
  if (hd == QUEUESIZE) hd == 0;        // point hd at next free slot
  count++;
  tick++;
}

int dequeueEvent()
{ int event;

  noInterrupts();
    if (queueSize() == 0)
      {
        interrupts();
        return(ATTEMPTTOPULLFROMEMPTYQUEUE);  // shouldn't ever happen
      }
    event = queue[tl++];
    if (tl == QUEUESIZE) tl == 0;
    count--;
  interrupts();
  return(event);
}

int queueSize()
{
  noInterrupts();
    int size = count;
  interrupts();
  return(size);
}

//=============================================================================
// Blink(n) - show a definable number of blinks for debugging.
//=============================================================================
void blink(int n)
{
  for (int i = 1; i&lt;= n; i++)
    {
      arduinoLEDOn(); delay(400); arduinoLEDOff(); delay(250);
    }
  delay(1000);
}

//=============================================================================
// snooze - put the CPU to sleep, return when awoken
//=============================================================================
void snooze(int sleepState)
{
    delay(3);                      // Let any serial output finish
    set_sleep_mode(sleepState);    // sleep mode is set here
    sleep_enable();                // enables the sleep bit in the MCUCR register
                                   // so sleep is possible. just a safety pin
    sleep_mode();                  // GO TO SLEEP!
    sleep_disable();               // WOKEN UP
}

//****************************************************************
// Watchdog Timer Code from the Nightingale
// 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
void setup_watchdog(int ii) {

  byte bb;
  int ww;
  if (ii &gt; 9 ) ii=9;
  bb=ii &amp; 7;
  if (ii &gt; 7) bb|= (1&lt;&lt;5);
  bb|= (1&lt;&lt;WDCE);
  ww=bb;

  MCUSR &amp;= ~(1&lt;&lt;WDRF);
  // start timed sequence
  WDTCSR |= (1&lt;&lt;WDCE)  ;// | (1&lt;&lt;WDE);
  // set new watchdog timeout value
  WDTCSR = bb | (1 &lt;&lt; WDIE);
}

void watchdogInterruptEnable()         // Enable Watchdog Interrupts
{
  WDTCSR |=  (1 &lt;&lt; WDIE);    
}

void watchdogInterruptDisable()          // Disable Watchdog Interrupts
{
  WDTCSR &amp;= ~(1 &lt;&lt; WDIE);
}

void watchdogTimerEnableWithInterrupts(int period)
{
  //  wdt_enable(period);
  setup_watchdog(period);
  //  watchdogInterruptEnable();
}
//==============================================================================
// Setup() - executed ONCE
//==============================================================================
void setup() {
 /*
    // Thanks to IONITO - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291420085

    // Prevent interrupts during this phase
    //     noInterrupts();

     // Temporarily turn off watchdog and kill watchdog if running
     wdt_reset();
     MCUSR = 0;
     WDTCSR |= _BV(WDCE) | _BV(WDE);
     WDTCSR = 0;

     // Turn OFF Analog parts
     ACSR = ACSR &amp; 0b11110111 ;     // clearing ACIE prevent analog interupts happening during next command
     ACSR = ACSR | 0b10000000 ;     // set ACD bit powers off analog comparator
     ADCSRA = ADCSRA &amp; 0b01111111;  // clearing ADEN turns off analog digital converter
     ADMUX &amp;= B00111111;            // Comparator uses AREF/GND and not internally generated references

     power_adc_disable();           // redundant code if you check the above lines
     power_spi_disable();
     power_twi_disable();
     power_usart0_disable();        

     // Disabling timers:
     TCCR1B = 0b00000000;           // I need timer0 and timer; only timer1 is disabled

     // Put all I/O pins into input mode and internal pull-up

     for (int i=0; i&lt;=13;i++)
       {
         pinMode(i, INPUT);
         digitalWrite(i, HIGH);
       }
*/
 //========================= End of snipped code ==================================

  // power_usart0_disable();  

  // Define the Input Pins
  pinMode(noiseDetectPin, INPUT);       // Single Pin Active Low ==&gt; Noise Detected
  digitalWrite(noiseDetectPin, HIGH);   // turn on pullup resistor

  // Define the Output Pins
  pinMode(waterflowOutput, OUTPUT);
  pinMode(waterflowLED,    OUTPUT);
  pinMode(arduinoLED,      OUTPUT);        // Onboard LED on Arduino Uno

  // Blink All the LEDs as a startup/debug signal
  for (int i=1; i&lt;= 5; i++) {
      arduinoLEDOn();    waterflowOutputActive();   delay(300);
      arduinoLEDOff();   waterflowOutputReset();    delay(300);
  }
  Serial.begin(115200);
  Serial.println("Giovanni's Waterflow Monitor");

  // All set up, now start mainline
  waterflowOutputReset();   // All outputs OFF

  initEventQueue();  

  //wait for a noise to occur:  Int0 - Pin 4 will go low
  attachInterrupt(0, noiseDetectionInterruptHandler, LOW);
}

//=============================================================================
//                    The eternally looping mainline
//=============================================================================
  void loop() {

    while (int currentCount = queueSize() &gt; 0)
      {
        Serial.print ("QueueSize = "); Serial.print(currentCount);  

        unsigned int wakeupReason = dequeueEvent();
        unsigned int thisTick  = wakeupReason &amp; 2047;
        unsigned int event     = wakeupReason &gt;&gt; 11;

        if (event == NOISE_LOSS)          Serial.println(" - Noise Loss: Timer stopped &amp; Output Reset.");
        else
        if (event == NOISE_DETECTED)      Serial.println(" - Noise Detected: timer started ...");
        else
        if (event == TIMEOUT)            
          {
             Serial.print(" - Timeout");
             Serial.print (" - WD Tick: "); Serial.println(thisTick);
          }
        else
        if (event == OUTPUT_ACTIVE)         Serial.println(" - Waterflow Output Active");
        else
        if (event == ATTEMPTTOPULLFROMEMPTYQUEUE)
                                          Serial.println(" - attempt to pull from empty queue");   
        else
          {
            Serial.print(" - UnknownEvent Event "); Serial.println(event);
          }
      }
    //Serial.println("Sleeping ...\n");
    //    delay(400);
    snooze(SLEEP_MODE_PWR_DOWN);
    //Serial.println("WAKE UP");
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=173</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RDiff-Backup</title>
		<link>http://www.reflections.co.nz/wordpress/?p=167</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=167#comments</comments>
		<pubDate>Sun, 25 Sep 2011 11:36:00 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=167</guid>
		<description><![CDATA[finding progress &#8211; use &#8220;lsof &#124; grep rdiff-backup&#8221; The lsof command lists open files &#8230; Converting an existing directory to an rdiff-backup directory This seems to work happily as long as the &#8220;&#8211;force&#8221; option is used rdiff-backup --force --print-statistics srcDir &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=167">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">finding progress &#8211; use &#8220;lsof | grep rdiff-backup&#8221; </h3>
<div class="outline-text-3" id="text-1">
<p>The lsof command lists open files &hellip; </p>
</div></div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">Converting an existing directory to an rdiff-backup directory </h3>
<div class="outline-text-3" id="text-2">
<p>This seems to work happily as long as the &#8220;&ndash;force&#8221; option is used<br/> </p>
<pre class="example">
rdiff-backup --force --print-statistics  srcDir  existingCopyOfsrcDir
</pre>
<p>and simply creates the metadata as long <b>as the file details are identical</b> This means that their timestamps must match, not just their contents. </p>
<p> I was puzzled about this as I initially used &#8220;cp -R dir /tmp/dir&#8221; and it insisted on copying over the contents again, whereas using &#8220;rsync -av dir /tmp/dir&#8221; followed by the rdiff-backup only created the metadata. Naturally meld (a file/director content comparator) didn&#8217;t show any differences (it ignores timestamps). There was only the additional &#8220;rdiff-backup-data&#8221; directory, but puzzlingly even if it was deleted  rdiff-backup seemed to know not to copy the files again. It finally clicked that the timestamps might be the cause.  </p>
<p> What made me persist was the page that indicated this should work <a href="http://www.backupcentral.com/phpBB2/two-way-mirrors-of-external-mailing-lists-3/rdiff-backup-23/possible-to-convert-an-existing-data-set-to-rdiff-backup-95666/">on backupcentral.com</a>. </p>
</div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=167</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs IDO mode &#8211; a brilliant video</title>
		<link>http://www.reflections.co.nz/wordpress/?p=165</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=165#comments</comments>
		<pubDate>Fri, 11 Feb 2011 08:15:00 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=165</guid>
		<description><![CDATA[I&#8217;ve just been watching a tutorial video on the importance of uniform commands &#8211; ones you can use anywhere &#8211; centred around Emacs. This is worth checking out http://www.vimeo.com/1013263 Interestingly enough (and it&#8217;s emphasised in the video), this sort of &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=165">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p> I&#8217;ve just been watching a tutorial video on the importance of uniform commands &#8211; ones you can use anywhere &#8211; centred around Emacs. </p>
<p> This is worth checking out <a href="http://www.vimeo.com/1013263">http://www.vimeo.com/1013263</a> </p>
<p> Interestingly enough (and it&#8217;s emphasised in the video), this sort of uniformity makes for great gains in productivity. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=165</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Inside Job. [Weekly Head Voices #33]</title>
		<link>http://www.reflections.co.nz/wordpress/?p=148</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=148#comments</comments>
		<pubDate>Sat, 11 Dec 2010 10:01:14 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=148</guid>
		<description><![CDATA[The interesting post below about scientific visualisation, music and the spread of ideas, and included this video with some really nice visualisations: Darkstar: Gold from Evan Boehm on Vimeo. The complete article is at An Inside Job. [Weekly Head Voices &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=148">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The interesting post below about scientific visualisation, music and the spread of ideas, and included this video with some really nice visualisations:</p>
<p><iframe src="http://player.vimeo.com/video/15391189" width="400" height="225" frameborder="0"></iframe>
<p><a href="http://vimeo.com/15391189">Darkstar: Gold</a> from <a href="http://vimeo.com/peelyoureyes">Evan Boehm</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>The complete article is at<br />
<a href="http://cpbotha.net/2010/11/21/an-inside-job-weekly-head-voices-33/">An Inside Job. [Weekly Head Voices #33]</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=148</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to know/find out/see my ssh host key</title>
		<link>http://www.reflections.co.nz/wordpress/?p=144</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=144#comments</comments>
		<pubDate>Fri, 10 Dec 2010 07:53:52 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=144</guid>
		<description><![CDATA[Finding the host key fingerprint is useful for sorting out the SSH message about the host fingerprint message not matching the stored values and warning about man-in-the-middle attacks. Here&#8217;s how to find the fingerprint from the public keys: ssh-keygen -l &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=144">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Finding the host key fingerprint is useful for sorting out the SSH message about the host fingerprint message not matching the stored values and warning about man-in-the-middle attacks.</p>
<p>Here&#8217;s how to find the fingerprint from the public keys:</p>
<p><code>ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub<br />
ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub<br />
ssh-keygen -l -f /etc/ssh/ssh_host_key.pub<br />
</code></p>
<p>via <a href="http://www.linuxquestions.org/questions/red-hat-31/how-to-know-find-out-see-my-ssh-host-key-609114/">How to know/find out/see my ssh host key</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=144</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to know/find out/see my ssh host key</title>
		<link>http://www.reflections.co.nz/wordpress/?p=142</link>
		<comments>http://www.reflections.co.nz/wordpress/?p=142#comments</comments>
		<pubDate>Fri, 10 Dec 2010 07:53:24 +0000</pubDate>
		<dc:creator>Giovanni</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.reflections.co.nz/wordpress/?p=142</guid>
		<description><![CDATA[How to know/find out/see my ssh host key. This is useful when sorting out the SSH warning about a host-key being different from the stored value and warning about man-in-the-middle attacks. To get the fingerprint from the public key, use &#8230; <a href="http://www.reflections.co.nz/wordpress/?p=142">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.linuxquestions.org/questions/red-hat-31/how-to-know-find-out-see-my-ssh-host-key-609114/">How to know/find out/see my ssh host key</a>.</p>
<p>This is useful when sorting out the SSH warning about a host-key being different from the stored value and warning about man-in-the-middle attacks.</p>
<p>To get the fingerprint from the public key, use one of:</p>
<pre class="bbcodeblock" style="margin: 0px -99999px 0px 0px; padding: 3px; border: 1px inset; width: 98%; height: 98px; text-align: left; overflow: auto;" dir="ltr">ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub
ssh-keygen -l -f /etc/ssh/ssh_host_key.pub</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.reflections.co.nz/wordpress/?feed=rss2&#038;p=142</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

