<?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; open source</title>
	<atom:link href="http://travelogue.betacantrips.com/tag/open-source/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>HOWTO write a Perl Obfu</title>
		<link>http://travelogue.betacantrips.com/2011/09/05/howto-write-a-perl-obfu/</link>
		<comments>http://travelogue.betacantrips.com/2011/09/05/howto-write-a-perl-obfu/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 10:35:40 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[nerd pride]]></category>
		<category><![CDATA[old arts die out]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming languages]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2011/09/05/howto-write-a-perl-obfu/</guid>
		<description><![CDATA[Filed under: humor, nerd pride, old arts die out, open source, programming languages
Here&#8217;s one I found once a long time ago and keep thinking of randomly.  jynx on Perlmonks explains what makes and breaks an Obfuscated Code entry.  Does anyone still write Perl?  Does anyone still write (intentionally) obfuscated Perl?  Still, [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/humor/'>humor</a>, <a href='http://travelogue.betacantrips.com/tag/nerd-pride/'>nerd pride</a>, <a href='http://travelogue.betacantrips.com/tag/old-arts-die-out/'>old arts die out</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>Here&#8217;s one I found once a long time ago and keep thinking of randomly.  <a class="reference external" href="http://www.perlmonks.org/?node_id=36507">jynx</a> on <a class="reference external" href="http://www.perlmonks.org/">Perlmonks</a> explains <a class="reference external" href="http://www.perlmonks.org/?node_id=36507">what makes and breaks an Obfuscated Code entry</a>.  Does anyone still write Perl?  Does anyone still write (intentionally) obfuscated Perl?  Still, I really like the way he offers examples and counter-examples of each principle.</p>
<blockquote><div class="line-block">
<div class="line">2) pack/unpack is not obfuscation</div>
</p></div>
<p>The reason i list the counter-example is because it is not unpacking anything like what you think at first glance. While the obfu itself does need some work, that is an acceptable use of unpack. On the other hand, looking at the example we see a fairly common use of unpack: get the string and unpack it, oh look the string is japh. While a packed string is line noise, it&#8217;s easy to see past it and note what the code is doing if it&#8217;s a simple obfu.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2011/09/05/howto-write-a-perl-obfu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iolaus</title>
		<link>http://travelogue.betacantrips.com/2011/09/04/iolaus/</link>
		<comments>http://travelogue.betacantrips.com/2011/09/04/iolaus/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 16:34:08 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2011/09/04/iolaus/</guid>
		<description><![CDATA[Filed under: open source, programming languages, version control
Since I have a tag dedicated to version control, I thought to use it to link to iolaus, a git porcelain that emulates darcs.  It&#8217;s written by the same guy who wrote darcs, possibly as a one-off project.  Perhaps it was meant to solve the darcs [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a>, <a href='http://travelogue.betacantrips.com/tag/programming-languages/'>programming languages</a>, <a href='http://travelogue.betacantrips.com/tag/version-control/'>version control</a></p>
<p>Since I have a tag dedicated to version control, I thought to use it to link to <a class="reference external" href="https://github.com/droundy/iolaus">iolaus, a git porcelain that emulates darcs</a>.  It&#8217;s written by the same guy who wrote darcs, possibly as a one-off project.  Perhaps it was meant to solve the darcs <a class="reference external" href="http://wiki.darcs.net/ConflictsFAQDarcs1#i-have-an-exponential-time-conflict-how-do-i-work-around-it">&quot;exponential merge time&quot;</a> problem.  The same problem has been <a class="reference external" href="http://koweycode.blogspot.com/2008/04/darcs-2-at-last.html">drastically improved in Darcs 2</a>, and iolaus hasn&#8217;t been updated since March 2010, so it probably isn&#8217;t worth worrying a lot about.</p>
<blockquote><p>I realized that the semantics of git are actually not nearly so far from those of darcs as I had previously thought. In particular, if we view each commit as describing a patch in its &quot;primitive context&quot; (to use darcs-speak), then there is basically a one-to-one mapping from darcs&#8217; semantics to a git repository. The catch is that it must be a git repository with multiple heads!</p>
<p>Fortunately, this is not such a foreign concept to git. In fact, git has a whole framework to help users manage repositories with multiple heads (see, e.g. checkout and branch). So it&#8217;s not so very foreign at all. There are just a couple of major differences how git works. First, in git your working directory will only reflect one of the heads, while in darcs (or iolaus) the working directory reflects the union of all changes in the repository.</p>
</blockquote>
<p>Just to make things even more interesting, it&#8217;s written in Go.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2011/09/04/iolaus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>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>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>Openhatch, the open source involvement engine</title>
		<link>http://travelogue.betacantrips.com/2010/02/27/openhatch-the-open-source-involvement-engine/</link>
		<comments>http://travelogue.betacantrips.com/2010/02/27/openhatch-the-open-source-involvement-engine/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 17:34:54 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[computer science slash cultural anthropology]]></category>
		<category><![CDATA[culture]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/02/27/openhatch-the-open-source-involvement-engine/</guid>
		<description><![CDATA[Filed under: computer science slash cultural anthropology, culture, open source
One of the neat things I saw at PyCon was a project called OpenHatch, which (among other features) indexes bugs and makes them easy to find according to your skillset and experience level. For example, lots of projects tag bugs as &#34;easy&#34; or &#34;beginner&#34; to promote [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <a href='http://travelogue.betacantrips.com/tag/computer-science-slash-cultural-anthropology/'>computer science slash cultural anthropology</a>, <a href='http://travelogue.betacantrips.com/tag/culture/'>culture</a>, <a href='http://travelogue.betacantrips.com/tag/open-source/'>open source</a></p>
<p>One of the neat things I saw at PyCon was a project called <a class="reference external" href="https://openhatch.org/">OpenHatch</a>, which (among other features) indexes bugs and makes them easy to find according to your skillset and experience level. For example, lots of projects tag bugs as &quot;easy&quot; or &quot;beginner&quot; to promote newbie involvement and ramp-up; openhatch makes it easy to get involved with a project you can contribute to.</p>
<p>I think there&#8217;s still some work to be done &#8212; bugs about &quot;you need a better logo&quot; or &quot;help, our docs are crap&quot; don&#8217;t quite fit into this workflow. Still, good effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/02/27/openhatch-the-open-source-involvement-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>instantbird</title>
		<link>http://travelogue.betacantrips.com/2010/02/17/instantbird/</link>
		<comments>http://travelogue.betacantrips.com/2010/02/17/instantbird/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 17:54:34 +0000</pubDate>
		<dc:creator>Ethan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[nerd pride]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://travelogue.betacantrips.com/2010/02/17/instantbird/</guid>
		<description><![CDATA[Filed under: nerd pride, open source
Did you know (via the Debian NEW and BYHAND package list) that there&#8217;s a new kid on the IM software block? Behold: instantbird, based on the XUL framework and the pidgin libpurple codebase.
Instantbird is a multi-protocol Instant Messaging client. Using it, you can connect to all your different IM accounts.
It [...]]]></description>
			<content:encoded><![CDATA[<p>Filed under: <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>Did you know (<a class="reference external" href="http://ftp-master.debian.org/new/instantbird_0.2b1-1.html">via</a> the <a class="reference external" href="http://ftp-master.debian.org/new.html">Debian NEW and BYHAND package list</a>) that there&#8217;s a new kid on the IM software block? Behold: <a class="reference external" href="http://instantbird.com/">instantbird</a>, based on the XUL framework and the <a class="reference external" href="http://www.pidgin.im/">pidgin</a> libpurple codebase.</p>
<blockquote><p>Instantbird is a multi-protocol Instant Messaging client. Using it, you can connect to all your different IM accounts.</p>
<p>It uses the Mozilla rendering engine to display IMs, and the Pidgin libpurple to connect to the different networks.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://travelogue.betacantrips.com/2010/02/17/instantbird/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

