<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1901117817157837759</id><updated>2012-02-17T00:29:02.215+13:00</updated><category term='replacement'/><category term='Paul Raven'/><category term='ATM'/><category term='C'/><category term='cartridge'/><category term='visibility'/><category term='Tcl'/><category term='ADSL'/><category term='regexp'/><category term='undefined PLT symbol'/><category term='Windows'/><category term='settings'/><category term='quotation marks'/><category term='Gina24'/><category term='test'/><category term='module'/><category term='mouse'/><category term='smbclient'/><category term='message'/><category term='OpenPAM'/><category term='DSL'/><category term='spaces'/><category term='IP'/><category term='link'/><category term='QEMU'/><category term='xmessage'/><category term='posting'/><category term='variables'/><category term='substitution'/><category term='backup'/><category term='pam_cracklib.so'/><category term='Nokia'/><category term='customer service'/><category term='shoe-shining'/><category term='scope'/><category term='instant message'/><category term='Linux kernel subsystem USB'/><category term='language'/><category term='openpam_ttyconv'/><category term='bash'/><category term='atmping'/><category term='compile'/><category term='xhost'/><category term='Expect'/><category term='JACK'/><category term='timezone'/><category term='Raven'/><category term='global'/><category term='tape'/><category term='PostgreSQL'/><category term='regular expressions'/><category term='pkgsrc'/><category term='NetBSD'/><category term='disable'/><category term='securetty'/><category term='initial'/><category term='jackd'/><category term='filename'/><category term='media'/><category term='Microsoft'/><category term='ntpd'/><category term='optical encoder'/><category term='NTP'/><category term='rotary encoder'/><category term='New Zealand'/><category term='xargs'/><category term='PulseAudio'/><category term='Killing Joke'/><category term='gnu'/><category term='preferences'/><category term='kill'/><category term='LTO-3'/><category term='band'/><category term='Gentoo'/><category term='string'/><category term='executable'/><category term='extern'/><category term='buffer'/><category term='find'/><category term='Ihug'/><category term='Arduino'/><category term='shell'/><category term='Clint Rickards'/><category term='Pure Data'/><category term='mbuffer'/><category term='ld'/><category term='LTO-2'/><category term='database'/><category term='time zone'/><category term='WinPopUp'/><category term='speed'/><category term='PgFoundry'/><category term='echomixer'/><category term='localtime'/><category term='login'/><category term='LTO'/><category term='static'/><category term='programming'/><category term='Pd'/><category term='streaming'/><category term='Aleister Crowley'/><category term='Echo'/><category term='music'/><category term='PAM'/><category term='Tcl anagram string sort characters list'/><category term='first'/><category term='smbd'/><category term='post'/><category term='Echo Audio'/><category term='blog'/><category term='M1122'/><category term='ALSA'/><category term='respawn'/><category term='unix'/><category term='Linux'/><category term='history'/><category term='intellectual property'/><category term='samba'/><category term='gcc'/><category term='quotes'/><category term='Ubuntu'/><category term='profile'/><title type='text'>Vacuole’s Tech Blog</title><subtitle type='html'>Some kind of mélange of computing hardware, software, music and sound recording.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-8997198109975957276</id><published>2010-08-14T18:54:00.003+12:00</published><updated>2010-08-14T18:58:54.672+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PulseAudio'/><category scheme='http://www.blogger.com/atom/ns#' term='JACK'/><category scheme='http://www.blogger.com/atom/ns#' term='respawn'/><category scheme='http://www.blogger.com/atom/ns#' term='kill'/><category scheme='http://www.blogger.com/atom/ns#' term='disable'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='jackd'/><title type='text'>Disabling PulseAudio in Ubuntu</title><content type='html'>&lt;p&gt;PulseAudio &lt;em&gt;really&lt;/em&gt; wants to stay running, but I want to run JACK instead if doing audio recording work.  In Ubuntu 10, PulseAudio appears to be run from &lt;code&gt;init&lt;/code&gt;, which respawns it automatically.  To get it to go away:&lt;/p&gt;

&lt;pre&gt;
echo "autospawn = no" &gt;&gt; ~/.pulse/client.conf
pulseaudio --kill
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-8997198109975957276?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/8997198109975957276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=8997198109975957276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/8997198109975957276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/8997198109975957276'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2010/08/disabling-pulseaudio-in-ubuntu.html' title='Disabling PulseAudio in Ubuntu'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-7666975279199438920</id><published>2010-06-09T13:41:00.004+12:00</published><updated>2010-06-09T18:08:20.417+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tcl anagram string sort characters list'/><title type='text'>Sort characters in a string in Tcl</title><content type='html'>&lt;p&gt;This could be handy for identifying anagrams, for example.&lt;/p&gt;

&lt;pre&gt;
% join [lsort [split abacab {}]] {}
aaabbc
&lt;/pre&gt;

&lt;p&gt;For case-insensitivity:&lt;/p&gt;

&lt;pre&gt;
% join [lsort [split [string tolower PaTeD] {}]] {}
adept
&lt;/pre&gt;

&lt;p&gt;To return just the set of characters used:&lt;/p&gt;

&lt;pre&gt;
% join [lsort -unique [split [string tolower Mississippi] {}]] {}
imps
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-7666975279199438920?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/7666975279199438920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=7666975279199438920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7666975279199438920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7666975279199438920'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2010/06/sort-characters-in-string-in-tcl.html' title='Sort characters in a string in Tcl'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-4468916578341597212</id><published>2009-07-04T00:24:00.004+12:00</published><updated>2009-07-04T00:27:56.468+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regexp'/><category scheme='http://www.blogger.com/atom/ns#' term='Tcl'/><category scheme='http://www.blogger.com/atom/ns#' term='replacement'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='substitution'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expressions'/><title type='text'>Regular expression substitutions in Tcl</title><content type='html'>&lt;p&gt;Just a quick note to self on how to use Tcl&amp;rsquo;s &lt;code&gt;regsub&lt;/code&gt; command:&lt;/p&gt;

