<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Cheerful Curmudgeon &#187; Technology</title>
	<atom:link href="http://cheerfulcurmudgeon.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://cheerfulcurmudgeon.com</link>
	<description>A complete lack of ideas and the power to express them.</description>
	<lastBuildDate>Tue, 24 Aug 2010 01:23:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>Copyright &#xA9; 2010 Cheerful Curmudgeon </copyright>
		<managingEditor>art@zemon.name (Art Zemon)</managingEditor>
		<webMaster>art@zemon.name (Art Zemon)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary>A complete lack of ideas and the power to express them.</itunes:summary>
		<itunes:author>Art Zemon</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>Art Zemon</itunes:name>
			<itunes:email>art@zemon.name</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://cheerfulcurmudgeon.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://cheerfulcurmudgeon.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>Cheerful Curmudgeon</title>
			<link>http://cheerfulcurmudgeon.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Real Virtual Alchemy</title>
		<link>http://cheerfulcurmudgeon.com/2010/07/14/real-virtual-alchemy/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/07/14/real-virtual-alchemy/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 12:16:36 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[eBooks]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1173</guid>
		<description><![CDATA[I have learned to change lead into gold, and back again, for real! Well, sort of. Thus far, it only works within the virtual world of programming languages like Python. Here is the recipe. (If you are not into geek-speak, skip to the bottom where I natter on about reading ebooks on an iPad.) class [...]]]></description>
			<content:encoded><![CDATA[<p>I have learned to change lead into gold, and back again, for real! Well, sort of. Thus far, it only works within the virtual world of programming languages like Python. Here is the recipe. <em>(If you are not into geek-speak, skip to the bottom where I natter on about reading ebooks on an iPad.)</em></p>
<pre>
class Lead(object):
    def prestoChango(self):
        self.__class__ = Gold

class Gold(object):
    def prestoChango(self):
        self.__class__ = Lead

pb = Lead()
print pb             # prints Lead
pb.prestoChango()
print pb             # prints Gold
pb.prestoChango()
print pb             # prints Lead
</pre>
<p>Voila! First it&#8217;s lead. Then it&#8217;s gold. Then it&#8217;s lead again.</p>
<p>I understand why you might want to do something like this but, at least within the projects that I work on, it would obfuscate the program too much for my liking.</p>
<p>I learned this from reading the <em><a href="http://oreilly.com/catalog/9780596007973" target="_blank">Python Coookbook</a></em> ebook on my iPad, which has been thoroughly enjoyable. I like the <a href="http://www.apple.com/ipad/features/ibooks.html" target="_blank">iBooks</a> app more than I expected to. I can highlight portions of the book, without actually trashing the pages. I can scribble notes next to my highlights. I can easily browse a list of the sections that I highlighted/noted. Perhaps even more useful, I can select a word or phrase from the text of the book and instantly search either Google or Wikipedia for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/07/14/real-virtual-alchemy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python Generators Neatly Untangle Loops</title>
		<link>http://cheerfulcurmudgeon.com/2010/07/02/python-generators-neatly-untangle-loops/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/07/02/python-generators-neatly-untangle-loops/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 22:00:07 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1136</guid>
		<description><![CDATA[The Python programming language has become my first choice for most tasks over the last year or so. The more I use it, the more I find to like about it. I just stumbled across generators in a way that made them make sense to me and it is so cool that I want to [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.python.org/" target="_blank">Python</a> programming language has become my first choice for most tasks over the last year or so. The more I use it, the more I find to like about it. I just stumbled across <em>generators</em> in a way that made them make sense to me and it is so cool that I want to share it with you. A generator can make a program immensely more readable by separating the task of producing (or generating) data from the task of processing the data.</p>
<p>This will make more sense with an example: print an alphabetized list of all the usernames for a Linux system. On a computer running Linux, the file /etc/passwd contains information about all of the users. Here is the file for my laptop:</p>
<pre>root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:102::/home/syslog:/bin/false
klog:x:102:103::/home/klog:/bin/false
hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false
avahi-autoipd:x:104:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
gdm:x:105:111:Gnome Display Manager:/var/lib/gdm:/bin/false
saned:x:106:113::/home/saned:/bin/false
pulse:x:107:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false
messagebus:x:108:117::/var/run/dbus:/bin/false
polkituser:x:109:118:PolicyKit,,,:/var/run/PolicyKit:/bin/false
avahi:x:110:119:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
haldaemon:x:111:120:Hardware abstraction layer,,,:/var/run/hald:/bin/false
art:x:1000:1000:Art Zemon,,,:/home/art:/bin/bash
postfix:x:112:124::/var/spool/postfix:/bin/false
candy:x:1001:1002:Candy Zemon,,,:/home/candy:/bin/bash
sshd:x:113:65534::/var/run/sshd:/usr/sbin/nologin
mediatomb:x:114:126:MediaTomb Server,,,:/var/lib/mediatomb:/usr/sbin/nologin
couchdb:x:115:116:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash
speech-dispatcher:x:116:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
kernoops:x:117:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
usbmux:x:118:46:usbmux daemon,,,:/home/usbmux:/bin/false
festival:x:119:29::/home/festival:/bin/false
rtkit:x:120:128:RealtimeKit,,,:/proc:/bin/false</pre>
<p>Since the username is the first &#8220;word&#8221; on each line, up to the first colon, most of that file is drek and can be ignored. So given that file of stuff, the program breaks down into these tasks:</p>
<ol>
<li>Open the file /etc/passwd.</li>
<li>Read every line from the file and get the username, the first word, off of each line.</li>
<li>Construct a list of all the usernames.</li>
<li>Sort the list.</li>
<li>Print the results.</li>
</ol>
<p>My first attempt at such a program would have been something like this:</p>
<pre>namelist = []
passwd = open('/etc/passwd')
for line in passwd:
    username, drek = line.split(':', 1)
    namelist.append(username)
passwd.close()
namelist.sort()
for name in namelist:
    print name</pre>
<p>This little Python program does what I just described, producing this output:</p>
<pre>art
avahi
avahi-autoipd
backup
bin
candy
couchdb
daemon
festival
games
gdm
gnats
haldaemon
hplip
irc
kernoops
klog
libuuid
list
lp
mail
man
mediatomb
messagebus
news
nobody
polkituser
postfix
proxy
pulse
root
rtkit
saned
speech-dispatcher
sshd
sync
sys
syslog
usbmux
uucp
www-data</pre>
<p>The ugliness is that the for-loop does two things which are unrelated to each other: It finds the usernames within the /etc/passwd file and it constructs a list of the usernames. Why does a piece of a program which finds usernames care what happens to the usernames after they have been found? Why does a piece of a program which constructs a list of usernames need to care where the names came from? This is an artificially contrived example, so each of these pieces is very simple, but it is generally A Good Thing if each piece of a program does exactly one task. This makes everything easier: design, coding, testing, and debugging.</p>
<p>By using a generator, we can pry these two tasks apart and the program becomes easier to understand:</p>
<pre>def usernames():
    passwd = open('/etc/passwd')
    for line in passwd:
        username, drek = line.split(':', 1)
        yield username
    passwd.close()

namelist = []
for name in usernames():
    namelist.append(name)
namelist.sort()
for name in namelist:
    print name</pre>
<p>The generator at the top does just one thing: it produces usernames, one at a time. Python takes care of all the complexities. We can simply use the generator wherever we need a list of usernames. On first use, the /etc/passwd file is opened. Then each line is read, the username split off the beginning of the line, and the username yielded up to whatever other part of the program needs it. When the file has been completely processed, it is closed.</p>
<p>The second part of the program has become an easy-to-read loop: <code>for name in usernames()</code> This loop processes each name. We can understand that without being distracted by the details of processing the /etc/passwd file. Sweet.</p>
<p><em>[Update: I particularly enjoy programming because there is </em>always<em> something new to be learned. I have updated the following example, shortening it by one line while simultaneously making it easier to understand.]</em></p>
<p>Of course, Python offers more shortcuts and we can make the program more concise. Try this flavor:</p>
<pre>def usernames():
    passwd = open('/etc/passwd')
    for line in passwd:
        username, drek = line.split(':', 1)
        yield username
    passwd.close()

print '\n'.join(sorted(usernames()))</pre>
<p>Reading from the inside to the outside: <code>usernames()</code> produces the list of usernames. <code>sorted(...)</code> produces an alphabetized list of usernames. <code>'\n'.join(...)</code> takes the alphabetized list of names and joins them together into a string, one name per line, which is ready to be printed.</p>
<p>I hope that this has not been too deep a peek into the machinations of a programmer&#8217;s mind. <img src='http://cheerfulcurmudgeon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/07/02/python-generators-neatly-untangle-loops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instrument Approach Plates on the iPad</title>
		<link>http://cheerfulcurmudgeon.com/2010/06/26/instrument-approach-plates-on-the-ipad/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/06/26/instrument-approach-plates-on-the-ipad/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 23:42:58 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Aviation]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1120</guid>
		<description><![CDATA[I just upgraded the instrument approach plates that I use when flying IFR in my airplane. My new iPad with ForeFlight Mobile HD replaces my Sony PRS-505 with ReaderPlates that I have been using since December 2008. The Sony and ReaderPlates replaced paper that I had been using since 1987. This is a very good [...]]]></description>
			<content:encoded><![CDATA[<p>I just upgraded the instrument approach plates that I use when flying IFR in my airplane. My new iPad with <a href="http://www.foreflight.com/ipad" target="_blank">ForeFlight Mobile HD</a> replaces my <a href="/2008/12/05/reader-plates-economical-paperless-ifr-approach-plates/">Sony PRS-505 with ReaderPlates</a> that I have been using since December 2008. The Sony and ReaderPlates replaced paper that I had been using since 1987. This is a very good thing and it demonstrates just how rapidly technology is improving.</p>
<p>When I am in instrument meteorological conditions (IMC), which is a government approved way of saying &#8220;in the clouds,&#8221; and need to land my plane, I use a detailed map called an <a href="http://204.108.4.16/d-tpp/1006/00717IL35.PDF">approach plate</a>. The approach plate tells me exactly where to fly the plane both horizontally and vertically so that I get safely to the runway. It&#8217;s a lot like playing a complex video game, which I find both exhilarating and highly satisfying.</p>
<p>Paper worked well for years because it was pretty much the only game in town. I was very happy to switch to the Sony PRS-505 ebook reader, though, because it meant that I could stop recycling a 3&#8243; stack of paper every 28 days. Yes, Virginia, you read that right; the government updates the instrument approach plates every 28 days, 13 times per year. Switching to an electronic format saved me quite a few dollars and was kinder to the environment.</p>
<p>The biggest disadvantage of the Sony PRS-505 is its small screen. As you can see in this photo, it is significantly smaller than the paper. I can get an overall view of the approach but have to press a key to zoom in and make the text large enough to read. The iPad fixes  this problem with a sufficiently large screen to display the approach plate 100% the size of the original.</p>
<div id="attachment_1123" class="wp-caption aligncenter" style="width: 310px"><a href="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/06/approach-plates.jpg"><img class="size-medium wp-image-1123  " title="approach plates" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/06/approach-plates-300x158.jpg" alt="3 styles of approach plates" width="300" height="158" /></a><p class="wp-caption-text">ILS Approach Plate on Sony PRS-505, paper, and iPad (click to enlarge)</p></div>
<p>The transition from paper to Sony PRS-505 to Apple iPad in just 18 months is remarkable. The new screen is plenty bright enough to read in direct sunlight and, surprisingly, even higher contrast than the newsprint. There are no moving parts to fail.</p>
<p>I had one concern about switch to the iPad from the PRS-505: would the touch sensitive screen allow me to accidentally &#8220;lose&#8221; my approach plate at a critical moment of the flight? I don&#8217;t think so. When displaying an approach plate, the only part of the screen which can make the plate vanish or change is the &#8220;close&#8221; button at the top, left corner.</p>
<p>I will have more on ForeFlight and more on the iPad soon. Before posting more about ForeFlight, I want to actually fly with it. Before posting more about the iPad, I have to stop playing <em>with</em> it and write <em>about</em> it.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/06/26/instrument-approach-plates-on-the-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook&#8217;s Last Straw</title>
		<link>http://cheerfulcurmudgeon.com/2010/05/30/facebooks-last-straw/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/05/30/facebooks-last-straw/#comments</comments>
		<pubDate>Sun, 30 May 2010 14:58:16 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Rants & Raves]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1110</guid>
		<description><![CDATA[Facebook added the proverbial last straw with its latest privacy faux pas. It has demonstrated, yet again, that in pursuing it&#8217;s goal of selling advertising, Facebook places very little importance on our personal privacy. Remember that, while Facebook ostensibly is a web site designed to help people connect with like-minded people, in fact Facebook is [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook added the proverbial last straw with its latest <a href="http://www.cnn.com/2010/TECH/social.media/05/26/facebook.privacy/index.html" target="_blank">privacy faux pas</a>. It has demonstrated, yet again, that in pursuing it&#8217;s goal of selling advertising, <a href="http://www.cnn.com/2010/TECH/social.media/05/27/facebook.privacy.war.cashmore/index.html" target="_blank">Facebook places very little importance on our personal privacy</a>. Remember that, while Facebook ostensibly is a web site designed to help people connect with like-minded people, in fact Facebook is a business which derives it&#8217;s revenues from other businesses, not from it&#8217;s subscribers. In plain English: <em>Unless you are paying big dollars to Facebook, you are not Facebook&#8217;s primary audience.</em></p>
<p>Don&#8217;t believe me? I just spent half an hour tightening up my Facebook privacy settings; it was a bewildering maze of pages and checkboxes and pop-up windows. I thought maybe I was just dim, that it couldn&#8217;t be as hard as it seemed to be. But no; it really is that hard. The <em>New York Times</em> counted the words and discovered that <a href="http://www.nytimes.com/2010/05/13/technology/personaltech/13basics.html" target="_blank">Facebook&#8217;s privacy policy is longer than the US constitution</a>!</p>
<p style="padding-left: 30px;">The new opt-out settings certainly are complex. Facebook users who hope to make their personal information private should be prepared to spend a lot of time pressing a lot of buttons. To opt out of full disclosure of most information, it is necessary to click through more than 50 privacy buttons, which then require choosing among a total of more than 170 options.</p>
<p style="padding-left: 30px;">Users must decide if they want only friends, friends of friends, everyone on Facebook, or a customized list of people to see things like their birthdays or their most recent photos. To keep information as private as possible, users must select “only friends” or “only me” from the pull-down options for all the choices in the privacy settings, and must uncheck boxes that say information will be shared across the Web.</p>
<p>The last straw was discovering a page which allowed my personal information to be shared with third-parties (advertisers and other businesses) when my friends do stuff, not because of my own actions. Here is the page, after I turned everything off; all of the boxes had been checked when I first came to the page.</p>
<p style="text-align: center;"><img class="size-full wp-image-1112 aligncenter" title="Facebook Third-Party Privacy" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/05/Facebook-privacy-1.png" alt="Facebook Third-Party Privacy" width="552" height="469" /></p>
<p>Just one example: I am perfectly happy allowing my friends to know my birthday but I was angry to discover that, when a friend of mine &#8220;visits a Facebook Platform application or website,&#8221; my birthday was revealed to the business running that &#8220;application or website.&#8221; That&#8217;s just not right; I did not give my permission for this. I do not want it to happen. Facebook added this &#8220;feature&#8221; and began giving out this information without asking me.</p>
<p>In response to that discovery, I have done a couple of things. First, I took the time to go through every Facebook privacy page and tighten up the settings. My friends can still see stuff about me. The friends of my friends can also see some stuff about me. To the extent possible, I have blocked business&#8217; abilities to obtain my data. Second, I have removed all of the data which I do not want publicly shared. Since I cannot trust Facebook to keep it private, I no longer store those data in my Facebook profile.</p>
<p>If you are reading this on Facebook, you should know that Facebook is posting a <em>copy</em> of my original article. I actually wrote this on my own blog at <a href="http://www.CheerfulCurmudgeon.com/">www.CheerfulCurmudgeon.com</a> and I invite you to visit the site directly. Facebook does not copy everything from the blog and you are missing good stuff by staying in Facebook and not coming over to the actual website.</p>
<p>I choose to control access to my data, sharing it only with the people that I trust. Facebook has proven, time and again, to be a very untrustworthy arbiter of our data.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/05/30/facebooks-last-straw/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infrastructures are Important</title>
		<link>http://cheerfulcurmudgeon.com/2010/05/23/infrastructures-are-important/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/05/23/infrastructures-are-important/#comments</comments>
		<pubDate>Sun, 23 May 2010 12:09:39 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Communicating]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1106</guid>
		<description><![CDATA[Sometimes (often) XKCD hits the nail squarely on the head.]]></description>
			<content:encoded><![CDATA[<p>Sometimes (often) <a href="http://xkcd.com/" target="_blank">XKCD</a> hits the nail squarely on the head.</p>
<p><a href="http://xkcd.com/743/" target="_blank"><img src="http://imgs.xkcd.com/comics/infrastructures.png" alt="" width="100%" /></</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/05/23/infrastructures-are-important/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Passover from the R&amp;D Institute for Intelligent Robotic Systems (and Me)</title>
		<link>http://cheerfulcurmudgeon.com/2010/03/24/happy-passover-from-the-rd-institute-for-intelligent-robotic-systems-and-me/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/03/24/happy-passover-from-the-rd-institute-for-intelligent-robotic-systems-and-me/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 13:07:09 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Judaism]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1083</guid>
		<description><![CDATA[May this passover find you free from all bondage and from anything which keeps you from thoroughly enjoying life. L&#8217;chaim (to life)!]]></description>
			<content:encoded><![CDATA[<p>May this passover find you free from all bondage and from anything which keeps you from thoroughly enjoying life. <em>L&#8217;chaim</em> (to life)!</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/_bgeX_8tBCY&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_bgeX_8tBCY&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/03/24/happy-passover-from-the-rd-institute-for-intelligent-robotic-systems-and-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Backups are Important</title>
		<link>http://cheerfulcurmudgeon.com/2010/03/06/server-backups-are-important/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/03/06/server-backups-are-important/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 13:32:52 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Recommendations]]></category>
		<category><![CDATA[Safety]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1075</guid>
		<description><![CDATA[I got a frantic email from a friend this week. One of his subcontractors went crazy and trashed several of my friend&#8217;s clients&#8217; web sites as well as my friend&#8217;s own business site. The police have been involved but much damage has already been done. I wish I had been hosting my friend&#8217;s sites. Had I [...]]]></description>
			<content:encoded><![CDATA[<p>I got a frantic email from a friend this week. One of his subcontractors went crazy and trashed several of my friend&#8217;s clients&#8217; web sites as well as my friend&#8217;s own business site. The police have been involved but much damage has already been done. I wish I had been hosting my friend&#8217;s sites. Had I been, I could have recovered everything from backups. As it is, all I could do was sit by and fume, wishing that his hosting company had had something to offer him in the way of assistance.</p>
<p>I know my friend&#8217;s pain. In the 30 years that I have been doing system administration, there have been numerous times when my own bacon has been saved by backups. I have been struck by the dread BUOD error (Bad User On Device) in which a glitch sitting between the chair and the keyboard has made the computer do all kinds of hideous deeds. The worst, early in my career, idled a team of a dozen programmers for three days. Why three full days? You guessed it: no backups. At the other end of the spectrum, a member of my team recently trashed a critical configuration file on one of our servers. This, however, resulted in no downtime; we simply grabbed a copy from the backups and continued on our merry ways.</p>
<p>If you accidentally delete a file from your web site (or, in my friend&#8217;s case, <em>all</em> of the files), can you recover it? Does your hosting company provide backups and, if so, can  <em>you</em> recover files from their backup? In many cases, hosting companies&#8217; backups are only for their use in cases of disk drive failure.</p>
<p>My company offers one (excellent, in my opinion) solution, <a href="http://www.hens-teeth.net/html/products/nest_egg_backup.php" target="_blank">Nest Egg Backup for Web Servers</a>. There are many other alternatives. Do choose and implement one. When you go comparison shopping, ask the key question: How long are the backups retained? If only for one night, that means that your window of opportunity is extremely limited. If you delete a file at 10:00pm and wait until 8:00am to try to get it back, you are out of luck. You should have <em>at least</em> three days of retention, preferably more, preferably <em>a lot more</em>. Thirty days can give you a nice warm, fuzzy feeling of safety and security.</p>
<p>Lesson of the day: Back up your hosting accounts! And be sure to include everything (email folders, MySQL databases, PHP config files, etc. etc. etc.) The day disaster strikes is a day too late to start backing stuff up.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/03/06/server-backups-are-important/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Bandwidth Than a Station Wagon</title>
		<link>http://cheerfulcurmudgeon.com/2010/01/14/more-bandwidth-than-a-station-wagon/</link>
		<comments>http://cheerfulcurmudgeon.com/2010/01/14/more-bandwidth-than-a-station-wagon/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 13:53:40 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=1045</guid>
		<description><![CDATA[Back when I administered VAXen running BSD UNIX at FileNet, &#8220;just&#8221; 25 years ago or so, we didn&#8217;t have a high speed internet connection to use in transferring files between computers. I used a bank of Racal-Vadic 2400 baud modems to run UUCP and shuffle email and usenet articles around. With five modems in the [...]]]></description>
			<content:encoded><![CDATA[<p>Back when I administered VAXen running BSD UNIX at FileNet, &#8220;just&#8221; 25 years ago or so, we didn&#8217;t have a high speed internet connection to use in transferring files between computers. I used a bank of Racal-Vadic 2400 baud modems to run UUCP and shuffle email and usenet articles around. With five modems in the bank, felix the VAX 750 grew to be a modest UUCP hub in SoCal. Today we measure our internet connections in megabits or Mbps, millions of bits per second, instead of baud. I am typing this on a cable modem connection that just achieved 11.4 Mbps downloading data and 1.7 Mbps uploading data. By comparison, felix the VAX had about 0.0024 Mbps of bandwidth, and downloading did not go any faster than uploading.</p>
<div id="attachment_1048" class="wp-caption alignright" style="width: 168px"><a href="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/01/magtape.jpg"><img class="size-full wp-image-1048 " title="magnetic tape" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/01/magtape.jpg" alt="10.5&quot; magnetic tape" width="158" height="151" /></a><p class="wp-caption-text">10.5&quot; magnetic tape</p></div>
<p>We used to say, <em>never underestimate the bandwidth of a station wagon full of magnetic tapes</em>. With just 0.0024 Mbps of bandwidth available, it was completely impractical to transfer large files across &#8220;the net.&#8221; Instead, we would write the files to 10.5&#8243; reels of <a href="http://en.wikipedia.org/wiki/Magnetic_tape_data_storage" target="_blank">magnetic tapes</a> and drive them to their destination by car.</p>
<div id="attachment_1047" class="wp-caption alignleft" style="width: 247px"><a href="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/01/rm03.jpg"><img class="size-full wp-image-1047" title="DEC RM03" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2010/01/rm03.jpg" alt="DEC RM03 disk drive" width="237" height="342" /></a><p class="wp-caption-text">DEC RM03 disk drive</p></div>
<p>It would take several tapes, and several hours, to &#8220;back up&#8221; a single 67 MB, washing machine sized, RM03 disk drive. Once the  tapes were written, we would bundle them into  the nearest car and take a road trip across town to where they needed to be. Then would begin the (usually slower) process of reading the tapes into the new computer. It was <em>way</em> faster to move data by &#8220;station wagon&#8221; than pretty much anything else.</p>
<p>Flash forward to 2010. On Tuesday, I had 62,000 MB of files on a computer in a datacenter in Houston that had to be moved to a new computer in a datacenter on the east coast. I live in the middle of the country (St. Louis) and do not have ready access to either datacenter. Through the miracles of the internet, I logged into the Houston computer and typed one command:</p>
<blockquote style="font-family: courier;"><p>rsync -az /backup/htn/ root@newmachine.com:/backup/htn</p></blockquote>
<p>About eight hours later, with no intervention from me, all of the files had been replicated onto the new machine. I had just moved 1,000 times as much data as one of felix&#8217;s entire disk drives in a fraction of the time and with virtually no effort.</p>
<p>Yup&#8230; life is good.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2010/01/14/more-bandwidth-than-a-station-wagon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netflix Watch Instantly Coming to the PS3</title>
		<link>http://cheerfulcurmudgeon.com/2009/10/26/netflix-watch-instantly-coming-to-the-ps3/</link>
		<comments>http://cheerfulcurmudgeon.com/2009/10/26/netflix-watch-instantly-coming-to-the-ps3/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 12:30:12 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Movies]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=996</guid>
		<description><![CDATA[I am so happy. Netflix will finally stream movies to the Sony Playstation PS3. We have a Roku player, too, but it will be more convenient to have all of our entertainment stuff in one box. And the PS3 ought to produce a better picture, too.]]></description>
			<content:encoded><![CDATA[<p>I am so happy. <a href="http://www.hackingnetflix.com/2009/10/netflix-streaming-in-november-on-sonys-ps3-reserve-your-disc-now.html" target="_blank">Netflix will </a><em><a href="http://www.hackingnetflix.com/2009/10/netflix-streaming-in-november-on-sonys-ps3-reserve-your-disc-now.html" target="_blank">finally</a></em><a href="http://www.hackingnetflix.com/2009/10/netflix-streaming-in-november-on-sonys-ps3-reserve-your-disc-now.html" target="_blank"> stream movies</a> to the Sony Playstation PS3. We have a Roku player, too, but it will be more convenient to have all of our entertainment stuff in one box. And the PS3 ought to produce a better picture, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2009/10/26/netflix-watch-instantly-coming-to-the-ps3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retro Slide Rule</title>
		<link>http://cheerfulcurmudgeon.com/2009/09/02/retro-slide-rule/</link>
		<comments>http://cheerfulcurmudgeon.com/2009/09/02/retro-slide-rule/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 12:03:47 +0000</pubDate>
		<dc:creator>Art Zemon</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://cheerfulcurmudgeon.com/?p=976</guid>
		<description><![CDATA[My deepest appreciation to ThinkGeek for making me feel old first thing in the morning. They have recreated the &#8220;classic student slide rule&#8221; and are hawking them for a pittance of what this paragon of useful technology is worth. The sad thing is&#8230; not only do I remember slide rules, I depended on them to [...]]]></description>
			<content:encoded><![CDATA[<p>My deepest appreciation to ThinkGeek for making me feel <em>old</em> first thing in the morning. They have recreated the &#8220;<a href="http://www.thinkgeek.com/gadgets/tools/be12/?cpg=101H" target="_blank">classic student slide rule</a>&#8221; and are hawking them for a pittance of what this paragon of useful technology is worth.</p>
<div id="attachment_977" class="wp-caption aligncenter" style="width: 260px"><a href="http://www.thinkgeek.com/gadgets/tools/be12/?cpg=101H" target="_blank"><img class="size-full wp-image-977" title="ThinkGeek Slide Rule" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2009/09/be12_thinkgeek_slide_rule.jpg" alt="ThinkGeek Slide Rule" width="250" height="175" /></a><p class="wp-caption-text">ThinkGeek Slide Rule</p></div>
<p><em>The sad thing is&#8230; not only do I remember slide rules, I depended on them to get my physics homework done in high school. Not only do I remember slide rules, those of us who used them were </em><em>faster</em> than the folks with Bowmar Brain calculators.</p>
<p>I did succumb to the glitter and glitz of calculators and computers, becoming an RPN bigot as any newly minted geek was in the 1970s. (Good thing, too. Have you ever tried to blog on a slide rule?)</p>
<p>Slide rules re-entered my life in 1986 when I took flying lessons. The E6B flight computer is little more than a circular slide rule with  special scales for doing some temperature calculations and a special rotating, clear window on the back for solving wind triangle problems. Spock recognized the utility of the E6B, too, using it on the bridge of the Enterprise in <em>Who Mourns for Adonis</em>.</p>
<div id="attachment_978" class="wp-caption aligncenter" style="width: 510px"><img class="size-full wp-image-978" title="Spock using an E6B Flight Computer" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2009/09/spock_e6b.jpg" alt="Spock using an E6B Flight Computer" width="500" height="375" /><p class="wp-caption-text">Spock using an E6B Flight Computer</p></div>
<p>I ended up with two slide rules, my own and my grandfather&#8217;s (and my E6B flight computer). My slide rule evaporated years ago but my grandfather&#8217;s is still in the basement. And you know what, it still works&#8230; no batteries required.</p>
<div id="attachment_981" class="wp-caption aligncenter" style="width: 423px"><a href="http://cheerfulcurmudgeon.com/wp-content/uploads/2009/09/DSC_1822.JPG" target="_blank"><img class="size-full wp-image-981   " title="My (Grandfather's) Slide Rule" src="http://cheerfulcurmudgeon.com/wp-content/uploads/2009/09/DSC_1822.JPG" alt="My (Grandfather's) Slide Rule" width="413" height="118" /></a><p class="wp-caption-text">My (Grandfather&#39;s) Slide Rule</p></div>
<p style="text-align: center; ">
]]></content:encoded>
			<wfw:commentRss>http://cheerfulcurmudgeon.com/2009/09/02/retro-slide-rule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
