<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
<title>HardingBlog</title>
<link href="http://gnuisance.net/" />

<author>

 <name>HardingBlog</name>

</author>

 

<id>http://gnuisance.net/</id>
<subtitle type="html">HardingBlog</subtitle>
<generator uri="http://ikiwiki.info/" version="2.53.3">ikiwiki</generator>
<updated>2008-12-21T21:26:22Z</updated>
<geo:lat>39.960596</geo:lat><geo:long>-74.560605</geo:long><link rel="self" href="http://feeds.feedburner.com/gnuisance" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/gnuisance" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgnuisance" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
	<title>Putting Twitter and Jabber Back Together Again</title>
	<id>http://gnuisance.net/blog/twitter-jabber/</id>
	<link href="http://feedproxy.google.com/~r/gnuisance/~3/wI5C4i4hVDw/" />
	
	 <author><name>David A. Harding</name></author>
	
	
	 <rights type="xhtml" xml:lang="en">
	  <div xmlns="http://www.w3.org/1999/xhtml">
	   
	    Verbatim copying and distribution of this entire article is permitted in any medium if this notice is preserved.
	    Copyright 2008 by David A. Harding.
	   
	  </div>
	 </rights>
	
	
	 
	  <category term="beth" />
	 
	  <category term="debian" />
	 
	  <category term="examples" />
	 
	  <category term="fs" />
	 
	  <category term="lemasney" />
	 
	  <category term="mycode" />
	 
	
	<updated>2008-12-21T21:26:22Z</updated>
	<published>2008-11-09T04:19:00Z</published>
	
	 <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">
	  <p class="right">
<em>Humpty Dumpty sat on a wall.</em><br />
<em>Humpty Dumpty had a great fall.</em><br />
<em>All the king's horses and all the king's men</em><br />
<em>Couldn't put Humpty together again. </em>
</p>

<p>
When I began using <a href="http://en.wikipedia.org/wiki/Twitter">Twitter</a>, 
I entered my <a href="http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol">XMPP</a>
(Jabber) address and had my friends' updates sent straight to my instant
messaging client. Those updates made me feel like Twitter was a convenient
chatroom filled with updates from my best friends, and despite my
initial reservations about the service, I became addicted. But my
addiction was suddenly curtailed when, without announcement, the Twitter
Jabber service went down and never came back up. Although started as
a temporary service outage, Twitter <a href="http://status.twitter.com/post/53978711/im-not-coming-soon">recently announced</a> they are
suspending their Jabber service indefinitely. </p>

<p>
In the months since the Twitter Jabber service went down, I've tried
nearly every free software Twitter client, but none of them made me
happy.<sup>[1]</sup> I want Twitter Jabber back.  I guess I'll have to do it
myself.
</p>

<h2>How to Send Twitter Updates to Your Jabber Account</h2>

<p>
The program, <code>twidge</code>, is a <a href="http://en.wikipedia.org/wiki/Twidge">full-featured command-line Twitter
client.</a>  It's a recent addition to Debian Unstable and may not be
packaged for other free software operating systems.  Yet it
only has two dependencies -- both common -- and can be readily installed
on any Unix-style operating system.  After you tell it your Twitter
username and password by running <code>twidge setup</code>, you can get a list of
your recent unseen updates in the following format by running the
following command:
</p>

<pre class="output">
<strong>twidge lsrecent -us</strong>
&lt;loxosceles&gt;           20K and going strong. #nanowrimo
&lt;dossy&gt;                Are Twitter spammers called Spitters?
&lt;pleia2&gt;               Mmmm, naps </pre>

<p>
The -us, which is optional, makes twidge show only (u)nseen updates
while (s)aving the identifier of the most recent message so you don't see it or
older messages the next time you use -u.
</p>

<p>
The program, <code>sendxmpp</code>, is <a href="http://sendxmpp.platon.sk/">a XMPP (Jabber) client that works
similar to the classic BSD mailx command.</a> It's been around for several
years and is probably in most major distributions. Even if it's not in
your distribution, its only requirements are perl and the Jabber perl
module, which should be easy to obtain. After you tell it your Jabber
username and password by editing <em>~/.sendxmpp</em>, you can send a Jabber to
me by running the following command<sup>[2]</sup>:
</p>

<pre class="output">
echo "Hello, Dave." | sendxmpp dharding@jabber.org</pre>

<p>
Although I enjoy feedback from my readers, you'll get better results
from this and following examples if you replace my Jabber address with
yours. </p>

<p>
After you've set up both twidge and sendxmpp, you can very simply connect
them together:
</p>

<pre class="output">
twidge lsrecent -us | sendxmpp dharding@jabber.org </pre>

