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

<channel>
	<title>Nine More Minutes &#187; Python</title>
	<atom:link href="http://www.ninemoreminutes.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ninemoreminutes.com</link>
	<description>Software Design and Consulting</description>
	<lastBuildDate>Sat, 08 Oct 2011 19:57:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Good Morning From PyCon</title>
		<link>http://www.ninemoreminutes.com/2010/02/good-morning-from-pycon/</link>
		<comments>http://www.ninemoreminutes.com/2010/02/good-morning-from-pycon/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 14:54:32 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[pycon]]></category>

		<guid isPermaLink="false">http://www.ninemoreminutes.com/?p=201</guid>
		<description><![CDATA[I have made the journey to the mecca of nerdery, at least my kind of nerds. Nerds who write Python. I&#8217;m at PyCon 2010 Atlanta. The morning begins with Guido&#8217;s keynote, answering questions posted via Twitter: #python. More to come&#8230;]]></description>
			<content:encoded><![CDATA[<p>I have made the journey to the mecca of nerdery, at least my kind of nerds.  Nerds who write Python.  I&#8217;m at <a href="http://us.pycon.org/">PyCon 2010 Atlanta</a>.</p>
<p>The morning begins with Guido&#8217;s keynote, answering questions posted via Twitter: <a href="http://twitter.com/#search?q=%23pycon">#python</a>.</p>
<p>More to come&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ninemoreminutes.com/2010/02/good-morning-from-pycon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting Software Updates</title>
		<link>http://www.ninemoreminutes.com/2009/06/scripting-software-updates/</link>
		<comments>http://www.ninemoreminutes.com/2009/06/scripting-software-updates/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 19:59:40 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://www.ninemoreminutes.com/?p=141</guid>
		<description><![CDATA[I wrote a shell script that can periodically check a URL for updates. It can download and run another script to apply those updates, potentially overwriting the first script if the update mechanism needs to change.  I needed  a way to install the update script initially, so I wrote a Python script to read and [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a <a href="http://www.gnu.org/software/bash/">shell script</a> that can periodically check a <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Locator">URL</a> for updates. It can download and run another script to apply those updates, potentially overwriting the first script if the update mechanism needs to change.  I needed  a way to install the update script initially, so I wrote a <a href="http://www.python.org/">Python</a> script to read and <a href="http://en.wikipedia.org/wiki/Escape_character">escape</a> each line of the update script, then generate an install script which can write the update script if it is not installed.  Following me so far?  Good.</p>
<p><span id="more-141"></span>So this update script is on an <a href="http://en.wikipedia.org/wiki/Embedded_Linux">embedded Linux</a> device and can be completely wiped away if the user does a factory reset or firmware update from the manufacturer.  If they do that, my enhancements to the device and my upgrade script are gone, making the device useless for the particular application.  Fortunately, the manufacturer gives me a way to store a one-line setting in an area of flash that doesn&#8217;t get erased.  And even better, the default firmware will read and <a href="http://en.wikipedia.org/wiki/Eval">evaluate</a> this one line setting in the shell on startup.  <a href="http://www.a-ha.com/">AHA</a>!</p>
<p>The aforementioned <a href="http://www.python.org/">Python</a> script also takes the install script, packs it into one line, escapes everything again, and creates a <a href="http://en.wikipedia.org/wiki/Installation_(computer_programs)">bootstrap</a> script, whose sole purpose is to write the one setting that gets read on startup, that runs the install script, which creates the update script, which periodically checks for updates to the whole thing.</p>
<p>And now my head hurts.  But it works!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ninemoreminutes.com/2009/06/scripting-software-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