&lt;pre&gt;
% regsub -all {pattern} "input string containing pattern" "replacement" target
1
% puts $target
input string containing replacement
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-4468916578341597212?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/4468916578341597212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=4468916578341597212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/4468916578341597212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/4468916578341597212'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2009/07/regular-expression-substitutions-in-tcl.html' title='Regular expression substitutions in Tcl'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-3342460900906440591</id><published>2009-06-01T00:08:00.003+12:00</published><updated>2009-06-01T00:19:56.404+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux kernel subsystem USB'/><title type='text'>Linux kernel subsystem home pages</title><content type='html'>&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://www.kernel.org/"&gt;Main Linux kernel home page&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://linux-mm.org/"&gt;Memory management&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"&gt;udev (device manager and dynamic &lt;code&gt;/dev&lt;/code&gt; directory)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://ieee80211.sourceforge.net/"&gt;IEEE 802.11 (networking)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.linux-usb.org/"&gt;USB stack&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.linux1394.org/"&gt;IEEE 1394/FireWire&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.bluez.org/"&gt;BlueZ (Bluetooth stack)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.linux-mtd.infradead.org/"&gt;Memory technology devices (e.g. flash)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.alsa-project.org/"&gt;ALSA (audio drivers)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://www.ffado.org/"&gt;FFADO (IEEE 1394/FireWire audio&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://linux-uvc.berlios.de/"&gt;UVC (USB Video Class) drivers (webcams)&lt;/a&gt;&lt;/li&gt;

&lt;!--  &lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt; --&gt;

&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-3342460900906440591?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/3342460900906440591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=3342460900906440591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3342460900906440591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3342460900906440591'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2009/06/linux-kernel-subsystem-home-pages.html' title='Linux kernel subsystem home pages'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-7254351598736510223</id><published>2009-05-04T00:00:00.004+12:00</published><updated>2009-05-04T00:03:35.384+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Shell History Stats</title><content type='html'>&lt;p&gt;Inspired by reading an old thread on my local Linux user group mailing list:&lt;/p&gt;

&lt;pre&gt;
$ history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head

94 povray
58 source
55 ./wacdump
32 l
31 cd
25 dcraw
22 cp
21 gimp
20 less
19 gvim
&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;:)&lt;/code&gt;  I should run that more often.  Maybe feed to Twitter.  Or not.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-7254351598736510223?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/7254351598736510223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=7254351598736510223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7254351598736510223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7254351598736510223'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2009/05/shell-history-stats.html' title='Shell History Stats'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-3408674198826165966</id><published>2009-05-02T01:32:00.011+12:00</published><updated>2009-05-03T18:36:31.350+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pd'/><category scheme='http://www.blogger.com/atom/ns#' term='optical encoder'/><category scheme='http://www.blogger.com/atom/ns#' term='rotary encoder'/><category scheme='http://www.blogger.com/atom/ns#' term='Tcl'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='Arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='Expect'/><category scheme='http://www.blogger.com/atom/ns#' term='Pure Data'/><title type='text'>Arduino mouse control for Pure Data using Expect</title><content type='html'>&lt;p&gt;Here&amp;rsquo;s a little &lt;a href="http://expect.nist.gov/"&gt;Expect&lt;/a&gt; script for getting a control stream into &lt;a href="http://puredata.info/"&gt;Pure Data&lt;/a&gt;, in my case from a butchered Genius serial mouse that I wrote an interrupt-driven &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; driver for.  The driver sends a &amp;ldquo;&lt;code&gt;+&lt;/code&gt;&amp;rdquo; or &amp;ldquo;&lt;code&gt;-&lt;/code&gt;&amp;rdquo; down the serial line each time the optical rotary encoder in the mouse guts moves a click.  This assumes the Arduino is connected on &lt;code&gt;/dev/ttyUSB0&lt;/code&gt; (e.g. on Linux).  Use a &lt;code&gt;[netreceive 3000]&lt;/code&gt; (or whatever port you like) in Pure Data to receive.&lt;/p&gt;

&lt;p&gt;Note: this only uses one mouse axis, requiring two interrupts.  Apparntley the Arduino Mega has six interrupt lines externally available, so I'll be adding another axis of control soon.&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/expect

# Take Arduino mouse '+'/'-' stream and convert into Pure Data FUDI format, without buffering.

# To run:
# expect mouse-pd.expect | pdsend 3000

# TODO: this should probably use Expect's stty command to set the serial port up to match the Arduino program.

eval spawn -noecho cat /dev/ttyUSB0
log_user 0
while (true) {
 expect {
  + {send_user "1;\n"}
  -- {-} {send_user -- "-1;\n"}
 }
}
&lt;/pre&gt;

&lt;p&gt;Here&amp;rsquo;s the Arduino code:&lt;/p&gt;

&lt;pre&gt;
// Simple interrupt-driven driver for quadrature encoder input (e.g. from a disassembled photoelectric ball mouse).
// Many Arduino boards provide only two interrupts, I believe: INT0 (on pin 2) and INT1 (on pin 3):
const int intA = 0, intAPin = 2;
const int intB = 1, intBPin = 3;

volatile int A = 0, B = 0;  // For storing the pin states for future reference to determine rotation direction
int A_Prev = 0, B_Prev = 0;  // Should these be volatile, too?