<p>
When generating output, twidge automatically wraps lines so that they
appear nicely formatted in a terminal. But when sent to my Jabber
client, the wrapped lines look ugly, so I use twidge's -l option to
generate detailed unwrapped output and then remove the details I
don't want:
</p>

<pre class="output">
twidge lsrecent -usl | cut -f2,4 | sendxmpp dharding@jabber.org </pre>

<p>
In the above command, sendxmpp sends an empty Jabber message to me even
when there are no new Twitter updates. That isn't a problem for me: my
Jabber client automatically ignores empty messages. But if you have
problems with empty messages, I suggest you install the <a href="http://joey.kitenet.net/code/moreutils/">moreutils suite
of command-line utilities</a> and use the If Not Empty program. For example:
</p>

<pre class="output">
twidge lsrecent -usl | cut -f2,4 | ifne sendxmpp dharding@jabber.org </pre>

<p>
The original Twitter Jabber sent updates as soon as they arrived.
There's no way to duplicate that with the above command, but during the
months since Twitter Jabber died, I've become used to a
five-minute delay between updates, so I use my crontab to send me the
most recent twitters every five minutes:
</p>

<pre class="code">
## Jabber me unseen twitters
*/5 * * * * twidge lsrecent -usl | cut -f2,4 | sendxmpp dharding@jabber.org </pre>

