<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Betacantrips Travelogue &#187; information</title>
	<atom:link href="http://travelogue.betacantrips.com/tag/information/feed/" rel="self" type="application/rss+xml" />
	<link>http://travelogue.betacantrips.com</link>
	<description>And all I got was this lousy weblog</description>
	<lastBuildDate>Mon, 05 Sep 2011 15:54:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SSH on the N900</title>
		<link>http://travelogue.betacantrips.com/2010/05/24/ssh-on-the-n900/</link>
		<comments>http://travelogue.betacantrips.com/2010/05/24/ssh-on-the-n900/#comments</comments>
		<pubDate>Mon, 24 May 2010 21:33:36 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[wearable computing]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/05/24/ssh-on-the-n900/</guid>
		<description><![CDATA[Filed under: information, open source, wearable computing
I spent a few hours today dicking with my N900 and thought I&#8217;d write up some of the things I dealt with.
For a long time I&#8217;ve been using Dropbear SSH client/server on my phone, due to an alleged less-memory-usage. (When your phone starts swapping, it sucks big time.) Dropbear [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/wearable-computing/'>wearable computing</a></p>
<p>I spent a few hours today dicking with my N900 and thought I&#8217;d write up some of the things I dealt with.</p>
<p>For a long time I&#8217;ve been using Dropbear SSH client/server on my phone, due to an alleged less-memory-usage. (When your phone starts swapping, it sucks big time.) Dropbear even supports serving SCP, but does not support SFTP. This prevents you from using any relatively-nice &quot;file transfer over SSH&quot; GUI, such as Nautilus&#8217;s &quot;ssh&quot; support or gFTP. (I think Konqueror&#8217;s <tt class="docutils literal"><span class="pre">fish</span></tt> mechanism would still work, but that is of limited utility to me right now.) It may be possible to <a class="reference external" href="http://www.mail-archive.com/dropbear&#64;ucc.asn.au/msg00152.html">use the sftp from OpenSSH with dropbear</a>, but since the Dropbear packages conflict with the OpenSSH packages in the Maemo repository, that&#8217;s not especially on an N900. In fact, dropbear-scp conflicts with openssh-common (both provide /usr/bin/scp, which I think is silly, but there you are).</p>
<p>Of course, if you insist on using Dropbear, you can use Bluetooth to copy files over Obexftp (which Nautilus supports nicely). But since this requires Bluetooth hardware to be powered on both the laptop and the phone, I decided to replace Dropbear with OpenSSH.</p>
<p>Installing OpenSSH server on your N900 forces you to change your root password (<a class="reference external" href="http://wiki.maemo.org/Root_access">the default is &quot;rootme&quot;</a>), whether you&#8217;ve already changed it or not. Kind of annoying. The user account by default &quot;doesn&#8217;t have a password&quot;, which I think means all password access is disabled. <a class="reference external" href="http://talk.maemo.org/showthread.php?t=36919">Folk wisdom</a> suggests that giving a password to the user account &quot;could&quot; cause problems, but I think this is based on an (incorrect) belief that the default password is &quot;blank&quot; (in fact, it&#8217;s <a class="reference external" href="http://talk.maemo.org/showthread.php?t=36919&amp;page=2">invalid</a>, meaning there is no phone software that relies on using a password to switch to the user account, so there should be no problem with granting a password). Nevertheless I decided to just drop in a key using <tt class="docutils literal"><span class="pre">authorized_keys</span></tt>. But if you don&#8217;t set a password, OpenSSH won&#8217;t let you log in (even using <tt class="docutils literal"><span class="pre">publickey</span></tt> access); the log messages will tell you that your account is &quot;locked&quot;. The reason is that OpenSSH looks at <tt class="docutils literal"><span class="pre">/etc/passwd</span></tt> to decide whether to let you in using any access methods at all; since the password hash is &quot;<tt class="docutils literal"><span class="pre">!</span></tt>&quot;, it locks you out.</p>
<p>This page <a class="reference external" href="http://grid.ncsa.illinois.edu/ssh/ts_server.html#locked">shows how to fix the &quot;locked account&quot; status</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/05/24/ssh-on-the-n900/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sam Shapiro &#8212; Saving Ghandiah</title>
		<link>http://travelogue.betacantrips.com/2010/04/30/sam-shapiro-saving-ghandiah/</link>
		<comments>http://travelogue.betacantrips.com/2010/04/30/sam-shapiro-saving-ghandiah/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 22:33:45 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[love]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/04/30/sam-shapiro-saving-ghandiah/</guid>
		<description><![CDATA[Filed under: culture, information, love
I just learned of the passing, last summer, of Sam Shapiro, half of the dynamic duo behind Force Monkeys. His family has been erecting memorials: samshapiro.org and Saving Ghandiah (Ghandaiah being his best-known handle). Here is some of his writing:
WITHOUT PERSONAL EXPRESSION, WE BECOME STATISTICS. WE ARE NO LONGER PEOPLE, BUT [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/culture/'>culture</a>, <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/love/'>love</a></p>
<p>I just learned of the passing, last summer, of Sam Shapiro, half of the dynamic duo behind Force Monkeys. His family has been erecting memorials: <a class="reference external" href="http://samshapiro.org/">samshapiro.org</a> and <a class="reference external" href="http://savingsam.wordpress.com/">Saving Ghandiah</a> (Ghandaiah being his best-known handle). Here is <a class="reference external" href="http://savingsam.wordpress.com/2009/08/29/this-is-one-of-sams-writings-that-we-found-i-think-it-describes-him-perfectly/">some of his writing</a>:</p>
<blockquote><p>WITHOUT PERSONAL EXPRESSION, WE BECOME STATISTICS. WE ARE NO LONGER PEOPLE, BUT INSTEAD MACHINES, BODIES MOVING ABOUT AND FUNCTIONING ONLY TO ASSURE OUR BASIC SURVIVAL.</p>
<p>WITHOUT PERSONAL EXPRESSION, WE LOSE PART OF OUR HUMANITY, AND WE LOSE PART OF WHAT MAKES US SENTIENT.</p>
<p>FOR THIS REASON, WITHOUT PERSONAL EXPRESSION, NOTHING ELSE IS POSSIBLE. AS AUTOMATONS WE WOULD LOSE OUR HAPPINESS. AS AUTOMATONS WE WOULD SHED ALL VARIETY AND BLUR TO A SINGLE SHADE OF MONOTONOUS GRAY.</p>
<p>PEOPLE CHERISH THEIR DIFFERENCES, AND YET, SIMOLTANEOUSLY [SIC], TAKE ADVANTAGE OF THEM. WE OFTEN DISCARD THE OPINIONS OF OTHERS AS INSIGNIFICANT MERELY   BECAUSE THEY ARE NOT OUR OWN.</p>
<p>IF PEOPLE REALIZED THE IMPORTANCE OF SELF EXPRESSION, THEN PERHAPS CONFLICT WOULD NOT BE SO COMMON.</p>
</blockquote>
<p>A lot of his art is really stunning. <a class="reference external" href="http://savingsam.wordpress.com/2009/10/02/220/">Here</a> is one that I&#8217;m fond of. Look at the eyes in particular.</p>
<p> <img alt="http://travelogue.betacantrips.com/wp-content/uploads/2010/04/wpid-dsc00011-copy1.jpg" src="http://travelogue.betacantrips.com/wp-content/uploads/2010/04/wpid-dsc00011-copy1.jpg" style="width: 560px;" /> </p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/04/30/sam-shapiro-saving-ghandiah/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs Got Git</title>
		<link>http://travelogue.betacantrips.com/2010/04/29/emacs-got-git/</link>
		<comments>http://travelogue.betacantrips.com/2010/04/29/emacs-got-git/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 19:21:16 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/04/29/emacs-got-git/</guid>
		<description><![CDATA[Filed under: information, open source, version control
I saw Emacs Got Git, sometimes called &#34;Egg&#34;, listed on the list of git-related software on the git wiki (although now taken down) and of course on the EmacsWiki. I decided I&#8217;d give it a whirl. The most recent version I could find was the one listed on the [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/version-control/'>version control</a></p>
<p>I saw Emacs Got Git, sometimes called &quot;Egg&quot;, listed on the <a class="reference external" href="https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools">list of git-related software on the git wiki</a> (although now taken down) and <a class="reference external" href="http://www.emacswiki.org/emacs/Git">of course on the EmacsWiki</a>. I decided I&#8217;d give it a whirl. The most recent version I could find was the one listed on the EmacsWiki, the version from bplayer, which seems to still be actively developed. The incumbent here is either <a class="reference external" href="http://zagadka.vm.bytemark.co.uk/magit/">magit</a>, which is by far the best user interface I&#8217;ve ever seen for any version control anywhere, or <a class="reference external" href="http://www.emacswiki.org/emacs/VersionControl">VC mode</a>, which was written once to support SCCS and has largely survived unchanged since then.</p>
<p>A brief digression about magit and vc-mode. Magit is a little bit of a challenge to pick up: you actually have to read the manual. But the short version is: <tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">magit-status</span></tt> to open a view of your repository, and then <tt class="docutils literal"><span class="pre">TAB</span></tt> things open and closed. You can press &quot;s&quot; to stage files, hunks, or even &quot;highlight&quot; lines using the region and stage only those. &quot;u&quot; to unstage; &quot;c&quot; to start a commit, and then <tt class="docutils literal"><span class="pre">C-c</span> <span class="pre">C-c</span></tt> to make the commit. You can create a commit that amends the previous commit by pressing <tt class="docutils literal"><span class="pre">C-c</span> <span class="pre">C-a</span></tt> in the log message buffer. It probably offends some that there are already conventions here for VC system integration, notably vc-mode. But vc-mode takes a file-based view of version control, has no support for staging hunks, and in general just doesn&#8217;t feel good to use. <tt class="docutils literal"><span class="pre">magit</span></tt> is much better &#8212; so much better that it is easily worth the break in convention.</p>
<p>So I thought I&#8217;d check out Emacs Got Git, to see if it was any better than magit. This isn&#8217;t a detailed analysis &#8212; actually I&#8217;ve probably spent longer writing this post than I did looking at Egg.</p>
<p>I find a screenshot is worth a thousand words. On my <tt class="docutils literal"><span class="pre">~/etc</span></tt> repository, magit looks like this:</p>
<p> <img alt="magit" src="http://travelogue.betacantrips.com/wp-content/uploads/2010/04/wpid-magit2.png" title="magit" />
<p>Magit highlights all the important details: which files are changed? Which are untracked? What commits exist locally that don&#8217;t exist on the remote?</p>
<p>On the same repo, Egg looks like this:</p>
<p> <img alt="emacs-got-git" src="http://travelogue.betacantrips.com/wp-content/uploads/2010/04/wpid-emacs-got-git1.png" title="emacs-got-git" />
<p>This is what we call the &quot;angry fruit salad&quot; school of UI design. Also, it doesn&#8217;t have a section for &quot;unpushed&quot; commits.</p>
<p>I&#8217;m going to be sticking with magit for the forseeable future.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/04/29/emacs-got-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Porting a C# app to Java</title>
		<link>http://travelogue.betacantrips.com/2010/04/24/porting-a-c-app-to-java/</link>
		<comments>http://travelogue.betacantrips.com/2010/04/24/porting-a-c-app-to-java/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 00:13:27 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/04/24/porting-a-c-app-to-java/</guid>
		<description><![CDATA[Filed under: information, open source, programming languages
Seen on LWN, an article about porting an application from C# to Java. Punchline: automated translation. Quote:
 The inspiration for this was an article about Boeing and automatic conversion. Well we thought &#34;if Boeing can do it so can we&#34;. Sounds stupid? Well it is. Luckily for us we [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/programming-languages/'>programming languages</a></p>
<p><a class="reference external" href="http://lwn.net/Articles/383151/">Seen</a> on <a class="reference external" href="http://lwn.net/">LWN</a>, <a class="reference external" href="http://lpeer.blogspot.com/2010/04/switching-from-c-to-java.html">an article about porting an application from C# to Java</a>. Punchline: automated translation. Quote:</p>
<blockquote><p> The inspiration for this was an article about Boeing and automatic conversion. Well we thought &quot;if Boeing can do it so can we&quot;. Sounds stupid? Well it is. Luckily for us we did not think that at the time.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/04/24/porting-a-c-app-to-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs Lisp Best Practices?</title>
		<link>http://travelogue.betacantrips.com/2010/04/24/emacs-lisp-best-practices/</link>
		<comments>http://travelogue.betacantrips.com/2010/04/24/emacs-lisp-best-practices/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 23:34:42 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/04/24/emacs-lisp-best-practices/</guid>
		<description><![CDATA[Filed under: information, open source, programming languages
I&#8217;ve been spending a bit of time steeping myself in EmacsLisp these last few days. I&#8217;ve been looking for information on elisp &#34;best practices&#34; &#8212; specifically, is it OK to rely on (require 'cl)?
Here&#8217;s one page wondering the same thing. There&#8217;s always a ton of interesting stuff whenever you [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/programming-languages/'>programming languages</a></p>
<p>I&#8217;ve been spending a bit of time steeping myself in EmacsLisp these last few days. I&#8217;ve been looking for information on elisp &quot;best practices&quot; &#8212; specifically, is it OK to rely on <tt class="docutils literal"><span class="pre">(require</span> <span class="pre">'cl)</span></tt>?</p>
<p>Here&#8217;s <a class="reference external" href="http://andreasjacobsen.com/2009/01/07/elisp-best-practices/">one page wondering the same thing</a>. There&#8217;s always a ton of interesting stuff whenever you go poking at emacs packages; most surprising to me this time around was <a class="reference external" href="http://tromey.com/elpa/news.html">ELPA, the Emacs Lisp Package Archive</a>. Perl has CPAN, Python has PyPI, Ruby has Rubygems.</p>
<p>I also found the blog <a class="reference external" href="http://emacs-fu.blogspot.com/">emacs-fu</a> pretty interesting looking &#8212; approximately one post a week, I think. Lots of stuff I wish I could absorb better.</p>
<p><a class="reference external" href="http://www.gnu.org/software/emacs/elisp/html_node/Coding-Conventions.html">Emacs Coding Conventions</a> from the Elisp manual is also pretty helpful. To this point (about CL), it says:</p>
<blockquote><p>Please don&#8217;t require the <tt class="docutils literal"><span class="pre">cl</span></tt> package of Common Lisp extensions at run time. Use of this package is optional, and it is not part of the standard Emacs namespace. If your package loads <tt class="docutils literal"><span class="pre">cl</span></tt> at run time, that could cause name clashes for users who don&#8217;t use that package.</p>
<p>However, there is no problem with using the <tt class="docutils literal"><span class="pre">cl</span></tt> package at compile time, with <tt class="docutils literal"><span class="pre">(eval-when-compile</span> <span class="pre">(require</span> <span class="pre">'cl))</span></tt>. That&#8217;s sufficient for using the macros in the <tt class="docutils literal"><span class="pre">cl</span></tt> package, because the compiler expands them before generating the byte-code.</p>
</blockquote>
<p>For me, this is enough, because I want to use <tt class="docutils literal"><span class="pre">dolist</span></tt>. But there are programmers out there like <a class="reference external" href="http://dto.github.com/notebook/">David O&#8217;Toole</a>, who writes <a class="reference external" href="http://dto.github.com/notebook/require-cl.html">in his interactive guide to the GNU Emacs CL package</a>:</p>
<blockquote><p> Despite what people say about still being able to use the macros while complying with the policy, in my opinion the policy is still a discouragement. You have to memorize which of its features you must abstain from using (and therefore lose the benefit of those features) if you are to have any hope of someday contributing Lisp code to GNU Emacs.</p></blockquote>
<p>I think the GNU Emacs maintainers are hesitant to allow use of a package, like <tt class="docutils literal"><span class="pre">cl</span></tt>, which isn&#8217;t &quot;namespaced&quot;. I bet if all the functions in <tt class="docutils literal"><span class="pre">cl</span></tt> were prefixed with <tt class="docutils literal"><span class="pre">cl-</span></tt>, nobody would mind&#8230;</p>
<p>[Update, 2010-Apr-27: From an <a class="reference external" href="http://permalink.gmane.org/gmane.comp.version-control.git.magit/354">email on the magit email list</a>:</p>
<blockquote><p>There's also the small matter that many of the function implementations in cl, striving for the full generality of Common Lisp (much of which is completely useless in Emacs), turn out to be horrible.</p>
<p>E.g., for a fun time, dig down through</p>
<blockquote><p> (find-if pred list :from-end t),</p></blockquote>
<p>and look at what it ACTUALLY does when you finish macroexpanding everything.  It tests <em>every</em> element of the list against the predicate, not just the rightmost ones stopping when it finds the first match.  Once it determines the rightmost match, it then retains NOT the element itself, but its <em>ordinal</em> position N, which then gets used in (elt list N), meaning ANOTHER listwalk, just to get the element back in order to return it.  Nor is the byte-compiler anywhere near smart enough to optimize this away (I'm not sure <em>any</em> compiler would be...)</p>
<p>I'll grant cl has some useful macros in it, but it comes bundled with a lot of crap and you need to be really careful about what you use.  For many things, you're better off rolling your own functionality using the standard routines available (e.g., while, mapcar, and reverse are all written directly in C).</p>
<p>And you most definitely do NOT want to be foisting the crap on everybody else, hence the need to keep it out of the runtime.</p>
</blockquote>
<p>Thanks!]</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/04/24/emacs-lisp-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSI Wind U110</title>
		<link>http://travelogue.betacantrips.com/2010/03/21/msi-wind-u110/</link>
		<comments>http://travelogue.betacantrips.com/2010/03/21/msi-wind-u110/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 02:48:05 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[information]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/03/21/msi-wind-u110/</guid>
		<description><![CDATA[Filed under: hardware, information
Subtitle: poulsbo and why you should avoid it.
I recently bought an MSI Wind U110. Linux suffers on this platform as a result of its GMA 500 aka &#34;Poulsbo&#34; graphics hardware. Wikipedia: &#34;GMA 500 support on Linux is not optimal.&#34; It&#8217;s possible to run Ubuntu 9.10 Netbook Remix, which is what I&#8217;m doing [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/hardware/'>hardware</a>, <a href='http://travelogue.betacantrips.com/tag/information/'>information</a></p>
<p>Subtitle: poulsbo and why you should avoid it.</p>
<p>I recently bought an MSI Wind U110. Linux suffers on this platform as a result of its <a class="reference external" href="http://en.wikipedia.org/wiki/Intel_GMA">GMA 500 aka &quot;Poulsbo&quot;</a> graphics hardware. Wikipedia: <a class="reference external" href="http://en.wikipedia.org/wiki/Intel_GMA#GMA_500_on_Linux">&quot;GMA 500 support on Linux is not optimal.&quot;</a> It&#8217;s possible to run Ubuntu 9.10 Netbook Remix, which is what I&#8217;m doing now, but it&#8217;s not optimal in the following ways:</p>
<ol class="arabic">
<li>
<p class="first">The wireless is disabled in fascinating ways until you press Fn-F11. Once you do that, it should work out of the box.</p>
</li>
<li>
<p class="first">You absolutely need to get the <tt class="docutils literal"><span class="pre">psb</span></tt> driver. Without it, you can&#8217;t even drive the LCD at native resolution, and life just utterly sucks. I did this by dumping a bunch of PPAs into my <tt class="docutils literal"><span class="pre">/etc/apt/sources.list.d</span></tt> using <tt class="docutils literal"><span class="pre">add-apt-repository</span></tt>. The <a class="reference external" href="https://launchpad.net/~ubuntu-mobile/+archive/ppa">Ubuntu-Mobile PPA</a> doesn&#8217;t seem to have packages for karmic right now; I found relevant packages in the PPA of <a class="reference external" href="https://launchpad.net/~kalon33/+archive/ppa">kalon33: Nicolas DERIVE</a> and the <tt class="docutils literal"><span class="pre">gma500</span></tt> PPA of <a class="reference external" href="https://launchpad.net/~lucazade/+archive/gma500">lucazade</a>. I&#8217;m currently running the packages built by Nicolas DERIVE.</p>
</li>
<li>
<p class="first">You need to &quot;fix&quot; the driver in some obscure way so that it doesn&#8217;t crash when you modprobe it. <a class="reference external" href="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-psb/+bug/406529">Bug 406529</a> documents the fix &#8212; see <a class="reference external" href="https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-psb/+bug/406529/comments/6">comment 6</a>. Be sure to uninstall the package <tt class="docutils literal"><span class="pre">psb-modules</span></tt> when you rebuild, because it has priority. The <tt class="docutils literal"><span class="pre">psb-kernel-source</span></tt> package unpacks into <tt class="docutils literal"><span class="pre">/usr/src</span></tt>.</p>
</li>
<li>
<p class="first">After you do the updated-packages dance, the &quot;home screen&quot; thing that lets you select packages doesn&#8217;t come up by default, but it does show up if you click the Ubuntu logo in the upper-left. Not sure what&#8217;s going on here.</p>
</li>
<li>
<p class="first">Suspend doesn&#8217;t work by default &#8212; the backlight doesn&#8217;t come on during resume. I&#8217;ve successfully suspended from the command line, both by <tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">pm-suspend</span> <span class="pre">--quirk-vbestate-restore</span></tt> and using the <tt class="docutils literal"><span class="pre">uswsusp</span></tt> package using a command like <tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">s2ram</span> <span class="pre">--force</span> <span class="pre">--vbe_save</span></tt>. It seems that by default, HAL is adding a bunch of quirks that interfere with backlight coming back on. HAL is in &quot;maintenance mode&quot; and may be being replaced by DeviceKit in the future, but for now we have to work with it.</p>
<p>If you close the lid, you&#8217;ll see the quirks that are being added in <tt class="docutils literal"><span class="pre">/var/log/pm-suspend.log</span></tt>. On my machine, these were: <tt class="docutils literal"><span class="pre">--quirk-dpms-on</span> <span class="pre">--quirk-dpms-suspend</span> <span class="pre">--quirk-vbe-post</span> <span class="pre">--quirk-vbemode-restore</span> <span class="pre">--quirk-vbestate-restore</span> <span class="pre">--quirk-vga-mode-3</span></tt>. It&#8217;s <tt class="docutils literal"><span class="pre">--quirk-vbe-post</span></tt> that really messes everything up, but even when I disabled that one, I still had problems with the screen randomly not coming back (but with the backlight on), so I decided to disable all of these quirks except <tt class="docutils literal"><span class="pre">--quirk-vbestate-restore</span></tt>.</p>
<p>There are at least two ways to do this. One way involves adding a pm-utils script to remove these quirks from pm-suspend calls. The other way involves telling HAL to get rid of these quirks.</p>
<p>The first way is in some ways simpler, so let&#8217;s start there.</p>
<ol class="arabic">
<li>
<p class="first">Add a file to <tt class="docutils literal"><span class="pre">/etc/pm/sleep.d/05_remove-annoying-quirks</span></tt> with these contents:</p>
<pre class="literal-block">
#!/bin/sh

. &quot;${PM_FUNCTIONS}&quot;

remove_quirks(){
  remove_parameters --quirk-dpms-on \
        --quirk-dpms-suspend \
        --quirk-vbe-post \
        --quirk-vbe-post \
        --quirk-vga-mode3 \
        --quirk-vbemode-restore
}

case &quot;$1&quot; in
        suspend|hibernate) remove_quirks;;
esac
</pre>
</li>
<li>
<p class="first"><tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">chmod</span> <span class="pre">a+x</span> <span class="pre">/etc/pm/sleep.d/05_remove_annoying_quirks</span></tt></p>
</li>
</ol>
<p>Here&#8217;s how you disable the quirks in HAL, which may or may not be a more elegant solution.</p>
<ol class="arabic">
<li>
<p class="first"><tt class="docutils literal"><span class="pre">lshal</span> <span class="pre">|</span> <span class="pre">less</span></tt> to see what HAL thinks of your system. You should see, close to the top, something like <tt class="docutils literal"><span class="pre">power_management.quirk.vbe_post</span> <span class="pre">=</span> <span class="pre">true</span></tt>, and similar for all the other above quirks.</p>
</li>
<li>
<p class="first"><tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">pm-suspend</span> <span class="pre">--quirk-vbestate-restore</span> <span class="pre">--store-quirks-as-fdi</span></tt>, which writes a file in <tt class="docutils literal"><span class="pre">/etc/hal/fdi/information/99local-pm-utils-quirks.fdi</span></tt>, storing the quirks you just used. On my machine, that looks like this:</p>
<pre class="literal-block">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt; &lt;!-- -*- SGML -*- --&gt;
&lt;!-- Created by pm-utils --&gt;
&lt;deviceinfo version=&quot;0.2&quot;&gt;
  &lt;device&gt;
    &lt;match key=&quot;system.hardware.vendor&quot; string=&quot;Micro-Star International&quot;&gt;
      &lt;match key=&quot;system.hardware.product&quot; string=&quot;U110&quot;&gt;
        &lt;match key=&quot;system.firmware.version&quot; string=&quot;AN012IMS Ver1.0E&quot;&gt;
          &lt;match key=&quot;system.hardware.primary_video.vendor&quot; int=&quot;0x8086&quot;&gt;
            &lt;match key=&quot;system.hardware.primary_video.product&quot; int=&quot;0x8108&quot;&gt;
              &lt;merge key=&quot;power_management.quirk.vbemode_restore&quot; type=&quot;bool&quot;&gt;true&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.vbestate_restore&quot; type=&quot;bool&quot;&gt;true&lt;/merge&gt;
            &lt;/match&gt;
          &lt;/match&gt;
        &lt;/match&gt;
      &lt;/match&gt;
    &lt;/match&gt;
  &lt;/device&gt;
&lt;/deviceinfo&gt;
</pre>
</li>
<li>
<p class="first">See the <tt class="docutils literal"><span class="pre">&lt;merge&gt;</span></tt> lines? Add some more that match the other quirks, to turn them off.</p>
<pre class="literal-block">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt; &lt;!-- -*- SGML -*- --&gt;
&lt;!-- Created by pm-utils --&gt;
&lt;deviceinfo version=&quot;0.2&quot;&gt;
  &lt;device&gt;
    &lt;match key=&quot;system.hardware.vendor&quot; string=&quot;Micro-Star International&quot;&gt;
      &lt;match key=&quot;system.hardware.product&quot; string=&quot;U110&quot;&gt;
        &lt;match key=&quot;system.firmware.version&quot; string=&quot;AN012IMS Ver1.0E&quot;&gt;
          &lt;match key=&quot;system.hardware.primary_video.vendor&quot; int=&quot;0x8086&quot;&gt;
            &lt;match key=&quot;system.hardware.primary_video.product&quot; int=&quot;0x8108&quot;&gt;
              &lt;merge key=&quot;power_management.quirk.vbe_post&quot; type=&quot;bool&quot;&gt;false&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.dpms_suspend&quot; type=&quot;bool&quot;&gt;false&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.dpms_on&quot; type=&quot;bool&quot;&gt;false&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.vga_mode_3&quot; type=&quot;bool&quot;&gt;false&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.vbemode_restore&quot; type=&quot;bool&quot;&gt;true&lt;/merge&gt;
              &lt;merge key=&quot;power_management.quirk.vbestate_restore&quot; type=&quot;bool&quot;&gt;true&lt;/merge&gt;
            &lt;/match&gt;
          &lt;/match&gt;
        &lt;/match&gt;
      &lt;/match&gt;
    &lt;/match&gt;
  &lt;/device&gt;
&lt;/deviceinfo&gt;
</pre>
</li>
<li>
<p class="first"><tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">restart</span> <span class="pre">hal</span></tt> and then <tt class="docutils literal"><span class="pre">lshal</span> <span class="pre">|</span> <span class="pre">less</span></tt> again. You should now see <tt class="docutils literal"><span class="pre">power_management.quirk.vbe_post</span> <span class="pre">=</span> <span class="pre">false</span></tt>, etc.</p>
</li>
</ol>
</li>
<li>
<p class="first">I stuck with <tt class="docutils literal"><span class="pre">uswsusp</span></tt> because resume is a lot faster using it. To enable <tt class="docutils literal"><span class="pre">uswsusp</span></tt> in pm-utils (which is what <tt class="docutils literal"><span class="pre">gnome-power-manager</span></tt> uses), edit <tt class="docutils literal"><span class="pre">/etc/pm/config.d/00sleep_module</span></tt> and add <tt class="docutils literal"><span class="pre">SLEEP_MODULE=&quot;uswsusp&quot;</span></tt>.</p>
</li>
<li>
<p class="first">Sound is broken out of the box. The fix is documented on <a class="reference external" href="http://linux-tipps.blogspot.com/2009/08/msi-wind-u110-linux-review.html">Linux Tipps</a>:</p>
<blockquote><p>Sound does not always work without problems. In Karmic 9.10 you have to comment out</p>
<pre class="literal-block">
#options snd-hda-intel power_save=10 power_save_controller=N
</pre>
<p>in /etc/modprobe.d/alsa-base.conf.</p>
<pre class="literal-block">
options snd-hda-intel position_fix=1 bdl_pos_adj=64
</pre>
<p>instead helped me as well.</p>
</blockquote>
<p>I&#8217;ve been playing with enabling/disabling this option and haven&#8217;t seen any clear gains or losses, although I have had sound cut out after resume both ways.</p>
</li>
<li>
<p class="first">The machine can drive external monitors at 1024&#215;768, 800&#215;600, 640&#215;480, and 720&#215;480, which is about what you would expect from hardware like this.</p>
</li>
<li>
<p class="first"><a class="reference external" href="http://linux-tipps.blogspot.com/2009/08/msi-wind-u110-linux-review.html">Like the man says, webcam works fine once you press Fn-F6.</a></p>
</li>
<li>
<p class="first">I&#8217;m finding that when I try to record audio, I get a massive amount of static and very little input volume. Still working on this one..</p>
</li>
<li>
<p class="first">Bluetooth seems to work out-of-the-box, but you have to Fn-F11 to toggle it on. (This seems to be a matter of some contention for some people, but on my machine Fn-F11 cycles through both Bluetooth and wireless off, to Bluetooth off and wireless on, to Bluetooth on and Wireless off, to both on, and then back. (00, 01, 10, 11.)</p>
</li>
</ol>
<p>[I'll continue to update this as I discover things about this machine.]</p>
<p>Otherwise, the keyboard&#8217;s pretty good and the battery life seems pretty good (as you might expect from the big-ass 9-cell battery).</p>
<p>As far as I can tell, it&#8217;s not really possible to run the  Ubuntu Lucid alpha on this hardware, and probably won&#8217;t be for a while, because Xorg 1.7 is incompatible with the closed-source <tt class="docutils literal"><span class="pre">psb</span></tt> driver. I wrote a post on <a class="reference external" href="http://communities.intel.com/message/85037">the thread on Intel&#8217;s forum about Linux support for GMA500</a> summarizing the various-driver situation; it&#8217;s possible that in a month, when Lucid finally comes out, there&#8217;ll be a better driver situation, or that in six months, Intel will release a better driver of their own. Do people still reverse engineer graphics drivers? Would anyone be interested in doing so for a free U110 or two of their own?</p>
<p>Knowing the things that I know, I&#8217;d probably advise against this netbook for anyone hoping to run Linux on it. In today&#8217;s day and age, it just doesn&#8217;t make sense to buy open-source-unfriendly hardware, even for the sake of a 10-inch screen. Then again, it&#8217;s hard to know what hardware to support. The Dell Mini 10, for example, has an Intel NM10 Express graphics card: what does that even mean? Does it have support? Wikipedia has a <a class="reference external" href="http://en.wikipedia.org/wiki/Comparison_of_netbooks">comparison of netbooks</a> page, but there&#8217;s no column for &quot;Linux support&quot;, and in general comparing multi-dimensional things like hardware is a real challenge. Anyone have any tips?</p>
<p>[Update: I have been tinkering with the different quirks for suspend. Right now I'm using SLEEP_MODLE=&quot;kernel&quot; and removing both quirks <tt class="docutils literal"><span class="pre">--quirk-vga-mode3</span></tt> and <tt class="docutils literal"><span class="pre">--quirk-vga-mode-3</span></tt> (one is specified by HAL, and another by the man page..). However, I still haven't solved the problem that periodically my machine will still just fail to suspend. My impression is that SLEEP_MODULE=&quot;uswsusp&quot; takes about half the time to suspend and resume, but that it's more unstable, where the failure mode is failing to resume. I don't know what else to try so for now I'm leaving it alone.]</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/03/21/msi-wind-u110/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Damn right you can.</title>
		<link>http://travelogue.betacantrips.com/2010/03/03/damn-right-you-can/</link>
		<comments>http://travelogue.betacantrips.com/2010/03/03/damn-right-you-can/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 01:36:14 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[crazy]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[wow]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/03/03/damn-right-you-can/</guid>
		<description><![CDATA[Filed under: crazy, humor, information, open source, wow
Seen on Planet Debian: &#8216;Can you get cp to give a progress bar like wget?&#8217; The solution starts:

#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- &#34;${1}&#34; &#34;${2}&#34; 2&#62;&#38;1 \
...

The author notes in the comments:
If you feel the need to point out an alternative solution, then you have missed [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/crazy/'>crazy</a>, <a href='http://travelogue.betacantrips.com/tag/humor/'>humor</a>, <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/wow/'>wow</a></p>
<p><a class="reference external" href="http://www.fooishbar.org/blog/tech/cp-progress-bar-2010-03-04-12-15.html">Seen</a> on <a class="reference external" href="http://planet.debian.net/">Planet Debian</a>: <a class="reference external" href="http://chris-lamb.co.uk/2008/01/24/can-you-get-cp-to-give-a-progress-bar-like-wget/">&#8216;Can you get cp to give a progress bar like wget?&#8217;</a> The solution starts:</p>
<pre class="literal-block">
#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- &quot;${1}&quot; &quot;${2}&quot; 2&gt;&amp;1 \
...
</pre>
<p>The author notes in the comments:</p>
<blockquote><p>If you feel the need to point out an alternative solution, then you have missed the entire point by a wide margin.</p>
<p class="attribution">&mdash;lamby</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/03/03/damn-right-you-can/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>scrape.py</title>
		<link>http://travelogue.betacantrips.com/2010/02/27/scrape-py/</link>
		<comments>http://travelogue.betacantrips.com/2010/02/27/scrape-py/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 20:03:20 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/02/27/scrape-py/</guid>
		<description><![CDATA[Filed under: information, open source
At PyCon, I saw a lightning talk about scrape.py, a lightweight Python library for parsing webpages/interacting with them programmatically. For example, finding page elements:

&#62;&#62;&#62; from scrape import *
&#62;&#62;&#62; s.go('http://zesty.ca/')
&#60;Region 0:17780&#62;
&#62;&#62;&#62; d = s.doc
&#62;&#62;&#62; t = d.first('title')
&#62;&#62;&#62; t
&#60;Region 247:258 title&#62;
&#62;&#62;&#62; t.tagname
'title'
&#62;&#62;&#62; t.text
u'Ka-Ping Yee'


The presentation I saw focused on the use case of [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a></p>
<p>At PyCon, I saw a lightning talk about <a class="reference external" href="http://zesty.ca/scrape/">scrape.py</a>, a lightweight Python library for parsing webpages/interacting with them programmatically. For example, finding page elements:</p>
<blockquote><pre class="doctest-block">
&gt;&gt;&gt; from scrape import *
&gt;&gt;&gt; s.go('http://zesty.ca/')
&lt;Region 0:17780&gt;
&gt;&gt;&gt; d = s.doc
&gt;&gt;&gt; t = d.first('title')
&gt;&gt;&gt; t
&lt;Region 247:258 title&gt;
&gt;&gt;&gt; t.tagname
'title'
&gt;&gt;&gt; t.text
u'Ka-Ping Yee'
</pre>
</blockquote>
<p>The presentation I saw focused on the use case of testing your website. This is definitely a pain point for me personally: I currently either grep the HTML with regexes or I parse the whole thing using ElementTree and use XPath. But there&#8217;s still a couple of problems: 1. JS isn&#8217;t usually testable this way; 2. you often have to construct your HTML with an eye towards testability. For example, to test pagination, you might need to add a class or id specifying that this is the pagination section and that these pages link to pagination things.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/02/27/scrape-py/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sex as cause of carpal tunnel syndrome</title>
		<link>http://travelogue.betacantrips.com/2010/02/25/sex-as-cause-of-carpal-tunnel-syndrome/</link>
		<comments>http://travelogue.betacantrips.com/2010/02/25/sex-as-cause-of-carpal-tunnel-syndrome/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 01:25:36 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/02/25/sex-as-cause-of-carpal-tunnel-syndrome/</guid>
		<description><![CDATA[Filed under: information
Via Suzanne, who writes &#34;this is bad news for computer scientists&#34;.
A new paper in Medical Hypotheses journal posits that carpal tunnel syndrome can be caused by sexual intercourse. From the abstract:
 It is proposed that carpal tunnel syndrome can develop during sexual intercourse when the hands become repeatedly extended while under pressure from [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a></p>
<p>Via Suzanne, who writes &quot;<a class="reference external" href="http://www.boingboing.net/2010/02/01/sex-as-cause-of-carp.html">this</a> is bad news for computer scientists&quot;.</p>
<blockquote><p>A new paper in Medical Hypotheses journal posits that carpal tunnel syndrome can be caused by sexual intercourse. From the abstract:</p>
<blockquote><p> It is proposed that carpal tunnel syndrome can develop during sexual intercourse when the hands become repeatedly extended while under pressure from the weight of the upper body. Of the eight risk factors associated with non-occupational carpal tunnel syndrome, age, marital status, pregnancy and use of hormonal agents can be explained by changes in the frequency of sexual intercourse. On the other hand, obesity, macromastia and large chest circumference can be explained by the increased pressure imposed on the wrists by the heavier upper body associated with such conditions. The bilaterality of carpal tunnel syndrome can be explained by the fact that both hands are needed to support the upper body during sexual intercourse. A parallel decrease in the frequency of sexual intercourse and the incidence of carpal tunnel syndrome between the sixth and the seventh decades of life suggests a possible cause and effect relationship between sexual intercourse and carpal tunnel syndrome.</p></blockquote>
</blockquote>
<p>Also: if you do push-ups, you might invest in getting some push-up bars. See also <a class="reference external" href="http://www.jwz.org/gruntle/wrists.html">JWZ&#8217;s experiences with his wrists</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/02/25/sex-as-cause-of-carpal-tunnel-syndrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Safely Store a Password</title>
		<link>http://travelogue.betacantrips.com/2010/02/16/how-to-safely-store-a-password/</link>
		<comments>http://travelogue.betacantrips.com/2010/02/16/how-to-safely-store-a-password/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 06:12:18 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[nerd pride]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/02/16/how-to-safely-store-a-password/</guid>
		<description><![CDATA[Filed under: information, nerd pride, open source
Thanks Adam &#8212; how to safely store a password.
 Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt. Use bcrypt.
Good to know!
]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/information/'>information</a>, <a href='http://travelogue.betacantrips.com/tag/nerd-pride/'>nerd pride</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a></p>
<p>Thanks Adam &#8212; <a class="reference external" href="http://codahale.com/how-to-safely-store-a-password/">how to safely store a password</a>.</p>
<blockquote><p> Use <a class="reference external" href="http://www.usenix.org/events/usenix99/provos.html">bcrypt</a>. Use <a class="reference external" href="http://github.com/codahale/bcrypt-ruby">bcrypt</a>. Use <a class="reference external" href="http://pypi.python.org/pypi/bcrypt/">bcrypt</a>. Use <a class="reference external" href="http://derekslager.com/blog/posts/2007/10/bcrypt-dotnet-strong-password-hashing-for-dotnet-and-mono.ashx">bcrypt</a>. Use <a class="reference external" href="http://www.mindrot.org/projects/jBCrypt/">bcrypt</a>. Use <a class="reference external" href="http://search.cpan.org/~zefram/Crypt-Eksblowfish-0.007/lib/Crypt/Eksblowfish/Bcrypt.pm">bcrypt</a>. Use <a class="reference external" href="http://www.openwall.com/crypt/">bcrypt</a>. Use <a class="reference external" href="http://www.openwall.com/phpass/">bcrypt</a>. Use <a class="reference external" href="http://github.com/skarab/erlang-bcrypt">bcrypt</a>.</p></blockquote>
<p>Good to know!</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/02/16/how-to-safely-store-a-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