void setup()
{
  // Configure digital input pins for interrupt-driven timing:
  pinMode(intAPin, INPUT); digitalWrite(intAPin, LOW);
  pinMode(intBPin, INPUT); digitalWrite(intBPin, LOW);
  
  Serial.begin(115200);
  
  // Read initial state of the pins:
  A_Prev = digitalRead(intAPin);
  B_Prev = digitalRead(intBPin);
  A = digitalRead(intAPin);
  B = digitalRead(intBPin);

  attachInterrupt(intA, changeA, CHANGE);
  attachInterrupt(intB, changeB, CHANGE);
}


void changeA()
{
  A = !A;
  output();
  A_Prev = A;
}


void changeB()
{
  B = !B;
  output();
  B_Prev = B;
}


void output()
{
  if (A == B_Prev)
    Serial.print("+");
  else if (B == A_Prev)
    Serial.print("-");
  else
    Serial.print('?');
}


void loop() {}
&lt;/pre&gt;

&lt;p&gt;Microcontroller programming is fun, BTW!  I&amp;rsquo;d never written a driver or an interrupt handler until two days ago.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-3408674198826165966?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/3408674198826165966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=3408674198826165966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3408674198826165966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3408674198826165966'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2009/05/arduino-mouse-control-for-pure-data.html' title='Arduino mouse control for Pure Data using Expect'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-7019798670111705617</id><published>2008-01-29T16:34:00.001+13:00</published><updated>2009-05-03T18:28:55.362+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xargs'/><category scheme='http://www.blogger.com/atom/ns#' term='quotation marks'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='spaces'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='quotes'/><category scheme='http://www.blogger.com/atom/ns#' term='filename'/><title type='text'>Using find and xargs</title><content type='html'>&lt;p&gt;Bah, I can never remember the options for making these play nicely with unusual filenames (spaces, quotation marks), so here is a note-to-self:&lt;p&gt;

&lt;pre&gt;
find . -print0 | xargs -0 -i echo {}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-7019798670111705617?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/7019798670111705617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=7019798670111705617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7019798670111705617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/7019798670111705617'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2008/01/using-find-and-xargs.html' title='Using find and xargs'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-3063318851059425468</id><published>2007-12-02T22:42:00.000+13:00</published><updated>2007-12-02T22:51:04.501+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Tcl'/><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='PgFoundry'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Accessing PostgreSQL from Tcl</title><content type='html'>&lt;p&gt;From version 8.0 of &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;, the Tcl client library (pgtcl) has apparently been dropped from the core distribution.  On &lt;a href="http://www.gentoo.org/"&gt;Gentoo GNU/Linux&lt;/a&gt;, the Tcl client library does not seem to be built, even with the &lt;code&gt;tcl&lt;/code&gt; &lt;code&gt;USE&lt;/code&gt; flag.  There are apparently three PostgreSQL-for-Tcl packages now available separately on &lt;a href="http://pgfoundry.org/"&gt;PgFoundry&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://pgfoundry.org/projects/pgtclng/"&gt;&lt;code&gt;http://pgfoundry.org/projects/pgtclng/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://pgfoundry.org/projects/pgintcl/"&gt;&lt;code&gt;http://pgfoundry.org/projects/pgintcl/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="http://pgfoundry.org/projects/pgtcl/"&gt;&lt;code&gt;http://pgfoundry.org/projects/pgtcl/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AFAICT, &lt;code&gt;pgtclng&lt;/code&gt; is the current one to get.  I downloaded, built and installed this from &lt;code&gt;pgtcl1.6.0.tar.gz&lt;/code&gt; and tested availability as follows:&lt;/p&gt;

&lt;pre&gt;
$ tclsh
% package require Pgtcl
1.6.0
&lt;/pre&gt;

&lt;p&gt;So far so good...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-3063318851059425468?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/3063318851059425468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=3063318851059425468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3063318851059425468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3063318851059425468'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/12/accessing-postgresql-from-tcl.html' title='Accessing PostgreSQL from Tcl'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-6599912231296127666</id><published>2007-10-28T01:08:00.000+13:00</published><updated>2007-10-29T01:16:13.659+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Clint Rickards'/><category scheme='http://www.blogger.com/atom/ns#' term='Aleister Crowley'/><title type='text'>The Beast?</title><content type='html'>&lt;p&gt;
&lt;h2&gt;&lt;a href="http://en.wikipedia.org/wiki/Clint_Rickards"&gt;Clint Rickards&lt;/a&gt;&lt;/h2&gt;
&lt;img src="http://www.odt.co.nz/phpThumb/phpThumb.php?src=F:\olive\Repository\ODT\2007\10\27\1\Img\Pc0010900.jpg&amp;w=180&amp;h=600&amp;fltr[]=wmt|(c)|1|Br|FFFFCC|Times%20New%20Roman|2&amp;f=jpg&amp;sx=4&amp;sy=4&amp;sw=0.95&amp;sh=0.95" /&gt;
&lt;!--img src="http://www.newstalkzb.co.nz/img_up/rickardscourt.jpg" /--&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;h2&gt;&lt;a href="http://en.wikipedia.org/wiki/Aleister_Crowley"&gt;Aleister Crowley&lt;/a&gt;&lt;/h2&gt;
&lt;img src="http://cache.viewimages.com/xt/3376794.jpg?v=1&amp;g=ha&amp;s=1" /&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-6599912231296127666?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/6599912231296127666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=6599912231296127666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6599912231296127666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6599912231296127666'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/beast.html' title='The Beast?'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-8417250605133114233</id><published>2007-10-26T22:31:00.000+13:00</published><updated>2007-10-26T22:50:16.387+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='shoe-shining'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='LTO-3'/><category scheme='http://www.blogger.com/atom/ns#' term='backup'/><category scheme='http://www.blogger.com/atom/ns#' term='cartridge'/><category scheme='http://www.blogger.com/atom/ns#' term='tape'/><category scheme='http://www.blogger.com/atom/ns#' term='mbuffer'/><category scheme='http://www.blogger.com/atom/ns#' term='LTO'/><category scheme='http://www.blogger.com/atom/ns#' term='buffer'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><category scheme='http://www.blogger.com/atom/ns#' term='LTO-2'/><title type='text'>Tape Backups: Keeping the Tape Streaming</title><content type='html'>&lt;p&gt;An &lt;a href="http://en.wikipedia.org/wiki/Linear_Tape-Open#LTO-3"&gt;LTO-3&lt;/a&gt; tape drive requires a pretty high sustained data input rate in order to keep streaming.  If the tape cannot be kept streaming, it will stop and restart, and possibly start &amp;ldquo;shoe-shining&amp;rdquo;: frequent stopping and restarting due to buffer under-runs.  This behaviour incurs much more wear and tear on the tape and drive.&lt;/p&gt;