<p>
(Please don't put my Jabber address in your crontab. If I start
receiving all of your friends' Twitter updates, I'll be forced to block
you, which I don't want to do.)
</p>

<p>
Although you'll automatically receive Twitter updates in Jabber now, you
still won't be able to send them through Jabber.  If that's important to
you, I suggest you <a href="http://excla.im/">examine the excla.im service</a>.  
It's not important to me; I just type: </p>

<pre class="output">
twidge update "My new Twitter setup (with Jabber!): http://gnuisance.net/twitter-jabber.html" </pre>

<h2>New Advanced Twitter Features</h2>

<p>
Passing your Twitters through a pipe before reading them creates many
new opportunities.  I'm excited that it lets me filter out 
uninteresting posts from people I otherwise find interesting.  For
example, my friend <a href="http://twitter.com/lemasney">John LeMasney</a> recently started Twittering every song
he listens to:
</p>

<blockquote>
<p>
&lt;lemasney&gt; I am listening to: Megadeth - One Thing<br />
&lt;lemasney&gt; I am listening to: Megadeth - Megadeth - Paranoid<br />
&lt;lemasney&gt; I am listening to: Megadeth - Never Say Die<br />
...
</p>
</blockquote>

<p>
I had to unsubscribe from John because his numerous minor updates 
hide his and my other friends' major updates, but now I can re-subscribe
to John and filter out the updates I don't want to see: 
</p>

<pre class="output">
twidge lsrecent -usl | cut -f2,4 | grep -v 'lemasney.*I am listening to: ' | sendxmpp dharding@jabber.org </pre>

<p>
With a little programing, which I haven't done yet, I can even direct
unimportant updates to a file that gets automatically emailed to me once
a day while sendxmpp continues to send me important and uncategorized
updates.  This makes me happy: I not only got back a feature I've been
missing, but I got a new feature too.
</p>

<hr />

<p>
[1] Every graphical Twitter client I used had much the same interface --
    a copy of the Twitter web interface.  That isn't the only way to
    present micro-blogging data, and I doubt it's the best way either.
    Moreover, development on Twitter clients seemingly ceases after
    duplicating the Twitter web interface: no client I used had any
    significant advanced features.
</p>

<p>
[2] The Jabber message format sent by sendxmpp is not compatible with
      all Jabber clients, including the popular <a href="http://en.wikipedia.org/wiki/Pidgin_(software)">Pidgin instant messager.</a>
      Pidgin, for example, silently drops any messages from
      sendxmpp. There's a configuration file and command line option to
      sendxmpp that make it send Jabber messages Pidgin can read, but,
      unfortunately, both are broke in the version of sendxmpp on
      Debian; I'll file a Debian bug report when I discover why. For
      now, you can edit the sendxmpp file (a perl script) and find the
      following line:
      </p>

<pre class="code">
my $message_type                                = 'message'; # default message type </pre>

<p>
Then replace it with the following line and save:
</p>

<pre class="code">
my $message_type                                = 'chat'; # default message type </pre>

	  <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/gnuisance/~4/wI5C4i4hVDw" height="1" width="1" /></div></content>
	
<feedburner:origLink>http://gnuisance.net/blog/twitter-jabber/</feedburner:origLink></entry>
<entry>
	<title>The Wireless Industry Captures Congress</title>
	<id>http://gnuisance.net/blog/congress-captured/</id>
	<link href="http://feedproxy.google.com/~r/gnuisance/~3/YvmYI1TscKM/" />
	
	 <author><name>David A. Harding</name></author>
	
	
	 <rights type="xhtml" xml:lang="en">
	  <div xmlns="http://www.w3.org/1999/xhtml">
	   
	    Verbatim copying and distribution of this entire article is permitted in any medium if this notice is preserved.
	    Copyright 2008 by David A. Harding.
	   
	  </div>
	 </rights>
	
	
	 
	  <category term="economics" />
	 
	  <category term="politics" />
	 
	
	<updated>2008-12-21T21:20:40Z</updated>
	<published>2008-07-04T01:00:00Z</published>
	
	 <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">
	  <p>
You can't buy a part of the radio spectrum in the United States. You
can't even lease a part of it from the government for a fixed amount
of time&#x2014;say 15 years. No, if you want to use the radio spectrum,
you must lease part of it for an indefinite amount of time; you get to
use it until the government says you can't anymore. For example,
Congress recently <a href="http://en.wikipedia.org/wiki/United_States_2008_wireless_spectrum_auction">confiscated and auctioned off</a> spectrum belonging to
serveral TV stations.
</p>

<p>
Imagine if you could only buy normal property for an indefinite amount
of time. That book you just bought could be taken away tomorrow; so
could your house. You'd live in perpetual fear of losing your property,
and you'd probably try to persuade the government not to take it. 
If the government was a rational one, you'd hire the best
sophists to persuade them of your need. If the
government was a venal one, you'd bribe them outright. Economists call
<a href="http://en.wikipedia.org/wiki/Regulatory_capture">regulatory 
capture</a> the idea that the people
most affected by a regulation are the people who will work the hardest
to influence the regulators in their favor.
Congress has been captured.
</p>

<p>
Instead of blaming the wireless industry for corrupting Congress, or
blaming Congress for becoming corrupted, I demand that Congress sell or
lease radio spectrum with definite guarantees. Spectrum buyers should
know what they can do with their property and for how long they can do
it, and they should know this in advance.   There is no other simple way
to free Congress from bondage to the wireless industry.
</p>

	  <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/gnuisance/~4/YvmYI1TscKM" height="1" width="1" /></div></content>
	
<feedburner:origLink>http://gnuisance.net/blog/congress-captured/</feedburner:origLink></entry>
<entry>
	<title>Pre-Borrow This Book</title>
	<id>http://gnuisance.net/blog/preborrow/</id>
	<link href="http://feedproxy.google.com/~r/gnuisance/~3/JroHlPl7tyo/" />
	
	 <author><name>David A. Harding</name></author>
	
	
	 <rights type="xhtml" xml:lang="en">
	  <div xmlns="http://www.w3.org/1999/xhtml">
	   
	    Verbatim copying and distribution of this entire article is permitted in any medium if this notice is preserved.
	    Copyright 2008 by David A. Harding.
	   
	  </div>
	 </rights>
	
	
	 
	  <category term="bio" />
	 
	  <category term="books" />
	 
	  <category term="scalzi" />
	 
	  <category term="sfbook" />
	 
	
	<updated>2008-12-21T21:20:40Z</updated>
	<published>2008-07-02T03:03:00Z</published>
	
	 <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml">
	  <p>
While surfing Amazon.com, you discover your favorite living author will
publish a new book in a couple months. At this moment, if you were
me, the pressure to click the pre-order button will strain your
fiscal restraint. You don't <em>need</em> the book in hardcover; you
don't feel like spending $20 on a book that might suck; but you don't
want to forget about it, and you'd really like to read the book the same
week all your friends do.
</p>

<p>
You might have an alternative to the pre-order button. My local library
pre-orders books itself. As soon they order the book, they enter it into
their catalogue&#x2014;making it available to request. I currently have
the first request for <em>By Schism Rent Asunder</em> by David Weber
(due out July 22nd) and <em>Zoe's Tale</em> by John Scalzi (August
19). I can forget about these books until the library calls 
and says they're ready.  What a deal!
</p>

<p>
Other people know about this technique, but not too many. I requested
Harry Potter book 4 from the library a month before it was released and
there were 12 people ahead of me in the queue. Happily, the library
system ordered more than 12 copies, so I got to read a copy the Tuesday
after the Saturday official release.
</p>

<p>
I keep hoping that, by some fluke, the library might get a book and lend
it to me before the official release date.  This hasn't happened to
me&#x2014;yet&#x2014;and even if it did, it would only be the icing on top
of a very delicious cake.
</p>

	  <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/gnuisance/~4/JroHlPl7tyo" height="1" width="1" /></div></content>
	
<feedburner:origLink>http://gnuisance.net/blog/preborrow/</feedburner:origLink></entry>

</feed>
