<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:media="http://search.yahoo.com/mrss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>brainwagon</title>
	
	<link>http://brainwagon.org</link>
	<description>This feed is dedicated to all the mental flotsam and jetsam that I find on the web and pursue in my off hours. It's a view into the head of a geek blogger with more interests than time. I hope you find something interesting.</description>
	<lastBuildDate>Thu, 29 Jul 2010 21:32:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/brainwagon" /><feedburner:info uri="brainwagon" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>Copyright 2006, Mark VandeWettering</media:copyright><media:thumbnail url="http://brainwagon.org/images/grumpy-brainwagon-small.jpg" /><media:keywords>geek,science,programming,computers,blogging,freebsd,telescopes,astronomy,gadgets,toys,games,puzzles,cryptography</media:keywords><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Games &amp; Hobbies</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Science &amp; Medicine/Natural Sciences</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology</media:category><geo:lat>37.969673</geo:lat><geo:long>-122.294134</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-sa/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:browserFriendly>This is an XML formatted feed. Normally, you'd pass this URL to an RSS aggregator to subscribe to this feed.</feedburner:browserFriendly><item>
		<title>Basics-Picavet – Kite Aerial Photography Electronic Resources</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/2xACucEB1gk/</link>
		<comments>http://brainwagon.org/2010/07/29/basics-picavet-kite-aerial-photography-electronic-resources/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 21:32:02 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Amateur Science]]></category>
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6034</guid>
		<description><![CDATA[I might have an opportunity in a couple of weeks to go do some kite flying at an upcoming picnic, and I thought that I might give a quick try at quick and dirty kite photography.   After all, I&#8217;ve been musing about lofting a camera up high using a weather balloon, so why [...]]]></description>
			<content:encoded><![CDATA[<p>I might have an opportunity in a couple of weeks to go do some kite flying at an upcoming picnic, and I thought that I might give a quick try at quick and dirty kite photography.   After all, I&#8217;ve been musing about lofting a camera up high using a weather balloon, so why not start with elevations of just a few hundred feet?   I haven&#8217;t given this much study or thought, but I know that designing an appropriate rig for attaching the camera to the line is a key element.  My idea is to loft my old Canon SD1100 on a little gadget which is known as (I had to look it up) a Picavet.   It&#8217;s a fiendishly simple and clever device for keeping the camera basically level while attached to the kite string.   Check it out:</p>
<p><a href="http://www.kaper.us/basics/BASICS_picavet.html">Basics-Picavet &#8211; Kite Aerial Photography Electronic Resources &#8211; KAPER</a></p>
<p>I&#8217;ll probably tack this together sometime next week after a quick trip to the hardware store.    Stay tuned for pictures.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=2xACucEB1gk:aDww4859UvY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=2xACucEB1gk:aDww4859UvY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=2xACucEB1gk:aDww4859UvY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=2xACucEB1gk:aDww4859UvY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/2xACucEB1gk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/29/basics-picavet-kite-aerial-photography-electronic-resources/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/29/basics-picavet-kite-aerial-photography-electronic-resources/</feedburner:origLink></item>
		<item>
		<title>Anybody want to take over the domain telescopemaking.org?</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/9fxE9r9YW-w/</link>
		<comments>http://brainwagon.org/2010/07/29/anybody-want-to-take-over-the-domain-telescopemaking-org/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 15:40:46 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Amateur Radio]]></category>
		<category><![CDATA[Astronomy]]></category>
		<category><![CDATA[Telescopemaking]]></category>

		<guid isPermaLink="false">http://brainwagon.org/2010/07/29/anybody-want-to-take-over-the-domain-telescopemaking-org/</guid>
		<description><![CDATA[I&#8217;ve had the domain telescopemaking.org for a long time (even longer than brainwagon.org) but I haven&#8217;t been keeping up with refreshing any of the content on it in years.   Rather than just continuing to maintain the aging content, I&#8217;d like to pass the domain off to someone who might make better use of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had the domain <a href="http://telescopemaking.org">telescopemaking.org</a> for a long time (even longer than brainwagon.org) but I haven&#8217;t been keeping up with refreshing any of the content on it in years.   Rather than just continuing to maintain the aging content, I&#8217;d like to pass the domain off to someone who might make better use of it.    Are any of my readers interested?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=9fxE9r9YW-w:xS39JRvTQ_k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=9fxE9r9YW-w:xS39JRvTQ_k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=9fxE9r9YW-w:xS39JRvTQ_k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=9fxE9r9YW-w:xS39JRvTQ_k:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/9fxE9r9YW-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/29/anybody-want-to-take-over-the-domain-telescopemaking-org/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/29/anybody-want-to-take-over-the-domain-telescopemaking-org/</feedburner:origLink></item>
		<item>
		<title>10,000 Monkeys Typing…with a Unix/sh challenge…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/wNM2G2QFu_0/</link>
		<comments>http://brainwagon.org/2010/07/27/10000-monkeys-typing-with-a-unixsh-challenge/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 01:01:35 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6027</guid>
		<description><![CDATA[I was testing some code that I wrote for analyzing cryptograms, and decided that the easiest way to do so would be to get some random text, drawn from the letters A-Z.   A moments thought yielded this method, without even programming anything:

tr -d -c A-Z < /dev/urandom &#124; dd ibs=10000 count=1

The tr generates [...]]]></description>
			<content:encoded><![CDATA[<p>I was testing some code that I wrote for analyzing cryptograms, and decided that the easiest way to do so would be to get some random text, drawn from the letters A-Z.   A moments thought yielded this method, without even programming anything:</p>
<pre>
tr -d -c A-Z < /dev/urandom | dd ibs=10000 count=1
</pre>
<p>The tr generates the required data, and the dd truncates it to the desired number of characters.  But for tidiness, I'd like to have the output broken up so that each line consists of 50 characters, with spaces inserted between every 5 characters (I won't begrudge you if you leave a dangling space at the end of each line).   I couldn't figure out a simple way to get that to happen all in one command line and using standard utilities.    I can of course write a little Python utility, or even perl,  but can anyone think of a clever short way to do this?</pre>
<p>Addendum: Tom pointed out something interesting about the command that I listed above: it doesn&#8217;t work the way I think it does.   Apparently the ibs is the input block size, which dd dutifully allocates, and the count is the number of <em>read</em> system calls that the system issues.  For reasons which escape me, it does not try to make sure that it actually received a full input block: it will nicely return short blocks if it finds them, and doesn&#8217;t bother retrying to get more.  Hence, it works rather erratically when using a pipe as input, particularly when the writes from the upstream process may flush in odd intervals.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=wNM2G2QFu_0:tF8iFRepxdE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=wNM2G2QFu_0:tF8iFRepxdE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=wNM2G2QFu_0:tF8iFRepxdE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=wNM2G2QFu_0:tF8iFRepxdE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/wNM2G2QFu_0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/27/10000-monkeys-typing-with-a-unixsh-challenge/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/27/10000-monkeys-typing-with-a-unixsh-challenge/</feedburner:origLink></item>
		<item>
		<title>The Burger Lab: The Ins-n-Outs of an In-N-Out Double-Double, Animal-Style | A Hamburger Today</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/5SFxc6o7YVs/</link>
		<comments>http://brainwagon.org/2010/07/26/the-burger-lab-the-ins-n-outs-of-an-in-n-out-double-double-animal-style-a-hamburger-today/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 23:10:20 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cooking and Recipes]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6025</guid>
		<description><![CDATA[I have fond memories of In-N-Out.  In fact, one is fairly near my house, so I don&#8217;t need to go deep into my past: I can simply go over there and get one whenever the mood strikes me.   I recognize that the burgers themselves aren&#8217;t (to the truth be told) particularly all [...]]]></description>
			<content:encoded><![CDATA[<p>I have fond memories of In-N-Out.  In fact, one is fairly near my house, so I don&#8217;t need to go deep into my past: I can simply go over there and get one whenever the mood strikes me.   I recognize that the burgers themselves aren&#8217;t (to the truth be told) particularly all that good.   I suspect that my fondness for them stems from a memory of the first time I had one, when the In-N-Out in Pinole had just opened, I was in the process of hunting for my first house.   Carmen and I stopped in, and had a couple of them, and whether it was the stress of the day or whatever, I thought they were the best thing on earth.  </p>
<p>Some others seem to have similar notions.   This article was interesting, because a fanatic went to the trouble of dissecting their burgers and making them at home.  That he used mathematics and their nutritional information as clues is just a bonus.  Check it out:</p>
<p><a href="http://aht.seriouseats.com/archives/2010/07/the-burger-lab-how-to-make-an-in-n-out-double-double-animal-style.html">The Burger Lab: The Ins-n-Outs of an In-N-Out Double-Double, Animal-Style | A Hamburger Today</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=5SFxc6o7YVs:VM8vr0q_cpc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=5SFxc6o7YVs:VM8vr0q_cpc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=5SFxc6o7YVs:VM8vr0q_cpc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=5SFxc6o7YVs:VM8vr0q_cpc:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/5SFxc6o7YVs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/26/the-burger-lab-the-ins-n-outs-of-an-in-n-out-double-double-animal-style-a-hamburger-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/26/the-burger-lab-the-ins-n-outs-of-an-in-n-out-double-double-animal-style-a-hamburger-today/</feedburner:origLink></item>
		<item>
		<title>Wikileaks, and the Report on the Barnhouse Effect</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/0J1P4LWL7lc/</link>
		<comments>http://brainwagon.org/2010/07/26/wikileaks-and-the-report-on-the-barnhouse-effect/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:50:16 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Rants and Raves]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6019</guid>
		<description><![CDATA[My iPad blinked a CNN headline this weekend that Wikileaks had published a vast number of previously secret reports on the ongoing war in Afghanistan.   While the furor over this doesn&#8217;t seem to have reached the level of, say, Lindsay Lohan in prison might, it does nevertheless seem to have generated some significant [...]]]></description>
			<content:encoded><![CDATA[<p>My iPad blinked a CNN headline this weekend that <a href="http://wikileaks.org/wiki/Afghan_War_Diary,_2004-2010">Wikileaks had published a vast number of previously secret reports on the ongoing war in Afghanistan.</a>   While the furor over this doesn&#8217;t seem to have reached the level of, say, Lindsay Lohan in prison might, it does nevertheless seem to have generated some significant chatter in the blogging universe.   </p>
<p>As the father of a young man currently serving in the Armed Forces (thankfully not in Afghanistan) I am a bit concerned that this release of information may provide aid to enemy combatants.   If that is your fear, then I understand it, and I won&#8217;t try to argue against it.  Our children are precious beyond reasonable measure, and keeping them safe is the first priority of any parent.</p>
<p>And yet, I&#8217;m not really outraged by the Wikileaks publication, and I guess I can thank Kurt Vonnegut for that.</p>
<p>In his short story <em>Report on the Barnhouse Effect</em>, Professor Arthur Barnhouse develops the ability to control physical objects through a power he calls &#8220;dynamo-psychism&#8221;.   It begins with him just being able to bust a crap game by controlling dice rolls, but as he practices, his power grows until he literally becomes a super weapon.   At this point, he presents himself to the U.S. government, who is eager to test his powers and add them to their arsenal.   After a successful test, the generals turn around to find that Barnhouse has disappeared, leaving a note that declares that  he is the &#8220;first weapon with a conscience&#8221;, and that he won&#8217;t permit himself to be used by them.    Barnhouse goes into hiding, and then begins <em>The War of the Tattle Tales</em>.   Whenever a government tries to stockpile weapons, someone merely needs to leak its existence to the press, and Barnhouse would eradicate it.   </p>
<p>Wikileaks is starting a similar war.    I&#8217;m not going to argue whether our &#8220;War of Terror&#8221; has been worth the monetary or human costs: quite frankly, I&#8217;m not sure either way.   But we certainly can&#8217;t formulate an informed debate by simply hiding or ignoring the reality of the costs involved.   Wikileaks is shaming us all by forcing us to abandon our plausible deniability and to address the real human costs of the war, and to balance them against the importance of our objectives.    If this proves to be disruptive to our foreign policy, then I would submit that perhaps our foreign policy needed disruption.</p>
<p>Could the publication of this information be dangerous for American troops?    Yes, quite possibly.  I&#8217;m not sure I&#8217;d have the guts to publish this information, because I am not sure I could stand the responsibility.   But let&#8217;s be clear: our troops are already in danger.    Our foreign policy decisions put them in danger.   We should be arguing and debating about whether the risks that they have agreed to undertake on our behalf are truly worth the cost that they will pay.</p>
<p>It is said that nobody likes a tattle-tale.   Certainly if you are the one being tattled on, you probably don&#8217;t like it.   But ultimately, the truth is the truth, and it is probably best not to hide it or deny it.   Sunlight is the best disinfectant.   </p>
<p>In closing, I&#8217;d like to thank all the brave men and women of our armed forces: you are brave beyond anything I know, and it is my deepest hope that you all complete your duties and return to your friends and family who love you.</p>
<p>Addendum:  On a lighter note, Dimension X produced a radio version of Report on the Barnhouse Effect, which <a href="http://ia301507.us.archive.org/2/items/Dimension-X/Dimx_e003_ReportOnTheBarnhouseEffect.mp3">you can find on archive.org (MP3)</a>.   It&#8217;s not quite as good as the real short story, but it&#8217;s not terrible either.</p>
<p>Addendum: Elwood pointed out that Julian Assange gave a talk about Wikileaks at TED.   For your consumption:</p>
<p><center><!--copy and paste--><object width="446" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JulianAssange_2010G-medium.flv&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/JulianAssange-2010G.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=918&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=julian_assange_why_the_world_needs_wikileaks;year=2010;theme=war_and_peace;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2010;theme=media_that_matters;event=TEDGlobal+2010;&#038;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/JulianAssange_2010G-medium.flv&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/JulianAssange-2010G.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=918&#038;introDuration=15330&#038;adDuration=4000&#038;postAdDuration=830&#038;adKeys=talk=julian_assange_why_the_world_needs_wikileaks;year=2010;theme=war_and_peace;theme=new_on_ted_com;theme=a_taste_of_tedglobal_2010;theme=media_that_matters;event=TEDGlobal+2010;"></embed></object><br />
</center></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=0J1P4LWL7lc:iWll-zYWCtw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=0J1P4LWL7lc:iWll-zYWCtw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=0J1P4LWL7lc:iWll-zYWCtw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=0J1P4LWL7lc:iWll-zYWCtw:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/0J1P4LWL7lc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/26/wikileaks-and-the-report-on-the-barnhouse-effect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>

		<media:content url="http://feedproxy.google.com/~r/brainwagon/~5/-Tu55Dh2svQ/Dimx_e003_ReportOnTheBarnhouseEffect.mp3" fileSize="5017794" type="audio/mpeg" /><feedburner:origLink>http://brainwagon.org/2010/07/26/wikileaks-and-the-report-on-the-barnhouse-effect/</feedburner:origLink><enclosure url="http://feedproxy.google.com/~r/brainwagon/~5/-Tu55Dh2svQ/Dimx_e003_ReportOnTheBarnhouseEffect.mp3" length="5017794" type="audio/mpeg" /><feedburner:origEnclosureLink>http://ia301507.us.archive.org/2/items/Dimension-X/Dimx_e003_ReportOnTheBarnhouseEffect.mp3</feedburner:origEnclosureLink></item>
		<item>
		<title>Primality testing with Perl regexs</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/mzTSHfYAeZw/</link>
		<comments>http://brainwagon.org/2010/07/23/primality-testing-with-perl-regexs/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 03:15:19 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6017</guid>
		<description><![CDATA[Okay, here&#8217;s a little pet peeve of mine.  Somebody brought up that it&#8217;s possible to do primality testing using Perl regular expressions.   This has been kicking around for a while, I&#8217;m not sure who originated the idea, but you can find links to it with a Google search.   As an [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, here&#8217;s a little pet peeve of mine.  Somebody brought up that it&#8217;s possible to do primality testing using Perl regular expressions.   This has been kicking around for a while, I&#8217;m not sure who originated the idea, but you can find links to it with a Google search.   As an example, consider the Perl one liner here:</p>
<p><a href="http://everything2.com/title/Primality+testing+with+Perl+regexs">Primality testing with Perl regexs@Everything2.com</a></p>
<p>It&#8217;s a very cute hack, so where is my peeve?</p>
<p><em>The regular expression they list isn&#8217;t a regular expression.</em></p>
<p>It seems a bit of a quibble.   I&#8217;ve had people argue that whatever the meaning of regular expressions might be, the &#8220;regular expressions&#8221; matched by popular &#8220;regular expression&#8221; libraries like Perl and Python should supercede, because they are in fact so ubiquitous.  I might argue, except for one thing:</p>
<p>Real regular expressions <em>can be matched really quickly</em>, but are seldom matched very quickly at all by Perl, Python, or Ruby.   <a href="http://swtch.com/~rsc/regexp/regexp1.html">Russ Cox</a> wrote a nice article about this.   Yes, perl regular expressions <em>can</em> match all sorts of complex things that real regular expressions can&#8217;t, but if all you&#8217;ve got is a real regular expression, perl&#8217;s performance is typically an order of magnitude slower than necessary, and in fact, perl can be arbitrarily slow.   This should come as no surprise: since the perl implementation of primality testing <em>does work</em>, it obviously must be slow: it is, after all, capable of any arbitrary computation.</p>
<p>It&#8217;s not like doing it correctly is even difficult: we implemented all this stuff back in Ginnie Lo&#8217;s compiler class back in the early 80s, and it was old back then.  We made lexical analyzers that began by compiling NFAs for all the tokens in the language, and then converting them into DFAs, which marched along and processed files in linear time.  </p>
<p>Okay, it&#8217;s my peeve, but there is some good, beautiful computer science underlying it all.  </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=mzTSHfYAeZw:fivn9BFUBZw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=mzTSHfYAeZw:fivn9BFUBZw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=mzTSHfYAeZw:fivn9BFUBZw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=mzTSHfYAeZw:fivn9BFUBZw:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/mzTSHfYAeZw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/23/primality-testing-with-perl-regexs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/23/primality-testing-with-perl-regexs/</feedburner:origLink></item>
		<item>
		<title>Eight years of blogging…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/penE-kOWyyQ/</link>
		<comments>http://brainwagon.org/2010/07/21/eight-years-of-blogging/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 04:14:12 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Amateur Radio]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6014</guid>
		<description><![CDATA[Today is the eighth anniversary of my blog.   Post #3428.    Happy Birthday to brainwagon!
]]></description>
			<content:encoded><![CDATA[<p>Today is the eighth anniversary of my blog.   Post #3428.    Happy Birthday to brainwagon!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=penE-kOWyyQ:oCn57N3HKiY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=penE-kOWyyQ:oCn57N3HKiY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=penE-kOWyyQ:oCn57N3HKiY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=penE-kOWyyQ:oCn57N3HKiY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/penE-kOWyyQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/21/eight-years-of-blogging/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/21/eight-years-of-blogging/</feedburner:origLink></item>
		<item>
		<title>Some projects related to Wikipedia…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/1LDNzukvGaE/</link>
		<comments>http://brainwagon.org/2010/07/19/some-projects-related-to-wikipedia/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 00:13:30 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6011</guid>
		<description><![CDATA[Wikipedia is an amazing resource.   I suspect there are a lot of you out there who are Wikipedia critics, but I think that on the whole it is an awesome resource that can provide a lot of people who perhaps can&#8217;t afford a real, dead-tree encylopedia with a lot of knowledge for very [...]]]></description>
			<content:encoded><![CDATA[<p>Wikipedia is an amazing resource.   I suspect there are a lot of you out there who are Wikipedia critics, but I think that on the whole it is an awesome resource that can provide a lot of people who perhaps can&#8217;t afford a real, dead-tree encylopedia with a lot of knowledge for very low cost.   </p>
<p>Except of course, that to use it, you need a computer with an internet connection.</p>
<p>Or do you?   Today&#8217;s cool link courtesy of the Make blog was to a project called <a href="http://humaneinfo.com/index.html">The Humane Reader</a>.  The idea is to build a cheap ($20) computer which can be used to store (at least a large fraction) of the entire Wikipedia database onto a flash card and provide a simple 4 button interface and TV output (PAL or NTSC) to all this data.  Thus, for less money than we would spend on a textbook, you could provide access to all the information on Wikipedia (currently about 6gb of data, compressed with bzip).   </p>
<p>I think it&#8217;s a pretty nifty idea.  The technical details of the project are fairly easy to understand: if you are used to hacking Arduinos, you could probably grasp everything that he talks about.   </p>
<p>It got me thinking about the possibility of projects that might be doable with the Wikipedia database.  It&#8217;s all available as a compressed XML database, so lots of things are possible with a little programming.   I found the following link to be pretty interesting:</p>
<p><a href="http://users.softlab.ntua.gr/~ttsiod/buildWikipediaOffline.html">Building a (fast) Wikipedia offline reader</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=1LDNzukvGaE:FGqeYs1M_M8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=1LDNzukvGaE:FGqeYs1M_M8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=1LDNzukvGaE:FGqeYs1M_M8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=1LDNzukvGaE:FGqeYs1M_M8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/1LDNzukvGaE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/19/some-projects-related-to-wikipedia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/19/some-projects-related-to-wikipedia/</feedburner:origLink></item>
		<item>
		<title>Reminder: HOWTO tunnel http using ssh…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/cvzpZlbSWpc/</link>
		<comments>http://brainwagon.org/2010/07/16/reminder-howto-tunnel-http-using-ssh/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:46:47 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6007</guid>
		<description><![CDATA[I have a couple of devices at home that provide http servers on my local network.  I have them tucked nicely behind my firewall so that they are not accessible from the outside, but occasionally, I would like to login to them to perform some reconfiguration or the like.   This is where [...]]]></description>
			<content:encoded><![CDATA[<p>I have a couple of devices at home that provide http servers on my local network.  I have them tucked nicely behind my firewall so that they are not accessible from the outside, but occasionally, I would like to login to them to perform some reconfiguration or the like.   This is where ssh comes to the rescue: you can use it to create a secure tunnel, a port that I can connect to on my local machine that gets routed to my remote machine through my firewall.</p>
<p>The problem is, I can never remember the command, and it takes me a few minutes of thought to reconstruct it.   So, I thought I&#8217;d write it down here so I&#8217;d remember.</p>
<p>The basic command is:</p>
<pre>
ssh -f mylogin@myserver.com -L 20000:192.168.1.132:80 -N
</pre>
<p>When I enter <code>http://localhost:20000</code> on my machine, it&#8217;s as if I was accessing the web page on 192.168.1.132 on my local network.   Very useful.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=cvzpZlbSWpc:_bHaWhGYJSM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=cvzpZlbSWpc:_bHaWhGYJSM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=cvzpZlbSWpc:_bHaWhGYJSM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=cvzpZlbSWpc:_bHaWhGYJSM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/cvzpZlbSWpc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/16/reminder-howto-tunnel-http-using-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/16/reminder-howto-tunnel-http-using-ssh/</feedburner:origLink></item>
		<item>
		<title>Crazy Optimization of Chaocipher…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/JSFePpEAqhs/</link>
		<comments>http://brainwagon.org/2010/07/15/crazy-optimization-of-chaocipher/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 20:51:03 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6002</guid>
		<description><![CDATA[Okay, this is a minor hack, but I thought it was fun, so I thought I&#8217;d write it up here.   
My original code for simulating the Chaocipher machine proceeded as follows: it found the character in the plaintext wheel (by linear search), then rotated each wheel to get the plain and cipher text [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, this is a minor hack, but I thought it was fun, so I thought I&#8217;d write it up here.   </p>
<p>My original code for simulating the Chaocipher machine proceeded as follows: it found the character in the plaintext wheel (by linear search), then rotated each wheel to get the plain and cipher text entry to the zenith minus one and zenith positions respectively, then did the short cycle rotates.   It used a temporary array to perform the first rotate, and then used memcpy to copy the results back.   The short rotates were done in position.   Hey, it was easy to write, but kind of ugly.   In particular, it did twice as many read/write operations as necessary, and I hypothesized that it was a bottleneck.  </p>
<p>So, I wrote a little code generator that instead generated &#8220;compiled&#8221; code for each of the 26 possible paths through the encoding code.   Each entry in the cipher and plaintext wheels is read and written only once, and I use only an additional char of storage to hold temp values.   Here&#8217;s the fragment of the code that executes if the cipher text is found in position number zero:</p>
<pre style="line-height: 10px; font-size: 9px;">
	case 0:
		tmp = m->cw[1];
		m->cw[1] = m->cw[2];
		m->cw[2] = m->cw[3];
		m->cw[3] = m->cw[4];
		m->cw[4] = m->cw[5];
		m->cw[5] = m->cw[6];
		m->cw[6] = m->cw[7];
		m->cw[7] = m->cw[8];
		m->cw[8] = m->cw[9];
		m->cw[9] = m->cw[10];
		m->cw[10] = m->cw[11];
		m->cw[11] = m->cw[12];
		m->cw[12] = m->cw[13];
		m->cw[13] = tmp;
		tmp = m->pw[0];
		m->pw[0] = m->pw[1];
		m->pw[1] = m->pw[2];
		m->pw[2] = m->pw[4];
		m->pw[4] = m->pw[6];
		m->pw[6] = m->pw[8];
		m->pw[8] = m->pw[10];
		m->pw[10] = m->pw[12];
		m->pw[12] = m->pw[14];
		m->pw[14] = m->pw[15];
		m->pw[15] = m->pw[16];
		m->pw[16] = m->pw[17];
		m->pw[17] = m->pw[18];
		m->pw[18] = m->pw[19];
		m->pw[19] = m->pw[20];
		m->pw[20] = m->pw[21];
		m->pw[21] = m->pw[22];
		m->pw[22] = m->pw[23];
		m->pw[23] = m->pw[24];
		m->pw[24] = m->pw[25];
		m->pw[25] = tmp;
		tmp = m->pw[3];
		m->pw[3] = m->pw[5];
		m->pw[5] = m->pw[7];
		m->pw[7] = m->pw[9];
		m->pw[9] = m->pw[11];
		m->pw[11] = m->pw[13];
		m->pw[13] = tmp;
		break;
</pre>
<p>You should notice that the cipher wheel doesn&#8217;t bother to move element zero at all (it doesn&#8217;t move if the plaintext letter is found at index 0).   It also doesn&#8217;t touch the upper half of the cipher wheel, since those letters are left in place by this particular path.  It then uses each element as the source and destination precisely once.   Since there are two cycles, uses the temporary variable twice.   </p>
<p>The resulting code is about 1450 lines long, but the resulting program runs almost 2.5x faster overall, searching about 10.8M nodes per second in my backtracking search.   Worth the 20 minutes or so it took me to write the code generator.</p>
<p><b>Addendum:</b> In theory at least, you could safely issue reads and writes which occur in different cycles in parallel, since you know they don&#8217;t target the same addresses.   But I don&#8217;t know how to hint to the C compiler to perform that optimization.   I also suspect that SSE instructions might allow you to load and swizzle faster.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=JSFePpEAqhs:bG9RIqvBV38:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=JSFePpEAqhs:bG9RIqvBV38:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=JSFePpEAqhs:bG9RIqvBV38:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=JSFePpEAqhs:bG9RIqvBV38:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/JSFePpEAqhs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/15/crazy-optimization-of-chaocipher/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/15/crazy-optimization-of-chaocipher/</feedburner:origLink></item>
		<item>
		<title>Furor over the iPhone 4 antenna…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/w63WTN-e0f0/</link>
		<comments>http://brainwagon.org/2010/07/14/furor-over-the-iphone-4-antenna/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 14:56:03 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Rants and Raves]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=6000</guid>
		<description><![CDATA[Honestly folks, I don&#8217;t get it.   
A lot of people think that a recall of iPhones will be inevitable now, because (to their way of thinking) Apple shipped a phone with a known defect.     
I&#8217;m wondering what phones they&#8217;ve been buying up until now: these defect-free phones from those [...]]]></description>
			<content:encoded><![CDATA[<p>Honestly folks, I don&#8217;t get it.   </p>
<p>A lot of people think that a recall of iPhones will be inevitable now, because (to their way of thinking) Apple shipped a phone with a known defect.     </p>
<p>I&#8217;m wondering what phones they&#8217;ve been buying up until now: these defect-free phones from those manufacturers who are so careful that they only release absolutely rock solid equipment to the consumers.    If you were satisfied with your previous phone and its freedom from defects, then why did you bother switching to the iPhone at all?</p>
<p>&#8220;My god, it could drop calls!&#8221;   <em>It&#8217;s a cell phone.</em>  We&#8217;ve accepted crappy performance from them for years, sometimes caused by cell phone deficiencies, sometimes caused by network deficiencies, and yet we continue to pay our bills.   </p>
<p>&#8220;I&#8217;m annoyed that I have to buy a case for my iPhone.&#8221;    I bought one for my first iPhone, because it was so slippery I kept juggling it out of my pockets.   I delayed getting one for my second iPhone, with the net result that I put a scratch in the front bezel two weeks in.  I didn&#8217;t call that a &#8220;design flaw&#8221; and ask for a recall: I bought a case.   Get over it.</p>
<p>I&#8217;m not really that much of an Apple fan boy, I just think that the Apple iPhone remains significantly (at least for me) than anything else on the market when taken as a whole.   If you like your EVO better, then fine, I won&#8217;t whine when it drops your call after using it for just five hours and its battery runs out.   I also won&#8217;t file a class action lawsuit about it.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=w63WTN-e0f0:KfSYCBXW57k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=w63WTN-e0f0:KfSYCBXW57k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=w63WTN-e0f0:KfSYCBXW57k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=w63WTN-e0f0:KfSYCBXW57k:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/w63WTN-e0f0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/14/furor-over-the-iphone-4-antenna/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/14/furor-over-the-iphone-4-antenna/</feedburner:origLink></item>
		<item>
		<title>Typos in Exhibit 1?</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/hZxQooMT-UU/</link>
		<comments>http://brainwagon.org/2010/07/12/typos-in-exhibit-1/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 13:55:54 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5995</guid>
		<description><![CDATA[WARNING: if you are working on this code, this article contains spoilers which may blunt your own intellectual satisfaction in working on it yourself, including some recovered keys.  
Okay, I&#8217;m home, and feeling pretty jet-lagged, so this might be wrong in some way that additional sleep will reveal, but I wanted to get this [...]]]></description>
			<content:encoded><![CDATA[<p>WARNING: if you are working on this code, this article contains spoilers which may blunt your own intellectual satisfaction in working on it yourself, including some recovered keys.  </p>
<p>Okay, I&#8217;m home, and feeling pretty jet-lagged, so this might be wrong in some way that additional sleep will reveal, but I wanted to get this out of my head before work today.</p>
<p>First of all, I downloaded Exhibit 1&#8217;s plaintext  from <a href="http://www.mountainvistasoft.com/chaocipher/Chaocipher-ASCII-versions.htm">this page</a>, specifically <a href="http://www.mountainvistasoft.com/chaocipher/chaocipher-exhibit-1.pt.txt">this link for the plaintext</a> and <a href="http://www.mountainvistasoft.com/chaocipher/chaocipher-exhibit-1.ct.txt">this link for the ciphertext</a>.    These files contain no spaces or carriage returns, so are relatively unfriendly for human consumption, so the first thing I did was to reformat them into 11 groups of 5 characters per line to match the format that Exhibit 1 is presented in the scanned chapter of Silent Years.</p>
<p>Then, I set my constraint solver working.   It loads both the cipher and plaintext, and does an exhaustive search to find the consistent wheel settings that consumes the most input.    It then dumps the settings as a command line that should decode the ciphertext, or at least as much of it as it has discovered.</p>
<p>The first 100 lines of Exhibit 1 consist of 100 copies of the 55 character sentence:</p>
<pre>
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
</pre>
<p>So, the first 100 lines of the decryption of the cipher text should be just 99 copies.   But my cipher program pointed at a problem after 603 characters.  Here are </p>
<pre>
./chaocipher -d -c 'CPEDQRSTIXYLMOZABFVGUHWJKN' -p 'AYZNBQDSEFGHLWIKCMOPRTUVJX'
</pre>
<p>When I run this on the original text, I get the following (numbered for convenience):</p>
<table>
<tr>
<td>
<pre>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
</pre>
</td>
<td>
<pre>
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTYW
ALLGO ODQQU ICKBR OWNFO XESJU MPOVE RLAZY DOGTO SAVET HEIRP ARTGW
ADLGO OSLLI VFCRB YMHAW QGNMS NDNCK GZYPM LAYNZ LFNDO WGBJU IXZLD
TNOJM TUSZG IKMLC WNCKK OUICA YKSJJ SSKFR GLLPU XAOXS BXAPQ ECJSU
SFLFT ZLNQS SWNZN TKSDG JUUQC GQCDD WPDIN FZODL MJEXV WIFFW TEFPS
ZKUAT XVTKL FZLHM VICVD PMEZP YCULX VAXNE AYRSL BBMIT UJGII TSPIQ
UMUMC FWFPO SYYAW EYCKY ZQUVJ BOIIU FBHXT QFHKS EMWDB TSNJY GNIKJ
QHJRR DCGCX MINUQ ZGITG HTINW UZWFX HJEWM QDCXN BXKGY QDDNG IAXNY
RCRAM KCOAI VLKLF SNVGW SQYOA OYUUW YOQAC SUDFF KYXPJ GTBPS ZTONZ
CZPDM MOORN EVZZV AHBUP VOCUJ AHCGZ SLVUY ILIDG YAOOX TYDDA LJDLO
ULRNQ ASEZW BXPSV LEMYZ THMVA BHCII YVHIU JQBAU RGZEI ARUIL NZEDY
BJIOG TRFMH HDJFR ROBKH SMUHY PBYUQ MNNRW YBPRZ KCUQK LGNAI EXRAX
KDJVP JHMRN IFINI ZYGSZ ITDWZ NKGQV QUXVJ YZUIJ FQECB RWSDK QZUHM
XZBFK XGICH IMHHR NKSMF VXTCG IQOJK TCCJO BWQJC ATUBZ ILHRE ULVHQ
WUMDQ SERWK AYNOW PGKZF CWMOG SOLYO YVUSW AIEIO FPJDS SCMEC LTWBA
KNGQE KZFCC RKKXL ZXNTH UQXQD DGJPU EZEVE IPVZC XNRZV OGGVV JBCYP
WMJQG BYMKX NNGAA YDGRA XKVAV LVLFK WIQDE DBZHF YSVEN WOGJK USZPZ
QPEKM UHTDT HTOJU FQIMZ KHPWT AJGDE CEUKS RSLNU GIUAM XUWLN CSJVC
NXOBT AVQTY HLBUL VYYBX CLFEV LKVVE JGYAP SDSIS RZPJQ ISDKS JNEDW
HMSMF DXVZY LVVJF USVXN ZGKFQ NYMZO QQGQJ SCUVS LJRAL NOYIY HRWVD
JMEFF ZRNCU PRUFT NFETI WESRY NOVKQ UVCKY QNWQU OQMHA MATEE QBRWE
YBSQR HLMRH OCLOP PWIOE AGTHF KTMLE TYILX UZSNX JWHIG LJXRB KUCNW
RZMFC OBKBL FGEVF THGHE MYHMA LLWBV SMUDF XGHPM IWDVC ODXYR LGLTU
SGPKX WQBIR IPVJV LNNWR LYSQK OQPOD BBZQL WSSJB IUHVU IXTVW RAUJJ
BLGMT CIVOQ KQXXZ FCXQN GWCWI SQWMY OCZBY PHCEH ULDTT FETNI ESUVQ
CUWCL LSQVL BRYZW BRGIC QFHDU MUJQQ SXCVK SPYRM BYFFI NQZPZ PURFS
RWNWH WOKUZ GSNPM LJQDB XOZEG YTYHH PAGFR NQILO QCTNP RNFMY PHSEH
MXUDW AUDMB MLZBW SIGDP EOAVG BXWWH EREWH DBPSC WFAFS AHATC HAYAL
UVYMP KGPMD NBIWC NQTXT FYVYW KNKQU VJZIH WZCLF HTTBY SRRWW APVAQ
PCZYV PTMLJ BYQRQ IHIHZ ZXIWX CEOVG FYZUN PQFTW NNHYX CQKUN GWVNF
NYGDI ZKOUR VTQYI MNFVX JHJYN TWOKP DMOYF RJOED GLGKL JZYVE EKLZU
JEMXF VWVYZ ROISI CQKRZ XUFWX RFWVS VPPLH MUEOF YUBPW BBOUG BAUMD
GIWET YNTKV DSESI ZLWSL VKHIZ NZKCO JTRGH SWVVZ RUNDD LHEFP XTLHD
LFEFB UHDDH ZORCZ NLKQZ QJZQB ZBQFT CDMOS UGHCE YYUSY EPCID PMZYY
ZHWWL TZNLX HEEMQ JCEYS EAOWO JXBGK BHCAT QTHAB CPXXT BMSLW BBLQR
CSHCH MHURA WOQRG LWMLT WGFDG AOEJF GSFXR DMRHR FCBPY JLFGP UXQHW
NPUQP BKMIC EQZDM YIMXU FWASM CXJAR PSVEK ZMIZV PQNRP YGBLK IXJFF
ASHHB BWRDJ ZXFSG STINW TGJHY TQSRQ ENFIX JMSZZ FYKKC IEOIR ERJYK
JLPCU NXTAP XTCBL HIGZT SEPTW SBMFE WLKZX WIZDG RBAEJ LIIRW UFRKI
NLJTR UTFWF KFSVJ KZQEC VCYNI RIBQM BJHEG FZYAT UQOAS UCLBG GCYBD
PSTDV TKEBN IGUFH XTKTL INLVG KDPGG IEPJG BHASL CBWNS BOVYA GKCRZ
WUQXV JZMNG NANAD BMGFN QUZCM QAHQH VAXWK SRFCY OJGKC RIGHL HGTAH
WCFRZ MHXWK TWJPM YQWJH FNCPU BLBXD YXMSK BDDIY ZQABQ HZMEO WPNOE
RHFVE QHIBY FPDCW EXRZG GJNZO MLEYY WZJHH YVRRM LUHXI YJDDQ TJOOM
EVWYG IQUFD LPPMD QADBK CTBIJ HELST EOXZZ SUUWI XZHIS OXPVY FMNOP
WKOIF JHBOZ CITZQ VTGEM NOJGB KQMVG URNWU GFEBB IDWXB KQEOD FOPIV
XLNJA LPUKH NXQTI YBIEV YIJYT ZHSQW LISZT YPZHQ VOYTF CMRFM QAPSP
YZGZT SHGIW VFZDZ YMVEF YZYJI KHQMG WVQOG YACHG MELVP MNMOE PASDH
WIWLH KAEQX QBEWW IMPVC PZISZ SWZBR SETHW LXHQO DADLT UVUXC JSNKB
EDYMV KNXGM DLOOB KUUFA DRPHO GLBNA WXVCG YZKVY BQMKF NFWGR JPAHA
DGDIO OQCTC SQBKT JVHDE KFKQF KOKYW RPEBF HBKCK ZNQYH MZBWD VAHFF
QVIAZ QUWKA IEVXP KLDWJ ATRTB LYPWI AWPAO TYDOM YFQZR ZTMAS DMCOS
ALHRW QRSPC KIHJV JXSJB UQVOG EWQON BKNLO VPIGF TNGUP BVBTU WHGTJ
XZJAV NCACR UNPZW DQWOT SYOAS YPBQZ TVIYF VZKIW SFETG XUCYI QSBPY
IHYRV YSIII IUGHL FNUUH ARMJL BIAUT WNLOP ZXECP SEBYG SSUGS LNNJR
GMPDT ZQIIE RHKSO UEZBO XEAFB DYKRK ARYYX XQUJG DTWLB WJZCB LHVIQ
RKQAF VVKEW MSVDR ZVQAN JNCBA MJJRR EJKZK ZLILN KKXVR UTXIQ ZRQDG
OKHRZ KWVHH MOHNP JVXLB XVCVV YVYYO CKKZH VRXKQ PWAJY ZIKAS QVFET
CPJHD OOZBT JIULN OSVTG DJBPP ZMALD ZCUJW HNWTL AZNIV VFVQC NMAMC
DXUGM ZUHOX YDEYR NYNIA NRWQY UIRPD UTUZF JLUJL GYIOQ GYGZG DWDIM
GMGJT TPOOK DTBFJ YUAAN OPEGH TSMPT VDUOV ZRANZ MUFDB ECZQV NWCBV
NKLVO ELKJI LKOAI PPRHR AOXIA YNYEY DFSAN JCCTR GDLWE MLOLP SQRXF
NMWLV KXALI PHSHL CHQKI CQZNK VGHBZ YXPBS CQSUB JEUYH RHAXU TJIGJ
EEMUT RSLMQ OJVLO XHXZQ GGNZM CBCZS OAWTR TTZDK YJPIQ FUVMV FCHIC
KLIRL XNRHK QKLKD JZKGJ OTCUQ ISBBH QFQOL VHAWG HWTPB BYDBB PVJKE
HQDFQ OBHXD YLZVV UXHSJ RYNXU MQENC ZHKUN MIZZB NNHRS ZVETO PCQOR
THGUI LBPFB CDJHW ARUBH FEIYL KRTXP FQEKX TFGND WQPVO NTESV WYQFU
OZMVC BMSAF ARKMX LQCWD JEAOZ WVFKM SSQND FVZNH EWCRP TKBBY ZCYCB
OWGTB IIBQX EUSAH VYJVM YHFYQ JFZIS AIKBX YIROC DEAJY PZKXG NQCZI
CCVFP PEDOC DUIES JDHAC THZCD VVSAG AWLIG XATOG ODAPS HWPWL MAUPP
AYXHP QGPKT LBERJ UKYXL JQSJG UKVMM IVWFS CMXER OKYIS QPQUS LOVHM
QIVLW GVEDN SORUC AHVTJ UNEYH VOYEE TSTSW KNGVO PZVCK BNMNC ITPNN
BVAZI JHIKG ULJOY RYYTB MLJZR PUOUZ NZQZI GTOIL CMMXY EUUSQ MJUBT
SFAGH JOKBU ODASI ILJHS QYVVD ZRZOC KZEZW XFVFS OMYZA YRXGC ONOQO
DRUGY MDFVL PRAOH SKVRX YKHRB DJVLA HNDKQ JJWMO VAOND VXZHC WEEXK
ZQQLH AOWLO TNKXI LHEJX ZHTSQ DFFJJ DPAUH TFXDI ZOWUK BOLMY ASRGP
XXNDA DIOCT BJJLK PUOUM LBHFE JBUBS FFYTK PZWNA FUJMA NVKNF JNXRH
HMROR KPBRB AJPUE IBUAI CWEMA SMTED JOAMB KFLPH BPYFT EZQZX JKHIF
VQRTJ ECWYC BQYTO CREGC TPFRT LGSHD YSULB HUVCW YFNYB BRRGH FGWAR
SBZXO LSUYP FJCPC TEZSM ICAZJ ACVIA MXMHC QHHUH HWBFF YSDII FUPYN
NHEWK YWBWH BJBTY GWPYR HSVKH DYHLZ JWCXH SYCFS SYEMJ DVIAA XNQNH
SAVVH ZCHBS LXYEO PIWHC OLQKW CSQXH JLNGE IYGDN XYCZK LTGPR YXMDQ
BXWVC XAJLI SKXIH TJHRB BONEZ ZJDPU YETBL EOVZZ LYMSG XTAEX HAGHS
CVTNS LZSMY ZWFHL ARUVN JMGLB PNZGJ ZFNWT JDYDH HBUAI GKQMG FNXON
FXQRH NNYMB ILCXR SPNZJ KCIVK OMXZN XWVGA KVHSE RVGTM UBCSC PUABB
IOBXN DATDL LTJUZ LMEXE EAHNR PIIHZ WHHEM XMFSM JDRIQ JHPRS CBGRW
CIGED BTPIU HLCTQ KOMDD KBHCV ICRWI CJBSJ IWIVB WYOHK ECODH NBSZH
HUPNL FXJEX SZVMM TLYPQ WYQDJ IIRTN YNIHG UZJFS VQPST RSKNP WMHYT
SEEYI YCKNF NYGEI XLJGF HSFGM NDXEI UUGJF RVBWV CDLDE SFCNW LZXUB
AKWBI KATXO OALDE SHAHB RTXTI FMSEW WKDEB GBWMM RPBXO VRQIR MTQFH
VMPVA BMMTM MPBAI ZTKTS XAZJU NRHUK RCKMI ILHBK VVMSS VWLAE GWXAV
</pre>
</td>
</tr>
</table>
<p>You can see that in line 11, goes awry, and becomes desynchronized.    It could have been a bug in my program, but I also suspected the possibility of a typo.   So, I created my own version of the cipher text by taking 100 copies of the original line, using the key settings that I recovered, and creating my own version of the cipher text.</p>
<p>They match, except for three places.  Here are the context diffs:</p>
<pre>
*** original.1	2010-07-11 17:37:09.000000000 -0700
--- fixed.1	2010-07-12 07:02:11.000000000 -0700
***************
*** 8,14 ****
  BUZLA GDBCU AMFQL ACRWW TUGSM PPZBR FASRO YIRCA GVEYN SRTOQ TDLFJ
  RUTKF KASGV LVYYF VRAIY NIVJK IUWPF ZBVRU EOTEJ GLCGY SSNHH QTIQW
  UKQAS XKGSP WHRYM TQSOQ BAMAP FQRLI IUGTI VBEBY XFBIU SEYHM LKGOE
! CSWUH TBIZZ HLBND IWTQA MAZBM YMBEK CYKCA BLYQY MELPJ OWNRV FZVBR
  EBVUJ EQIAE MOHTG FHFFI DIQQJ UAWDH LUYRE UGSKT IMDWR RNONJ KDPTC
  JDCJN BVEOU TWXOF GRXND KITNL OXSLZ WQRDE RERHL XWAMY LRVPR JFHRA
  SDJWW OIWEV AVMRR NLRJM IFDHH ADDQC BZWYK DVPAY NPIAX BYUKI JGVUC
--- 8,14 ----
  BUZLA GDBCU AMFQL ACRWW TUGSM PPZBR FASRO YIRCA GVEYN SRTOQ TDLFJ
  RUTKF KASGV LVYYF VRAIY NIVJK IUWPF ZBVRU EOTEJ GLCGY SSNHH QTIQW
  UKQAS XKGSP WHRYM TQSOQ BAMAP FQRLI IUGTI VBEBY XFBIU SEYHM LKGOE
! CSWUH TBIZZ HLBND IWTQA MAZBM YMBEK CYKCA BLYQY MELPJ OWNRV FZVKR
  EBVUJ EQIAE MOHTG FHFFI DIQQJ UAWDH LUYRE UGSKT IMDWR RNONJ KDPTC
  JDCJN BVEOU TWXOF GRXND KITNL OXSLZ WQRDE RERHL XWAMY LRVPR JFHRA
  SDJWW OIWEV AVMRR NLRJM IFDHH ADDQC BZWYK DVPAY NPIAX BYUKI JGVUC
***************
*** 47,53 ****
  AEXFA UPOKM SBMNZ YUHEM ZLBQM ROIUH KECCE IXDAR VFAEV WDHPS GYTTA
  ZRNTO WRSTD YOKCW NQUIS WEFIF LFFZQ BSDCS CBNRQ SZLXB BRICQ CLSCB
  INRYO RGNZE GCYAW PMCQL CGBMX BBUBO NQOZZ OFNQR YMZWA CDMGX NAIRA
! ABKCI OWTGT OTOOK MFRPG XADLN AAJSU BMTIQ VHOUZ TBCZA LEOPO YVEWO
  USDUN TZTJT YXUIG OZQFS VDDSR JWUFH FGIZS ORJTB IVSKB BHMPQ NXMWK
  AGSNT KJWOX HALOV WEXTS VKIYF ADOMO NPZCZ FZROC BIRWP UNTAX WXSER
  PGPPU RINGD CGFDG ZALDT NXPUQ EPQSU ZVKDO TXTBN MUQAS ZKIGH WQRQI
--- 47,53 ----
  AEXFA UPOKM SBMNZ YUHEM ZLBQM ROIUH KECCE IXDAR VFAEV WDHPS GYTTA
  ZRNTO WRSTD YOKCW NQUIS WEFIF LFFZQ BSDCS CBNRQ SZLXB BRICQ CLSCB
  INRYO RGNZE GCYAW PMCQL CGBMX BBUBO NQOZZ OFNQR YMZWA CDMGX NAIRA
! ABKCI OWTGT CTOOK MFRPG XADLN AAJSU BMTIQ VHOUZ TBCZA LEOPO YVEWO
  USDUN TZTJT YXUIG OZQFS VDDSR JWUFH FGIZS ORJTB IVSKB BHMPQ NXMWK
  AGSNT KJWOX HALOV WEXTS VKIYF ADOMO NPZCZ FZROC BIRWP UNTAX WXSER
  PGPPU RINGD CGFDG ZALDT NXPUQ EPQSU ZVKDO TXTBN MUQAS ZKIGH WQRQI
***************
*** 84,90 ****
  FCNLQ NWAOG NTOIV JZRVS IACOO KEYIN OZBNP KEGHF JFASY SDIFB NXNXF
  JPSAM RVBQG XNIZB MVGVU VNFMU FJXEL BZLTP IFIWB LBXPB QDXAW FRHBF
  QPDCM OXOSU MMERK QNMYF YKDOC BOXIY SPLGV PBLNG NKTAK YNGBX MIPOM
! RIDCL TCIBZ HFLDV RXBKP LRKMU CQHEY RAAVH XAYDH NNNUN JCINA RAEXP
  UAQRP RUDMO OHOOM EMGUP IEEIX AQTLU PETXI BQEPN IWBRE BNSEQ RDUGG
  TGWUR QRJRL XGRDP MJPDX TSDBG YYQDR DQYSZ GLXDR IDLYX FIVSQ WZVQG
  QRXLN LBLGT EGHVN ZXRFN HFQOW XIXBE ULILO MRXQO GJXRC JOUZH OTJAK
--- 84,90 ----
  FCNLQ NWAOG NTOIV JZRVS IACOO KEYIN OZBNP KEGHF JFASY SDIFB NXNXF
  JPSAM RVBQG XNIZB MVGVU VNFMU FJXEL BZLTP IFIWB LBXPB QDXAW FRHBF
  QPDCM OXOSU MMERK QNMYF YKDOC BOXIY SPLGV PBLNG NKTAK YNGBX MIPOM
! RIDCL TCIBZ HFLDV RXBKF LRKMU CQHEY RAAVH XAYDH NNNUN JCINA RAEXP
  UAQRP RUDMO OHOOM EMGUP IEEIX AQTLU PETXI BQEPN IWBRE BNSEQ RDUGG
  TGWUR QRJRL XGRDP MJPDX TSDBG YYQDR DQYSZ GLXDR IDLYX FIVSQ WZVQG
  QRXLN LBLGT EGHVN ZXRFN HFQOW XIXBE ULILO MRXQO GJXRC JOUZH OTJAK
</pre>
<p>The first is clearly a transcription error: if you look at the original, the last five characters should be FZVKR.   The next is seemingly a printers error, it does appear to say OTOOK instead of CTOOK.    And frankly, I don&#8217;t remember what I found out about the last one.   </p>
<p>If you fix these three typos, the first 117 lines of Exhibit 1 decode properly, then go astray again.  I haven&#8217;t worked on figuring out what the next typo is.</p>
<p>Eventually we should make a verified copy of the Exhibit 1 plain and cipher texts available, so that others won&#8217;t need to toil through this.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=hZxQooMT-UU:2GDngtzTgPI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=hZxQooMT-UU:2GDngtzTgPI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=hZxQooMT-UU:2GDngtzTgPI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=hZxQooMT-UU:2GDngtzTgPI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/hZxQooMT-UU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/12/typos-in-exhibit-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/12/typos-in-exhibit-1/</feedburner:origLink></item>
		<item>
		<title>Progress on Exhibit 1</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/ABdQy0K0Kp4/</link>
		<comments>http://brainwagon.org/2010/07/10/progress-on-exhibit-1/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 18:11:10 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5990</guid>
		<description><![CDATA[Okay, I think I&#8217;ve figured out the problem with my code that back propagates cipher wheels to the beginning of the code, and ran it on Exhibit 1 again.   It actually matches 603 characters of input, then stalls, after searching 1.8 billion cipher encoding possibilities.     I am now trying [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, I think I&#8217;ve figured out the problem with my code that back propagates cipher wheels to the beginning of the code, and ran it on Exhibit 1 again.   It actually matches 603 characters of input, then stalls, after searching 1.8 billion cipher encoding possibilities.     I am now trying to figure out if it is a typo in the original, or some slim bug that causes it to go awry.</p>
<p>Because others might be pursuing their own solution of this issue, I&#8217;ll hold off on publishing the key that I&#8217;ve recovered for a bit longer.   If anyone needs it, let me know, and I&#8217;ll send you the spoiler.</p>
<p>Addendum: There is a typo in the version of the cipher text that I downloaded from the Chaoscipher clearing house.   I&#8217;ll write up more when I&#8217;ve learned more.   </p>
<p>Addendum<sup>2</sup>: More than one transcription error.   More later.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=ABdQy0K0Kp4:pnUARDoY9JM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=ABdQy0K0Kp4:pnUARDoY9JM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=ABdQy0K0Kp4:pnUARDoY9JM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=ABdQy0K0Kp4:pnUARDoY9JM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/ABdQy0K0Kp4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/10/progress-on-exhibit-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/10/progress-on-exhibit-1/</feedburner:origLink></item>
		<item>
		<title>More on Chaocipher…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/oi09H1Djqsk/</link>
		<comments>http://brainwagon.org/2010/07/09/more-on-chaocipher/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:29:03 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5988</guid>
		<description><![CDATA[Well, I didn&#8217;t have much time left to work on Chaocipher last night, so I left it running on Exhibit 1.   It claimed to recover a key that allowed it to match 601 characters of input, but found no better match.  But it also uncovered an error in my code.  It [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I didn&#8217;t have much time left to work on Chaocipher last night, so I left it running on Exhibit 1.   It claimed to recover a key that allowed it to match 601 characters of input, but found no better match.  But it also uncovered an error in my code.  It doesn&#8217;t appear that the code that I wrote to rewind the machine to find the initial settings are quite right.   For instance, if I use the cipher wheel and plain wheel both set to ABCDEFGHIJKLMNOPQRSTUVWXYZ, and then encode a test message (like the first paragraph of Moshe&#8217;s announcement of the publication of the algorithm of the Chaocipher) then I get the following cipher text:</p>
<pre>
NHLBP ULNFR XRNDL IZRDO IWZSY HQCUQ XFSDE QGMPG RFUIR FQETN
ZTTXI YQJJN FHFYN WWQTO SXEKX DKCXP OKOAH FPCKI XQFYF UQVMA
JFKSN LGOTY KTNQJ ZNFXV ULYNO YRZQY ORVJV RUWUH HMAZA LVSIS
IGLJB QAZPK NJZXO YZHPK EMBCS XGKGY YTUET VSJWK WPXKC OCYRH
CNGVU RUPYZ AAFQE
</pre>
<p>which decodes to:</p>
<pre>
NINET YTWOY EARSA FTERI TSINV ENTIO NFIFT YSEVE NYEAR SAFTE
RCHAL LENGE MESSA GESWE REPUB LISHE DANDA FTERM ANYCR YPTAN
ALYTI CRESE ARCHE RSUNS UCCES SFULL YTRIE DTOSO LVETH ESECH
ALLEN GEMES SAGES JOHNF BYRNE SCHAO CIPHE RALGO RITHM CANFI
NALLY BEREV EALED
</pre>
<p>When I run my solver though, it recovers:</p>
<pre>
found a solution that exhausted the input.
NPQRSTUVWXYZAOBCDEFGHIJKLM OPRSTUVW?Y?AB?CDEFGHIJ?LMN
</pre>
<p>Which is close, but no cigar.  I&#8217;m not awake enough to spot my mistake yet, and it seems unlikely that I&#8217;ll get a chance to fix my error for the next few days, but I&#8217;ll try to get an hour to track down my mistake.   I do think I&#8217;m 90% of the way there to recovering the key for Exhibit 1.  I&#8217;m pretty confident that the solver gets the right answer, but that it is rewinding very slightly incorrectly.</p>
<p>Addendum:  Ah, it appears I&#8217;m not quite rewinding the very last character properly.   The key that I recovered is actually good for decoding, as long as you start from the <em>second</em> character.   I&#8217;ve written this in an overly clever way.   If I use my recovered key from Exhibit 1, but start at the second letter, I get something pretty reasonable:</p>
<pre>
LLGOO DQQUI CKBRO WNFOX ESJUM POVER LAZYD OGTOS AVETH EIRPA
RTYWA LLGOO DQQUI CKBRO WNFOX ESJUM POVER LAZYD OGTOS AVETH
EIRPA RTYWA LLGOO DQQUI CKBRO WNFOX ESJUM POVER LAZYD OGTOS
AVETH EIRPA RTYWA LLGOO DQQUI CKBRO WNFOX ESJUM POVER LAZYD
OGTOS AVETH EIRPA RTYWA LLGOO DQQUI CKBRO WNFOX ESJUM POVER
LAZYD OGTOS AVETH EIRPA RTYWA LLGOO DQQUI CKBRO WNFOX ESJUM
POVER LAZYD OGTOS AVETH EIRPA RTYWA LLGOO DQQUI CKBRO WNFOX
ESJUM POVER LAZYD OGTOS AVETH EIRPA RTYWA LLGOO DQQUI CKBRO
WNFOX ESJUM POVER LAZYD OGTOS AVETH EIRPA RTYWA LLGOO DQQUI
CKBRO WNFOX ESJUM POVER LAZYD OGTOS AVETH EIRPA RTYWA LLGOO
DQQUI CKBRO WNFOX ESJUM POVER LAZYD OGTOS AVETH EIRPA RTYWA
LLGOO DQQUI CKBRO WNFOX ESJUM POVER LAZYD OGTOS AVETH EIRPA
RTGWA DLGOO SLLIV FCRBY MHAWQ GNMSN DNCKG ZYPML AYNZL FNDOW
GBJUI XZLDT NOJMT USZGI KMLCW NCKKO UICAY KSJJS SKFRG LLPUX
AOXSB XAPQE CJSUS FLFTZ LNQSS WNZNT KSDGJ UUQCG QCDDW PDINF
ZODLM JEXVW IFFWT EFPSZ KUATX VTKLF ZLHMV ICVDP MEZPY CULXV
AXNEA YRSLB BMITU JGIIT SPIQU MUMCF WFPOS YYAWE YCKYZ QUVJB
OIIUF BHXTQ FHKSE MWDBT SNJYG NIKJQ HJRRD CGCXM INUQZ GITGH
TINWU ZWFXH JEWMQ DCXNB XKGYQ DDNGI AXNYR CRAMK COAIV LKLFS
NVGWS QYOAO YUUWY OQACS UDFFK YXPJG TBPSZ TONZC ZPDMM OORNE
VZZVA HBUPV OCUJA HCGZS LVUYI LIDGY AOOXT YDDAL JDLOU LRNQA
SEZWB XPSVL EMYZT HMVAB HCIIY VHIUJ QBAUR GZEIA RUILN ZEDYB
</pre>
<p>But that predictably goes astray after (presumably) 601 characters.  Not sure if the remaining issue is mine or not.</p>
<p>Oh well, enough for today.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=oi09H1Djqsk:gDpMxbx1MAI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=oi09H1Djqsk:gDpMxbx1MAI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=oi09H1Djqsk:gDpMxbx1MAI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=oi09H1Djqsk:gDpMxbx1MAI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/oi09H1Djqsk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/09/more-on-chaocipher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/09/more-on-chaocipher/</feedburner:origLink></item>
		<item>
		<title>Progress on the Chaocipher…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/EZb95gBXUX4/</link>
		<comments>http://brainwagon.org/2010/07/08/progress-on-the-chaocipher/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 13:50:57 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5984</guid>
		<description><![CDATA[My brain has got a bug now.  It&#8217;s called Chaocipher.   
Despite the fact that I&#8217;m spending my days off with my family, I find that in my odd moments my brain keeps leaping back to Byrne&#8217;s cipher.   The other night I implemented the basics of key recovery using a chosen [...]]]></description>
			<content:encoded><![CDATA[<p>My brain has got a bug now.  It&#8217;s called Chaocipher.   </p>
<p>Despite the fact that I&#8217;m spending my days off with my family, I find that in my odd moments my brain keeps leaping back to Byrne&#8217;s cipher.   The other night I implemented the basics of key recovery using a chosen plaintext attack (if you have both plain and cipher text, recover the key).   It proceeds according to the following idea:  initialize a Chaocipher machine with all &#8216;?&#8217; in every entry.  Then, for every cipher/plaintext pair, check to see if the cipher or the plain text letter has already been placed in the wheel.  If it has, then they better be in the same slot in each of the respective wheels.   If they aren&#8217;t, then the placement is bad, and you need to backtrack.   If only one has been placed opposite a &#8216;?&#8217;, then you fill in the &#8216;?&#8217; and proceed to the next pair.   If neither has been placed, then you have to try all places where two &#8216;?&#8217; are opposite one another.   If you manage to exhaust the input, then you probably have the right wheel, so I then run the machine in reverse back to the beginning to recover the initial key settings.</p>
<p>I&#8217;ve had some success on this with some of my own test cases, but have not managed to crack Exhibit 1 or Exhibit 2 on the <a href="http://www.mountainvistasoft.com/chaocipher/">Chaocipher Clearing House</a> website.   I&#8217;m not sure if this is due to problems in my own implementation or a more general problem.    I haven&#8217;t worked on trying to generalize this into a cipher-text only cracking program, but I suspect that it&#8217;s possible.    The techniques that I remember from cracking the Enigma don&#8217;t really apply here, since the permutations are dependent on the plaintext.   I have a couple of ideas that I&#8217;ll be pondering during the three plus hours of driving that I am going to do today.</p>
<p>I left the solver working on Exhibit 2.  It&#8217;s searched about a billion keys in the five minutes or so I&#8217;ve had it running: we&#8217;ll see if it can solve the cipher by the time I get back tonight.</p>
<p>Addendum: it searched about 20 billion nodes, before returning a partial key that properly recovers the first 51 characters of the plaintext.    Not sure if there is a problem in my implementation or in the transcript of Exhibit 2.  I&#8217;ll think about it more over the next few days.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=EZb95gBXUX4:580Y3_UgEbA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=EZb95gBXUX4:580Y3_UgEbA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=EZb95gBXUX4:580Y3_UgEbA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=EZb95gBXUX4:580Y3_UgEbA:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/EZb95gBXUX4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/08/progress-on-the-chaocipher/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/08/progress-on-the-chaocipher/</feedburner:origLink></item>
		<item>
		<title>Visual Inspection of Chaocipher Output Implies Weakness</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/iMtcdOwjM6s/</link>
		<comments>http://brainwagon.org/2010/07/06/visual-inspection-of-chaocipher-output-implies-weakness/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 14:20:41 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5979</guid>
		<description><![CDATA[So, first thing this morning, before I had even had coffee or blinked the sleep from my eyes, I decided to try a chosen plaintext attack against Chaocipher.  I created a file consisting entirely of 2000 A&#8217;s, and passed it through Chaocipher.
Here is my output:

PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH [...]]]></description>
			<content:encoded><![CDATA[<p>So, first thing this morning, before I had even had coffee or blinked the sleep from my eyes, I decided to try a chosen plaintext attack against Chaocipher.  I created a file consisting entirely of 2000 A&#8217;s, and passed it through Chaocipher.<br />
Here is my output:</p>
<pre>
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM
AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM
AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM
AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM
AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM
AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE
PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV
ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK
LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS DMAVZ CUXHE PKLSD MAVZC
UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX HEPKL SDMAV ZCUXH EPKLS
DMAVZ CUXHE PKLSD MAVZC UXHEP KLSDM AVZCU XHEPK LSDMA VZCUX
</pre>
<p>If you stare at it a second, you see that it&#8217;s periodic with a very short period (<s>13</s> 14 (thanks Moshe, for pointing this out, I was doing this before coffee) characters).   That can&#8217;t be good, and is in fact much weaker than Enigma, whose periodicity is at least around 26^3 (a bit less, because of the odd way in which the rotors increment), <s>and even longer with the Stecker in place</s> that isn&#8217;t modified by the Stecker, which is entirely a static table (don&#8217;t know what I was thinking when I wrote that).  Enigma is sensitive (and was in fact routinely cracked using the Bombe) using cribs, which are merely short versions of the chosen plaintext attack.    I&#8217;ll ponder this some more.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=iMtcdOwjM6s:C8G3Y6Wje4E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=iMtcdOwjM6s:C8G3Y6Wje4E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=iMtcdOwjM6s:C8G3Y6Wje4E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=iMtcdOwjM6s:C8G3Y6Wje4E:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/iMtcdOwjM6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/06/visual-inspection-of-chaocipher-output-implies-weakness/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/06/visual-inspection-of-chaocipher-output-implies-weakness/</feedburner:origLink></item>
		<item>
		<title>An Implementation of Byrnes’ Chaocipher</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/E-Zs2CzDLjc/</link>
		<comments>http://brainwagon.org/2010/07/05/an-implementation-of-byrnes-chaocipher/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 06:32:33 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5976</guid>
		<description><![CDATA[Okay, insomnia got me, so I went ahead and implemented it in Python.  It appears to work reasonably well, at least it successfully deciphers their test message.  You can specify the key by specifying the -c and -p options, which are the settings for the cipher and plain wheels.  You should pass [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, insomnia got me, so I went ahead and implemented it in Python.  It appears to work reasonably well, at least it successfully deciphers their test message.  You can specify the key by specifying the -c and -p options, which are the settings for the cipher and plain wheels.  You should pass a permutation of the uppercase letters as arguments to those if you want to use other than the default key, which matches Rubin&#8217;s example.</p>
<pre>
#!/usr/bin/env python
#
#       _                      _       _
#   ___| |__   __ _  ___   ___(_)_ __ | |__   ___ _ __
#  / __| '_ \ / _` |/ _ \ / __| | '_ \| '_ \ / _ \ '__|
# | (__| | | | (_| | (_) | (__| | |_) | | | |  __/ |
#  \___|_| |_|\__,_|\___/ \___|_| .__/|_| |_|\___|_|
#                               |_|
# An implementation of John Byrnes' Chaocipher as described in papers
# by Moshe Rubin.
#
# Written by Mark VandeWettering &lt;mvandewettering@gmail.com&gt;
# No rights are reserved.  No warranties are implied.
#

import sys
import random
import string
import optparse

p = optparse.OptionParser()
p.add_option("-d", "--decrypt", action="store_true", dest="decrypt",
	default=False, help="decrypt instead of encrypt")
p.add_option("-p", "--pwheel", dest="pw",
	default="PTLNBQDEOYSFAVZKGJRIHWXUMC",
	help="plaintext wheel setting")
p.add_option("-c", "--cwheel", dest="cw",
	default="HXUCZVAMDSLKPEFJRIGTWOBNYQ",
	help="cipher wheel setting")

opts, args = p.parse_args()

# initialize the code machine...

cnt = 0 

def output(c):
    global cnt
    sys.stdout.write(c)
    cnt = cnt + 1
    if cnt % 50 == 0:
	sys.stdout.write('\n')
	cnt = 0
    elif cnt % 5 == 0:
	sys.stdout.write(' ')

class Machine:
    def __init__(self, cw, pw):
	self.cw = cw 		# cipher wheel
 	self.pw = pw 		# plaintext wheel
	pass
    def twizzle(self, idx):
	self.cw = self.cw[idx:] + self.cw[0:idx]
	self.cw = list(self.cw[0]) + \
		  self.cw[2:14] + \
		  list(self.cw[1]) + \
		  self.cw[14:]
	# and the plaintext wheel
	self.pw = self.pw[idx:] + self.pw[0:idx]
	self.pw = self.pw[1:] + list(self.pw[0])
	self.pw = self.pw[0:2] + \
		  self.pw[3:14] + \
		  list(self.pw[2]) + \
		  self.pw[14:]
    def encrypt(self, d):
	# find where it is in the plain text wheel...
        idx = self.pw.index(d)
	r = self.cw[idx]
	self.twizzle(idx)
	return r
    def decrypt(self, d):
	idx = self.cw.index(d)
	r = self.pw[idx]
	self.twizzle(idx)
	return r 

random.seed(0)
machine = Machine(list(opts.cw), list(opts.pw))

for arg in args:
    try:
	data = open(arg).read()
    except IOError, msg:
	print &gt;&gt; sys.stderr, "%s: %s" % (arg, msg)
	print &gt;&gt; sys.stderr, "continuing..."
    data = data.upper()
    # filter out all the non alpha characters...
    data = filter(lambda x : x in string.uppercase, data)
    if opts.decrypt:
	for d in data:
	    output(machine.decrypt(d))
    else:
	for d in data:
	    output(machine.encrypt(d))
    print
</pre>
<p><b>Addendum:</b> Here is some cipher text that you can decode with the above program (or your own implementation):</p>
<pre>
TLMAG OONSK JBJYB QVGDQ CDUNW NMZPL OYCWP CWKWQ RBOYA DSLQB
KYCDG XJOLO NKTTL RUZZJ QGJBQ NRQHQ RREUI YIDHZ OMVWZ MVYUF
QOGSN NUVYT JGQPS QTBRW FHLTC LVVBP MYYQV
</pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=E-Zs2CzDLjc:43nS8EtDx8o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=E-Zs2CzDLjc:43nS8EtDx8o:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=E-Zs2CzDLjc:43nS8EtDx8o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=E-Zs2CzDLjc:43nS8EtDx8o:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/E-Zs2CzDLjc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/05/an-implementation-of-byrnes-chaocipher/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/05/an-implementation-of-byrnes-chaocipher/</feedburner:origLink></item>
		<item>
		<title>The Chaocipher revealed! from Cipher Mysteries</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/YJ8LEe29ihA/</link>
		<comments>http://brainwagon.org/2010/07/05/the-chaocipher-revealed-from-cipher-mysteries/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 04:38:48 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Cryptography]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5972</guid>
		<description><![CDATA[Stumbling back through articles in Slashdot, I found a pretty nifty article on one of my favorite subjects: historical cryptography.   The story goes that back in 1918, a cipher system/machine was invented by John F. Byrne.  Rumor says that it was very strong, and yet could be implemented using a mechanism that [...]]]></description>
			<content:encoded><![CDATA[<p>Stumbling back through articles in Slashdot, I found a pretty nifty article on one of my favorite subjects: historical cryptography.   The story goes that back in 1918, a cipher system/machine was invented by John F. Byrne.  Rumor says that it was very strong, and yet could be implemented using a mechanism that would fit in a cigar box.   The details of this invention were never publicly released.   However, recently the widow of Bryne&#8217;s son, John Byrnes Jr., has decided to donate his notes to the National Cryptological Museum, and the first publications are beginning to trickle out.  Moshe Rubin has a new paper that details the working of the algorithm in sufficient detail that it should be possible to write an implementation in whatever language you like for experimentation.  It&#8217;s too late for me to start today, but expect a Python reference implementation in the next few days:</p>
<p><a href="http://www.ciphermysteries.com/2010/07/03/the-chaocipher-revealed">The Chaocipher revealed! | Cipher Mysteries</a>.</p>
<p>A cursory glance over the implementation suggests that the key space is basically 26! * 26! or about:</p>
<pre>
162,644,002,617,632,464,507,038,883,409,628,607,021,056,000,000,000,000
</pre>
<p>By comparison, the German Army Enigma (three rotors) <a href="http://www.cromwell-intl.com/security/history/enigma.html">had a keyspace of only 562,064,881,159,999,426,560</a>, and the Navy Enigma a keyspace which was only 1000x larger.   So if all things were equal, we might expect that the Chaocipher was a lot harder to crack.   But all things are probably not equal.  I&#8217;ll be pondering this over the next few days.  </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=YJ8LEe29ihA:pdwG8tAMqWI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=YJ8LEe29ihA:pdwG8tAMqWI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=YJ8LEe29ihA:pdwG8tAMqWI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=YJ8LEe29ihA:pdwG8tAMqWI:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/YJ8LEe29ihA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/05/the-chaocipher-revealed-from-cipher-mysteries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/05/the-chaocipher-revealed-from-cipher-mysteries/</feedburner:origLink></item>
		<item>
		<title>Ed Felton on How Not to Fix Soccer</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/XLgGAorG1Xo/</link>
		<comments>http://brainwagon.org/2010/07/04/ed-felton-on-how-not-to-fix-soccer/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 03:01:38 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Amateur Radio]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5970</guid>
		<description><![CDATA[I&#8217;m not much of a soccer fan, or even a football or basketball fan anymore.   If I am passionate about any sport, it would have to be baseball.  But Ed Felton has a rather nice essay about not just why soccer is the way it is, but why any tweaking of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not much of a soccer fan, or even a football or basketball fan anymore.   If I am passionate about any sport, it would have to be baseball.  But Ed Felton has a rather nice essay about not just why soccer is the way it is, but why any tweaking of the rules to more suit American audiences isn&#8217;t a very good idea.   I think to a certain degree, the arguments also apply toward baseball.  It&#8217;s worth noting that both soccer and baseball predate any kind of cheaply available timekeeping technology.  This has probably a lot to do with why the rules are the way they are, and why soccer in particular might be enjoyed in far flung parts of the developing world.   </p>
<p><a href="http://www.freedom-to-tinker.com/blog/felten/how-not-fix-soccer">How Not to Fix Soccer | Freedom to Tinker</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=XLgGAorG1Xo:-SmfdTrRXGM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=XLgGAorG1Xo:-SmfdTrRXGM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=XLgGAorG1Xo:-SmfdTrRXGM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=XLgGAorG1Xo:-SmfdTrRXGM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/XLgGAorG1Xo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/07/04/ed-felton-on-how-not-to-fix-soccer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/07/04/ed-felton-on-how-not-to-fix-soccer/</feedburner:origLink></item>
		<item>
		<title>Revisiting TinyP2P</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/FX9_5N65FfQ/</link>
		<comments>http://brainwagon.org/2010/06/29/revisiting-tinyp2p/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 16:50:23 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Programming]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5967</guid>
		<description><![CDATA[As I was driving in this morning, I entertained a train of thought that led me back to thinking about peer to peer networks.  I recalled that I had seen a posting by Ed Felton some years ago about implementing a peer-to-peer networking scheme in a very few lines of Python.   A [...]]]></description>
			<content:encoded><![CDATA[<p>As I was driving in this morning, I entertained a train of thought that led me back to thinking about peer to peer networks.  I recalled that I had seen a posting by Ed Felton some years ago about implementing a peer-to-peer networking scheme in a very few lines of Python.   A few minutes of searching once I reached my desk reminded me that the name of this was TinyPTP, and that it was 15 lines of dense Python.   A search of Ed&#8217;s Freedom To Tinker Website revealed nothing but dead links, but a few minutes with the Internet Wayback Machine resurrected it for our consumption:</p>
<p><a href="http://web.archive.org/web/20070927205613/http://www.freedom-to-tinker.com/tinyp2p.html">TinyP2P</a></p>
<p>I recall that I tried to run this before, and had some difficulty, but haven&#8217;t tried again.  Still, the basic idea is pretty interesting: you create a network of XMLRPC servers, whose basic functionality is to ensure that all network nodes have copies of all files.   It uses the SimpleXMLRPCServer classes and some overly terse idioms to accomplish its task.</p>
<p>Here&#8217;s the thinking that leads me to here: I&#8217;ve been listening to a lot of stuff about the scalability of Facebook lately.   Ironically, the scalability doesn&#8217;t contribute to user experience directly: no user uses very much of any of the Facebook resources.   Facebook&#8217;s 60,000+ servers serve something like 200M+ users every day, so obviously each user is getting a very tiny fraction of any single server machine, a fraction so small that it could be easily subsumed by even the most tiny computing appliance.  It is only the centralization which causes the need for scalability.</p>
<p>And, of course, a distributed architecture has the possibility of fixing a few of Facebook&#8217;s other ills, such as allowing more direct control over privacy.</p>
<p>So, here&#8217;s the idea: use ideas similar to the TinyPTP client to implement a distributed social network like Facebook.  Implement it in a simple language like Python, and in a straightforward way (don&#8217;t be overly terse like TinyPTP).  Pay attention to security, but also make it simple enough so that people can adopt it by downloading a single Python file and running it in a directory of their choosing on their machine at home.  </p>
<p>It&#8217;s just a thought experiment at the moment.  We&#8217;ll see if it gains traction in my head.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=FX9_5N65FfQ:Gox5ZhXqqxQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=FX9_5N65FfQ:Gox5ZhXqqxQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=FX9_5N65FfQ:Gox5ZhXqqxQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=FX9_5N65FfQ:Gox5ZhXqqxQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/FX9_5N65FfQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/29/revisiting-tinyp2p/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/29/revisiting-tinyp2p/</feedburner:origLink></item>
		<item>
		<title>Multitasking With iOS 4 is Horrible: Apple Blew It – PCWorld</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/LxAfVmg_aHY/</link>
		<comments>http://brainwagon.org/2010/06/23/multitasking-with-ios-4-is-horrible-apple-blew-it-pcworld/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 00:23:29 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5964</guid>
		<description><![CDATA[Jared Newman of PC World thinks that Apple blew it with respect to the multitasking in the iPhone:
Multitasking With iOS 4 is Horrible: Apple Blew It &#8211; PCWorld
Here&#8217;s the funny thing though: all these industry pundits keep ranting about how features of the iPhone or iPad are really terrible, and yet when polled, people who [...]]]></description>
			<content:encoded><![CDATA[<p>Jared Newman of PC World thinks that Apple blew it with respect to the multitasking in the iPhone:</p>
<p><a href="http://www.pcworld.com/article/199528/Multitasking_With_iOS_4_is_Horrible_Apple_Blew_It.html?tk=rss_news">Multitasking With iOS 4 is Horrible: Apple Blew It &#8211; PCWorld</a></p>
<p>Here&#8217;s the funny thing though: all these industry pundits keep ranting about how features of the iPhone or iPad are really terrible, and yet when polled, people who buy iPhones are overwhelmingly satisfied with their phone choice.  Perhaps pundits should reconsider that they don&#8217;t understand the phone market as well as Apple does. </p>
<p>Newman states (correctly) that multitasking is something that has to be explicitly coded into applications.  And here&#8217;s the odd thing: it would be better for the phone as a whole if most developers simply chose not to.</p>
<p>It&#8217;s all about battery life.  If your program really doesn&#8217;t have anything to do when you aren&#8217;t staring at the screen, the iPhone will nicely not let it do anything when you shift to another process.  It basically shuts down your application, perhaps storing some information so that when you re-run the program, you can go right back to where you left.  Many apps are kind of lazy, and just restart the program (often displaying time wasting banners) each time, which is one of the reasons that people claim they want multitasking.  For 90% of these cases, just writing the applications better would be sufficient.</p>
<p>But I&#8217;ll be the first to admit that there are processes which don&#8217;t fit this model, and actually do require some CPU time while the user isn&#8217;t staring at them.  For instance, Google Latitude isn&#8217;t really useful on the iPhone, because it was only a web application, and therefore was really only running when you were running Safari.  This kept you from informing anyone of your position if you pretty much were doing anything else.   You&#8217;d like to keep your music playing.  Perhaps you&#8217;d like some long downloads to complete.   All good stuff.</p>
<p>With IOS4, Apple has given you the capability to make that happen.   And yes, as a programmer you have to be explicit about that.  It&#8217;s a teensy bit tedious, but frankly if you are going to make an effective app, you should really be on top of the resources that your application needs.  In particular, you shouldn&#8217;t be viewing your application as necessarily so important that cutting your clients battery life unnecessarily is a virtue.</p>
<p>Just a quick aside about the iPhone Task Manager: in most cases, you don&#8217;t need to access it at all.   Hitting the button in the task manager is just like hitting its icon on the main screen.  If it is more convenient to find the application on any of your home screens, just do it that way.   You will need to access it only to delete processes, and properly coded apps don&#8217;t really need to be explicitly deleted anyway: if the iPhone needs to delete an application because it runs out of memory, it will do so in a well defined way that allows you to restart the application in a consistent state.</p>
<p>Is iPhone multitasking amazing?  No, not really.   But neither is it horrible.  It&#8217;s a reasonable set of design choices to ensure good user experience.  </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=LxAfVmg_aHY:YQk-X-Ts55w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=LxAfVmg_aHY:YQk-X-Ts55w:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=LxAfVmg_aHY:YQk-X-Ts55w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=LxAfVmg_aHY:YQk-X-Ts55w:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/LxAfVmg_aHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/23/multitasking-with-ios-4-is-horrible-apple-blew-it-pcworld/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/23/multitasking-with-ios-4-is-horrible-apple-blew-it-pcworld/</feedburner:origLink></item>
		<item>
		<title>RBox: A diy 32 bit game console for the price of a latte – rossum’s posterous</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/Lt2lRR7obRw/</link>
		<comments>http://brainwagon.org/2010/06/22/rbox-a-diy-32-bit-game-console-for-the-price-of-a-latte-rossums-posterous/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 04:41:30 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[electronics]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5960</guid>
		<description><![CDATA[32 bit processors now cost $1.  That means that you can build fairly competent video games for the price of a coffee.   Check it out:
RBox: A diy 32 bit game console for the price of a latte &#8211; rossum&#8217;s posterous.
Addendum: The prototype is actually built on a small board that can be [...]]]></description>
			<content:encoded><![CDATA[<p>32 bit processors now cost $1.  That means that you can build fairly competent video games for the price of a coffee.   Check it out:</p>
<p><a href="http://rossum.posterous.com/20131601">RBox: A diy 32 bit game console for the price of a latte &#8211; rossum&#8217;s posterous</a>.</p>
<p>Addendum: The prototype is actually built on a small board that can be ordered from Digikey for about $30.   The software is a teensy bit clever (maybe more than a teensy bit).   It generates video entirely via interrupts, but the clever thing is that it uses the SPI interface on the chip in a way that allows you to generate the necessary chroma signals without overburdening the main cpu, which generates the luma part of the signal.   Quite clever. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=Lt2lRR7obRw:WvYZA7O8EMY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=Lt2lRR7obRw:WvYZA7O8EMY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=Lt2lRR7obRw:WvYZA7O8EMY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=Lt2lRR7obRw:WvYZA7O8EMY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/Lt2lRR7obRw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/22/rbox-a-diy-32-bit-game-console-for-the-price-of-a-latte-rossums-posterous/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/22/rbox-a-diy-32-bit-game-console-for-the-price-of-a-latte-rossums-posterous/</feedburner:origLink></item>
		<item>
		<title>Awesome Balloon Launch, carrying HD cameras…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/E1lR772JSGs/</link>
		<comments>http://brainwagon.org/2010/06/22/awesome-balloon-launch-carrying-hd-cameras/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 00:22:22 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Amateur Radio]]></category>

		<guid isPermaLink="false">http://brainwagon.org/2010/06/22/awesome-balloon-launch-carrying-hd-cameras/</guid>
		<description><![CDATA[
Near Space Balloon Flight, shot with HD HERO cameras from GoPro from Kevin Macko on Vimeo.
]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=12488149&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=12488149&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/12488149">Near Space Balloon Flight, shot with HD HERO cameras from GoPro</a> from <a href="http://vimeo.com/user4008094">Kevin Macko</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=E1lR772JSGs:IeCDTPUkWE8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=E1lR772JSGs:IeCDTPUkWE8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=E1lR772JSGs:IeCDTPUkWE8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=E1lR772JSGs:IeCDTPUkWE8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/E1lR772JSGs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/22/awesome-balloon-launch-carrying-hd-cameras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/22/awesome-balloon-launch-carrying-hd-cameras/</feedburner:origLink></item>
		<item>
		<title>My Avatar…</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/LdxKRQi_9nA/</link>
		<comments>http://brainwagon.org/2010/06/17/my-avatar/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 05:51:58 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[3D]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5957</guid>
		<description />
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 502px"><a href="http://download.evolver.com/files2/product/27/1000000000/2550ecbd-0ead-42ef-9c23-de4d65c7ce98/stand3_492.gif"><img alt="" src="http://download.evolver.com/files2/product/27/1000000000/2550ecbd-0ead-42ef-9c23-de4d65c7ce98/stand3_492.gif" width="492" height="600" /></a><p class="wp-caption-text">My Avatar from Evolver.net</p></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=LdxKRQi_9nA:0EdIYoATS5s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=LdxKRQi_9nA:0EdIYoATS5s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=LdxKRQi_9nA:0EdIYoATS5s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=LdxKRQi_9nA:0EdIYoATS5s:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/LdxKRQi_9nA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/17/my-avatar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/17/my-avatar/</feedburner:origLink></item>
		<item>
		<title>French fishing boat rescues stranded Calif. teen – Yahoo! News</title>
		<link>http://feedproxy.google.com/~r/brainwagon/~3/nD4Gl6PMfvo/</link>
		<comments>http://brainwagon.org/2010/06/12/french-fishing-boat-rescues-stranded-calif-teen-yahoo-news/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 16:38:05 +0000</pubDate>
		<dc:creator>brainwagon@gmail.com (Mark VandeWettering)</dc:creator>
				<category><![CDATA[Rants and Raves]]></category>

		<guid isPermaLink="false">http://brainwagon.org/?p=5955</guid>
		<description><![CDATA[It&#8217;s good to see that 16 year old Abby Sunderland has been rescued by a French fishing vessel.   She was attempting to set a world record by sailing around the world solo.
A lot of people have been commenting about how reckless, negligent, etc.. her parents were for letting someone so young attempt such [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s good to see that 16 year old Abby Sunderland has been rescued by a French fishing vessel.   She was attempting to set a world record by sailing around the world solo.</p>
<p>A lot of people have been commenting about how reckless, negligent, etc.. her parents were for letting someone so young attempt such a dangerous voyage.   The claim is that a sixteen year old is simply incapable of comprehending the risks and the dangers involved.</p>
<p>I understand this concern, but I don&#8217;t share it.</p>
<p>Our society has become incapable of understanding risks.  We tolerate the thousands who die in automobile accidents, yet when one person tries (and fails) to put a bomb in their shoes, forever after we all are forced to take off our shoes at airports.   We let kids drive at 16, but they can&#8217;t vote until their are 18, and we mostly hold off drinking until age 21.  And at each age, there are kids who take these new possibilities and handle then responsibly, and there are those who never  become responsible at any age.</p>
<p>Abby comes from a family full of experienced sailors.  Her brother made a similar journey at age 17.   While I do not fully comprehend the compulsion that would cause someone to embark upon such an adventure, neither is it completely mystifying to me.   Such a endeavor cannot help but be profoundly empowering, pushing one&#8217;s self to the limits of their endurance, resourcefulness and skill. </p>
<p>I&#8217;m perfectly willing to accept that Abby and her parents are better judges of what she is capable of doing than we are.  By all accounts, she was well equipped, well trained, and if you take the time to read her blog, emotionally mature enough to handle a journey which would certainly cause me to question my own training and maturity at age 46.</p>
<p>To Abby: condolences on the loss of Wild Eyes, but it is good to hear that you are safe.  Even though your record setting attempt has ended, I am sure that further adventures await you, no matter what directions you choose for yourself.</p>
<p>Bon voyage, and God&#8217;s speed. </p>
<p><a href="http://news.yahoo.com/s/ap/lost_sailor_found">French fishing boat rescues stranded Calif. teen &#8211; Yahoo! News</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brainwagon?a=nD4Gl6PMfvo:Cy9rWJrBzzs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=nD4Gl6PMfvo:Cy9rWJrBzzs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brainwagon?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brainwagon?a=nD4Gl6PMfvo:Cy9rWJrBzzs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/brainwagon?i=nD4Gl6PMfvo:Cy9rWJrBzzs:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brainwagon/~4/nD4Gl6PMfvo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://brainwagon.org/2010/06/12/french-fishing-boat-rescues-stranded-calif-teen-yahoo-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://brainwagon.org/2010/06/12/french-fishing-boat-rescues-stranded-calif-teen-yahoo-news/</feedburner:origLink></item>
	<copyright>Copyright 2006, Mark VandeWettering</copyright><media:credit role="author">Mark VandeWettering</media:credit><media:rating>nonadult</media:rating></channel>
</rss>