&lt;p&gt;There are several things I have tried with good results to reduce or avoid this problem:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Disable compression on the tape drive.&lt;/li&gt;
  &lt;li&gt;Use previous generation media (LTO-2 media should work fine in an LTO-3 drive, but at LTO-2 speeds).&lt;/li&gt;
  &lt;li&gt;Use the host system&amp;rsquo;s RAM to buffer the stream.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The third option assumes your host system has quite a bit of free memory, but can be very effective.  A useful utility for doing this is &lt;a href="http://www.maier-komor.de/mbuffer.html"&gt;&lt;code&gt;mbuffer&lt;/code&gt;&lt;/a&gt;.
  In the following example, a 1&amp;nbsp;GiB buffer is used (&lt;code&gt;-m 1024M&lt;/code&gt;), with a tape block size of 262&amp;nbsp;144 bytes (&lt;code&gt;-s 262144&lt;/code&gt;), and the output rate is limited to 25&amp;nbsp;MiB/s (&lt;code&gt;-R 25M&lt;/code&gt;).  The input stream is provided by &lt;code&gt;tar&lt;/code&gt;, using the same block size (&lt;code&gt;tar&lt;/code&gt; measures it in units of 512 bytes).  You may have to tune the rate to suit the source drive and workload.&lt;/p&gt;

&lt;pre&gt;$ tar -b 512 -cpf - /.../wherever | mbuffer -s 262144 -R 25M -m 1024M -P 100 --md5 -f -o /dev/nst0&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-8417250605133114233?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/8417250605133114233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=8417250605133114233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/8417250605133114233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/8417250605133114233'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/tape-backups.html' title='Tape Backups: Keeping the Tape Streaming'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-1954907753801612169</id><published>2007-10-26T21:02:00.000+13:00</published><updated>2007-10-26T21:15:51.389+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='Gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='QEMU'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Building QEMU on Gentoo</title><content type='html'>&lt;p&gt;&lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;QEMU&lt;/a&gt; won't compile properly with &lt;a href="http://gcc.gnu.org/"&gt;GCC&lt;/a&gt; version 4.  On Gentoo, you can revert to another installed GCC version using the &lt;code&gt;gcc-config&lt;/code&gt; command:&lt;/p&gt;

&lt;pre&gt;
$ gcc-config -l
 [1] x86_64-pc-linux-gnu-3.4.6
 [2] x86_64-pc-linux-gnu-3.4.6-hardened
 [3] x86_64-pc-linux-gnu-3.4.6-hardenednopie
 [4] x86_64-pc-linux-gnu-3.4.6-hardenednopiessp
 [5] x86_64-pc-linux-gnu-3.4.6-hardenednossp
 [6] x86_64-pc-linux-gnu-4.1.2 *

$ gcc-config 1
$ source /etc/profile
$ emerge -av app-emulation/qemu
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-1954907753801612169?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/1954907753801612169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=1954907753801612169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1954907753801612169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1954907753801612169'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/building-qemu-on-gentoo.html' title='Building QEMU on Gentoo'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-3701111778522827265</id><published>2007-10-24T18:30:00.002+13:00</published><updated>2009-05-28T23:54:52.422+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='DSL'/><category scheme='http://www.blogger.com/atom/ns#' term='customer service'/><category scheme='http://www.blogger.com/atom/ns#' term='atmping'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSL'/><category scheme='http://www.blogger.com/atom/ns#' term='ATM'/><category scheme='http://www.blogger.com/atom/ns#' term='Ihug'/><category scheme='http://www.blogger.com/atom/ns#' term='M1122'/><title type='text'>Customer Service</title><content type='html'>&lt;p&gt;I&amp;rsquo;m sure everyone has a tale of tedium while dealing with customer service.  Here&amp;rsquo;s a run-down of my recent attempt to troubleshoot my new static IP address.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Phoned Ihug technical support to find out what my static IP address was, and if I had to request that it be enabled (which I did).&lt;/li&gt;
  &lt;li&gt;Noticed that the PPP connection on my modem/router was failing to be established.  The DSL link was OK.&lt;/li&gt;
  &lt;li&gt;Phoned Ihug again to ask for help.  Checked settings: username, password, VPI, VCI, etc.; all OK.  Anyway, it was all working yesterday.  Ihug staff are not trained for my particular model of modem (Nokia M1122) (even though it was the only model available when DSL started here), so I was directed to Nokia customer services.&lt;/li&gt;
  &lt;li&gt;Dialled the Nokia 0800 number I was given.  Disconnected number!&lt;/li&gt;
  &lt;li&gt;Dialed directory services and was given the correct Nokia 0800 number (1 digit out).&lt;/li&gt;
  &lt;li&gt;Talked to someone from Nokia Asia support, who informed me that they only deal with Nokia phone products.  They gave me the (again, wrong) 0800 number to try, and also a branch office number in Wellington.&lt;/li&gt;
  &lt;li&gt;Called the Wellington Nokia branch number, only to find it was a residential number.&lt;/li&gt;
  &lt;li&gt;Dialed directory services to confirm the Wellington number, and to find an Auckland Nokia branch number to try instead.&lt;/li&gt;
  &lt;li&gt;Called the Auckland Nokia branch number, and navigated the menu system to &amp;ldquo;modem support&amp;rdquo;.&lt;/li&gt;
  &lt;li&gt;This got me through to someone at DataComm, who informed me that they no longer do technical support for Nokia modems, and forwarded my call to another number.&lt;/li&gt;
  &lt;li&gt;This got me to an identical sounding menu, but this time choosing the modem support option got me a &amp;ldquo;not in service&amp;rdquo; message.&lt;/li&gt;
  &lt;li&gt;Called the Auckland Nokia branch number again, and opted to speak to an operator, who told me that Nokia no longer have anything to do with the modem business here, and that they no longer provide support for any modem products.&lt;/li&gt;
  &lt;li&gt;Called Ihug technical support to tell them of my fruitless search.  The support representative tried to find someone who knew something about the M1122, but couldn&amp;rsquo;t.  They suggested I consult the user manual.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, I don&amp;rsquo;t have any Internet access at the moment, but I feel I should do Nokia a favour and tell them about the wrong telephone numbers they are giving out.  However, I believe the following M1122 command should help me determine whether the problem is with the ATM link:&lt;/p&gt;

&lt;pre&gt;
atmping 0 100 segment
atmping 0 100 end-to-end
&lt;/pre&gt;

&lt;p&gt;I will try these out when I get home.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-3701111778522827265?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/3701111778522827265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=3701111778522827265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3701111778522827265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/3701111778522827265'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/customer-service.html' title='Customer Service'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-1503906914560238524</id><published>2007-10-24T18:23:00.000+13:00</published><updated>2007-10-24T18:29:55.690+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Raven'/><category scheme='http://www.blogger.com/atom/ns#' term='Killing Joke'/><category scheme='http://www.blogger.com/atom/ns#' term='band'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='Paul Raven'/><title type='text'>RIP Paul Raven</title><content type='html'>&lt;p&gt;&lt;a href="http://www.killingjoke.com/"&gt;Killing Joke&lt;/a&gt; bass player &lt;a href="http://en.wikipedia.org/wiki/Paul_Raven"&gt;Paul Raven&lt;/a&gt; died of a suspected heart attack in Geneva on October 20.  It&amp;rsquo;s a bit hard to believe; I won&amp;rsquo;t ever get to see that particular configuration of the band playing live.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-1503906914560238524?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/1503906914560238524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=1503906914560238524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1503906914560238524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1503906914560238524'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/rip-paul-raven.html' title='RIP Paul Raven'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-2682413184739769521</id><published>2007-10-09T20:19:00.000+13:00</published><updated>2007-10-09T20:24:49.081+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IP'/><category scheme='http://www.blogger.com/atom/ns#' term='intellectual property'/><title type='text'>A thought on “intellectual property”</title><content type='html'>&lt;p&gt;A thought on &amp;ldquo;intellectual property&amp;rdquo;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;There can be nothing in the Universe that did not already have the potential to be.&lt;/li&gt;
  &lt;li&gt;Therefore, there is no invention&amp;mdash;only discovery.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-2682413184739769521?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/2682413184739769521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=2682413184739769521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/2682413184739769521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/2682413184739769521'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/10/thought-on-property.html' title='A thought on &amp;ldquo;intellectual property&amp;rdquo;'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-2143916334065073762</id><published>2007-09-30T17:27:00.000+13:00</published><updated>2007-09-30T17:45:03.192+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='executable'/><category scheme='http://www.blogger.com/atom/ns#' term='ld'/><category scheme='http://www.blogger.com/atom/ns#' term='scope'/><category scheme='http://www.blogger.com/atom/ns#' term='link'/><category scheme='http://www.blogger.com/atom/ns#' term='extern'/><category scheme='http://www.blogger.com/atom/ns#' term='variables'/><category scheme='http://www.blogger.com/atom/ns#' term='visibility'/><category scheme='http://www.blogger.com/atom/ns#' term='static'/><category scheme='http://www.blogger.com/atom/ns#' term='global'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><category scheme='http://www.blogger.com/atom/ns#' term='module'/><title type='text'>C basics: using separate files/modules</title><content type='html'>&lt;p&gt;My C programming experience is pretty limited, and recently I was trying to convert a monolithic program into separate files/modules.  Here are a few notes on the process, in particular the various C language storage classes.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Each source file (e.g. &lt;code&gt;mymodule.c&lt;/code&gt;) will be compiled to an object file (e.g. &lt;code&gt;mymodule.o&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;The object files are then linked together to form an executable file or image (i.e. the program file).&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;static&lt;/code&gt; global variables are visible to all functions within the current source file.  They are not accessible to functions defined in other files.&lt;/li&gt;
  &lt;li&gt;Global variables are &lt;code&gt;static&lt;/code&gt; unless declared otherwise.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;static&lt;/code&gt; local variables (i.e. &lt;code&gt;static&lt;/code&gt; variables declared within a function) are initialised at run-time but not re-initialised when the function is called.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;extern&lt;/code&gt; global variables are visible to all modules, not just functions within the current source file.  Use these for variables to be shared among modules/files.&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;extern&lt;/code&gt; variables cannot be initialised in the file declaring them as &lt;code&gt;extern&lt;/code&gt;.  However, other modules sharing them can initialise them, as they are not &lt;code&gt;extern&lt;/code&gt; in that context.&lt;/li&gt;
  &lt;li&gt;If sharing a module among others, write its function prototypes in a header (&lt;code&gt;.h&lt;/code&gt;) file, and the function definitions in a source (&lt;code&gt;.c&lt;/code&gt;) file.  Then just &lt;code&gt;#include&lt;/code&gt; the &lt;code&gt;.h&lt;/code&gt; file in any dependent modules (do not include the &lt;code&gt;.c&lt;/code&gt; file, as this will double up on definitions!).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Typical compilation and linking routine to create an executable:&lt;/p&gt;

&lt;pre&gt;
$ gcc -c -o mymodule.o mymodule.c
$ gcc -c -o anothermodule.o anothermodule.c
$ gcc -c -o main.o main.c
# Linking stage; note use of gcc, not ld!
$ gcc -o myprogram main.o mymodule.o anothermodule.o
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-2143916334065073762?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/2143916334065073762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=2143916334065073762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/2143916334065073762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/2143916334065073762'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/c-basics-writing-and-compiling-with.html' title='C basics: using separate files/modules'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-6692149143948452798</id><published>2007-09-30T17:12:00.000+13:00</published><updated>2007-10-02T20:34:46.708+13:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='timezone'/><category scheme='http://www.blogger.com/atom/ns#' term='Gentoo'/><category scheme='http://www.blogger.com/atom/ns#' term='localtime'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='time zone'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='ntpd'/><category scheme='http://www.blogger.com/atom/ns#' term='New Zealand'/><category scheme='http://www.blogger.com/atom/ns#' term='NTP'/><title type='text'>New Zealand Daylight Savings Time changes</title><content type='html'>&lt;p&gt;From 2007, daylight savings time in New Zealand starts one week earlier and finishes two weeks later.  My &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt; system still had the old timezone information, and so wasn't going to switch over on Sunday September 30 as it should:&lt;/p&gt;

&lt;pre&gt;
$ zdump -v /etc/localtime | grep 2007
/etc/localtime  Sat Mar 17 13:59:59 2007 UTC = Sun Mar 18 02:59:59 2007 NZDT isdst=1
/etc/localtime  Sat Mar 17 14:00:00 2007 UTC = Sun Mar 18 02:00:00 2007 NZST isdst=0
/etc/localtime  Sat Oct  6 13:59:59 2007 UTC = Sun Oct  7 01:59:59 2007 NZST isdst=0
/etc/localtime  Sat Oct  6 14:00:00 2007 UTC = Sun Oct  7 03:00:00 2007 NZDT isdst=1
&lt;/pre&gt;

&lt;p&gt;Solution: update the &lt;code&gt;timezone-data&lt;/code&gt; package:&lt;/p&gt;

&lt;pre&gt;
$ emerge -av sys-libs/timezone-data
&lt;/pre&gt;

&lt;p&gt;(Alternatively, download the timezone data source directly from &lt;a href="ftp://elsie.nci.nih.gov/pub/tzdata2007g.tar.gz"&gt;&lt;code&gt;ftp://elsie.nci.nih.gov/pub/tzdata2007g.tar.gz&lt;/code&gt;&lt;/a&gt; and compile using &lt;code&gt;zic&lt;/code&gt;.)&lt;/p&gt;

&lt;p&gt;And restart the &lt;a href="http://www.ntp.org/"&gt;Network Time Protocol&lt;/a&gt; server, for good measure:&lt;/p&gt;
&lt;pre&gt;
$ /etc/init.d/ntpd stop
$ ntpd -qgx
$ /etc/init.d/ntpd start
$ # wait a few minutes, then check the time...
$ ntptime
&lt;/pre&gt;

&lt;p&gt;Once NTP&amp;rsquo;s timekeeping has settled down, you might also want to set the hardware clock.&lt;/p&gt;

&lt;pre&gt;
$ hwclock --systohc
$ hwclock --show
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-6692149143948452798?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/6692149143948452798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=6692149143948452798' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6692149143948452798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6692149143948452798'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/new-zealand-daylight-savings-time.html' title='New Zealand Daylight Savings Time changes'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-1544005886501216551</id><published>2007-09-13T20:03:00.000+12:00</published><updated>2007-09-14T01:07:48.229+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALSA'/><category scheme='http://www.blogger.com/atom/ns#' term='profile'/><category scheme='http://www.blogger.com/atom/ns#' term='echomixer'/><category scheme='http://www.blogger.com/atom/ns#' term='Gina24'/><category scheme='http://www.blogger.com/atom/ns#' term='Echo'/><category scheme='http://www.blogger.com/atom/ns#' term='settings'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='preferences'/><category scheme='http://www.blogger.com/atom/ns#' term='Echo Audio'/><title type='text'>Simulating profiles with Echomixer</title><content type='html'>&lt;p&gt;&lt;a href="http://www.webalice.it/g_pochini/ead/ea-emixer.html"&gt;Echomixer&lt;/a&gt; is a mixer control utility for Echo Audio sound interfaces (I have a Gina24 PCI) on Linux.  These cards have quite a few settings to control, and don't seem to fit into the generic controller approach taken by &lt;code&gt;alsamixer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;abbr title="As far as I can tell"&gt;AFAICT&lt;/abbr&gt;, Echomixer doesn&amp;rsquo;t support anything like a profile or the loading of a specific settings file: it always uses the file &lt;code&gt;~/.Emixer_Gina24&lt;/code&gt;.  I would like to be able to configure the card for different applications, such as multitrack recording, gaming, playing a DVD, etc.  For example, for DVD playback, I want to use the internal audio clock so that the sampling rate can be set exactly, without the need to resample the audio (e.g. for 46.08 kHz audio playback for 24 FPS movies deployed as 25 FPS PAL @ 48 kHz), with the PCM output level at 0 dB.  For multitrack recording, I want to use the external ADAT clock so I can record the additional 8 channels I have on a chained ADAT interface, with the PCM output level at around -9 dB so I can hear live stuff easily over the backing tracks.&lt;/p&gt;

&lt;p&gt;TODO: details, scripts, etc.&lt;/p&gt;

&lt;p&gt;Bah, only it looks like Echomixer doesn&amp;rsquo;t save the clock source in its settings file.  Dang.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-1544005886501216551?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/1544005886501216551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=1544005886501216551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1544005886501216551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/1544005886501216551'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/simulating-profiles-with-echomixer.html' title='Simulating profiles with Echomixer'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-4079391936602767235</id><published>2007-09-12T21:48:00.000+12:00</published><updated>2007-09-13T14:14:29.403+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='pkgsrc'/><category scheme='http://www.blogger.com/atom/ns#' term='pam_cracklib.so'/><category scheme='http://www.blogger.com/atom/ns#' term='PAM'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='securetty'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenPAM'/><category scheme='http://www.blogger.com/atom/ns#' term='undefined PLT symbol'/><category scheme='http://www.blogger.com/atom/ns#' term='openpam_ttyconv'/><title type='text'>Installing PAM package on NetBSD a bad idea?</title><content type='html'>&lt;p&gt;While installing and testing the &lt;a href="http://roundcube.net/"&gt;RoundCube&lt;/a&gt; Web-mail system on my &lt;a href="http://www.netbsd.org/"&gt;NetBSD&lt;/a&gt;-based Web server and network router, I found myself unable to shut down &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; (even with &lt;code&gt;kill -9&lt;/code&gt;).  Eventually I relented and restarted the OS, ruining my uptime of about 160 days in the process.&lt;/p&gt;

&lt;p&gt;When the system came back up, I couldn&amp;rsquo;t log in!  After entering the username, I just got returned to the login prompt after the following rudeness:&lt;/p&gt;

&lt;pre&gt;
login: Undefined PLT symbol "openpam_ttyconv (symnum=47)"
&lt;/pre&gt;

&lt;p&gt;The kernel mesages also included something like:&lt;/p&gt;

&lt;pre&gt;
PAM unable to dlopen(/usr/pkg/lib/security/pam_cracklib.so)
&lt;/pre&gt;

&lt;p&gt;Network access to the machine seemed to be down as well.  Not the best scenario for trying to fix anything!&lt;/p&gt;

&lt;p&gt;A reboot into single-user mode (&lt;code&gt;-s&lt;/code&gt; kernel bootloader option) or two later, and some fun trying to research and resolve the problem with my main network router out of action(!), and I discovered that networking was OK after all, and I could &lt;code&gt;ssh&lt;/code&gt; in and try to fix things.&lt;/p&gt;

&lt;p&gt;It seems installing the PAM pluggable authentication modules system from pkgsrc was the culprit.  I can&amp;rsquo;t remember when or why in the last 160 days I did this, but apparently I did, and it didn&amp;rsquo;t cause any problems until the recent reboot.  It seems the &lt;code&gt;login&lt;/code&gt; program was being dynamically linked to the PAM library from the package, not the main system one (which apparently already existed).  With the extra PAM package installed, &lt;code&gt;ldd /usr/bin/login&lt;/code&gt; showed that it was linking to &lt;code&gt;/usr/pkg/lib/libpam.so.0&lt;/code&gt;, which didn't work.  After uninstalling the extra PAM package, it was linked instead to &lt;code&gt;/usr/lib/libpam.so.0&lt;/code&gt;, which worked fine.&lt;/p&gt;

&lt;p&gt;AFAICT, there are two PAM libraries in pkgsrc, in addition to the main system one: &lt;a href="http://www.openpam.org/"&gt;openpam&lt;/a&gt; and &lt;a href="http://www.kernel.org/pub/linux/libs/pam/"&gt;Linux PAM&lt;/a&gt; (I think the one I had installed was the Linux one, PAM-0.77nb5).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-4079391936602767235?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/4079391936602767235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=4079391936602767235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/4079391936602767235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/4079391936602767235'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/installing-pam-from-pkgsrc-on-netbsd.html' title='Installing PAM package on NetBSD a bad idea?'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-5666150334885996451</id><published>2007-09-12T21:20:00.000+12:00</published><updated>2007-09-13T14:07:28.576+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhost'/><category scheme='http://www.blogger.com/atom/ns#' term='smbclient'/><category scheme='http://www.blogger.com/atom/ns#' term='WinPopUp'/><category scheme='http://www.blogger.com/atom/ns#' term='xmessage'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='instant message'/><category scheme='http://www.blogger.com/atom/ns#' term='smbd'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='message'/><title type='text'>Windows WinPopUp messages and Linux</title><content type='html'>&lt;p&gt;I've known for a while that &lt;a href="http://www.samba.org/"&gt;Samba&lt;/a&gt; provides a WinPopUp client, for sending instant messages to Microsoft Windows clients over the network.  It&amp;rsquo;s a facility of the &lt;code&gt;smbclient&lt;/code&gt; utility, and can be used like so:&lt;/p&gt;

&lt;pre&gt;
$ smbclient -M SomeWindowsBox
Connected. Type your message, ending it with a Control-D
Hi, Windows user!
sent 19 bytes
&lt;/pre&gt;

&lt;p&gt;The user on the computer named &lt;code&gt;SomeWindowsBox&lt;/code&gt; will see the message pop up on their screen (possibly stealing focus and making an annoying dinging sound).&lt;/p&gt;

&lt;p&gt;&lt;code&gt;smbclient&lt;/code&gt; will also accept input from &lt;code&gt;stdin&lt;/code&gt;. For example, to report disk free space remotely:&lt;/p&gt;

&lt;pre&gt;
$ df -h | smbclient -M AdminMachine
&lt;/pre&gt;

&lt;p&gt;It turns out you can also receive such messages on Linux, via Samba&amp;rsquo;s &lt;code&gt;smbd&lt;/code&gt; server daemon.  To enable this, add a &lt;code&gt;message command&lt;/code&gt; directive in the Samba configuration file of the receiving system (usually &lt;code&gt;/etc/samba/smb.conf&lt;/code&gt;).  Here is the example from the &lt;code&gt;smb.conf&lt;/code&gt; manual page:&lt;/p&gt;

&lt;pre&gt;
message command = csh -c 'xedit %s;rm %s' &amp;
&lt;/pre&gt;

&lt;p&gt;This didn&amp;rsquo;t work on my &lt;a href="http://www.gentoo.org/"&gt;Gentoo&lt;/a&gt; box for a number of reasons: I hadn't installed the &lt;code&gt;csh&lt;/code&gt; or &lt;code&gt;xedit&lt;/code&gt; commands, for a start!  I also have two X Window System displays, and wanted the pop-up messages to appear on a specific display, requiring the &lt;code&gt;DISPLAY&lt;/code&gt; environment variable to be set.  Also, I had to use &lt;code&gt;xhost&lt;/code&gt; to tell the X server to allow  &lt;code&gt;xmessage&lt;/code&gt; from the local system to display its goodies.&lt;/p&gt;

&lt;p&gt;Here is the setting that I ended up using in &lt;code&gt;smb.conf&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;
message command = /bin/bash -c 'export DISPLAY=:0.1; /usr/bin/xmessage -file %s; rm %s' &amp;
&lt;/pre&gt;


&lt;p&gt;TODO: integrate with the &lt;a href="http://modeemi.fi/~tuomov/ion/"&gt;Ion&lt;/a&gt; window manager, perhaps to get the message to appear in an appropriate frame without stealing focus, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-5666150334885996451?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/5666150334885996451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=5666150334885996451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/5666150334885996451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/5666150334885996451'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/sending-and-receiving-windows-winpopup.html' title='Windows WinPopUp messages and Linux'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-5140427266465800684</id><published>2007-09-12T15:03:00.000+12:00</published><updated>2007-09-13T13:50:51.438+12:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='first'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='post'/><category scheme='http://www.blogger.com/atom/ns#' term='initial'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='posting'/><title type='text'>First Post</title><content type='html'>&lt;p&gt;How can I call myself a geek if I don&amp;rsquo;t even have a blog?!  This is my attempt to remedy the situation.  I will just have to hope that I&amp;rsquo;ll have something to say.&lt;/p&gt;

&lt;p&gt;Even in the worst-case scenario, this blog will just degenerate into a collection of notes-to-self, which (with any luck) others might also find useful.&lt;/p&gt;

&lt;p&gt;Wish me luck!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-5140427266465800684?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/5140427266465800684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=5140427266465800684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/5140427266465800684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/5140427266465800684'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/first-post.html' title='First Post'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1901117817157837759.post-6251131601283847125</id><published>2007-09-12T00:00:00.000+12:00</published><updated>2007-09-13T20:04:14.761+12:00</updated><title type='text'>HTML Markup Testing</title><content type='html'>&lt;p&gt;This is just a scratchpad for trying out different markup.&lt;/p&gt;

&lt;pre&gt;0 1 2 3&lt;/pre&gt;

&lt;pre&gt;0 1 2 3
A B C D&lt;/pre&gt;

&lt;p&gt;&lt;abbr title="eXtensible Markup Language"&gt;XML&lt;/abbr&gt;&lt;/p&gt;

&lt;blockquote&gt;&amp;ldquo;Blessed are the forgetful, for they get the better even of their blunders.&amp;rdquo;&lt;/blockquote&gt;

&lt;p&gt;&lt;samp&gt;[.bashrc]&lt;br /&gt;
[.profile]&lt;br /&gt;
~&gt; &lt;/samp&gt;&lt;kbd&gt;df -h&lt;/kbd&gt;&lt;br /&gt;
&lt;samp&gt;Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;
D:\cygwin\usr\X11R6\lib\X11\fonts&lt;br /&gt;
                       92G   43G   50G  47% /usr/X11R6/lib/X11/fonts&lt;br /&gt;
D:\cygwin\bin          92G   43G   50G  47% /usr/bin&lt;br /&gt;
D:\cygwin\lib          92G   43G   50G  47% /usr/lib&lt;br /&gt;
D:\cygwin              92G   43G   50G  47% /&lt;br /&gt;
df: `/cdrom': No medium found&lt;br /&gt;
d:                     92G   43G   50G  47% /user&lt;br /&gt;
b:                     64M     0   64M   0% /cygdrive/b&lt;br /&gt;
c:                     21G   18G  2.4G  89% /cygdrive/c&lt;br /&gt;
g:                    1.0T  941G   84G  92% /cygdrive/g&lt;br /&gt;
m:                    1.0T  941G   84G  92% /cygdrive/m&lt;br /&gt;
v:                    1.0T  941G   84G  92% /cygdrive/v&lt;br /&gt;
w:                    102G   56G   47G  55% /cygdrive/w&lt;br /&gt;
x:                    1.0T  941G   84G  92% /cygdrive/x&lt;br /&gt;
z:                    1.0T  941G   84G  92% /cygdrive/z&lt;br /&gt;
&lt;/samp&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1901117817157837759-6251131601283847125?l=dampfnudel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dampfnudel.blogspot.com/feeds/6251131601283847125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1901117817157837759&amp;postID=6251131601283847125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6251131601283847125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1901117817157837759/posts/default/6251131601283847125'/><link rel='alternate' type='text/html' href='http://dampfnudel.blogspot.com/2007/09/html-markup-testing.html' title='HTML Markup Testing'/><author><name>vacuole</name><uri>http://www.blogger.com/profile/02512132127751906614</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
