<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>I gotta have my orange juice. &#187; Programming</title>
	<atom:link href="http://scottmoonen.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://scottmoonen.com</link>
	<description>Jesu, Juva</description>
	<lastBuildDate>Sat, 11 Feb 2012 12:11:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='scottmoonen.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/71456a1f4695cc8129f159ece0f7b3a1?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>I gotta have my orange juice. &#187; Programming</title>
		<link>http://scottmoonen.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://scottmoonen.com/osd.xml" title="I gotta have my orange juice." />
	<atom:link rel='hub' href='http://scottmoonen.com/?pushpress=hub'/>
		<item>
		<title>SmugMug uploader</title>
		<link>http://scottmoonen.com/2008/12/01/smugmug-uploader/</link>
		<comments>http://scottmoonen.com/2008/12/01/smugmug-uploader/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 20:33:56 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[gallery]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SmugMug]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.fullvalence.com/?p=38</guid>
		<description><![CDATA[I&#8217;ve written a small Python script to upload pictures to a SmugMug gallery. I love SmugMug and use it extensively for family photos. I&#8217;m using this script for my personal use because it&#8217;s much simpler and much less of a resource hog than a browser-based uploader, and also because it was a fun exercise to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=113&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smugmug.com/"><img style="border:0 none;float:right;margin:.5em;" src="http://cdn.smugmug.com/img/header/smugmug_black.png" alt="[SmugMug]" width="118" height="25" /></a>I&#8217;ve written a small Python script to upload pictures to a <a href="http://www.smugmug.com/">SmugMug</a> gallery.  I love SmugMug and use it extensively for family photos.  I&#8217;m using this script for my personal use because it&#8217;s much simpler and much less of a resource hog than a browser-based uploader, and also because it was a fun exercise to try out the <a href="http://wiki.smugmug.net/display/SmugMug/API">SmugMug API</a>.  You can run this script as follows to upload one or more files:</p>
<pre>python upload.py <em>gallery-name</em> <em>picture-file-name</em> . . .</pre>
<p>On Windows I&#8217;ve set up a desktop shortcut pointing to the script, and I can drag and drop a pile of picture files onto the icon and it will upload away.  I&#8217;ve tested it using both Python 2.5 using <a href="http://code.google.com/p/simplejson/">simplejson</a>, and also using Python 2.6 which has simplejson built in.  Earlier versions of Python may require you to change the import of hashlib to md5, and change the hashlib.md5() invocation to a md5.new() invocation.  You&#8217;ll also need to modify the script to contain your email address and SmugMug password, and obtain a <a href="http://smugmug.com/hack/apikeys">SmugMug API key</a> for your own development use, but this is a very painless process.  Here is the script:</p>
<p><pre class="brush: python;">
#!/usr/bin/python

##########
# Requirements: Python 2.6 or
#               simplejson from http://pypi.python.org/pypi/simplejson
##########

EMAIL='...'
PASSWORD='...'

##########
APIKEY='...'
API_VERSION='1.2.0'
API_URL='https://api.smugmug.com/hack/json/1.2.0/'
UPLOAD_URL='http://upload.smugmug.com/photos/xmlrawadd.mg'

import sys, re, urllib, urllib2, urlparse, hashlib, traceback, os.path
try    : import json
except : import simplejson as json

if len(sys.argv) &lt; 3 :
  print 'Usage:'
  print '  upload.py  album  picture1  [picture2  [...]]'
  print
  sys.exit(0)

album_name = sys.argv[1]
su_cookie  = None

def safe_geturl(request) :
  global su_cookie

  # Try up to three times
  for x in range(5) :
    try :
      response_obj = urllib2.urlopen(request)
      response = response_obj.read()
      result = json.loads(response)

      # Test for presence of _su cookie and consume it
      meta_info = response_obj.info()
      if meta_info.has_key('set-cookie') :
        match = re.search('(_su=\S+);', meta_info['set-cookie'])
        if match and match.group(1) != &quot;_su=deleted&quot; :
          su_cookie = match.group(1)
      if result['stat'] != 'ok' : raise Exception('Bad result code')
      return result
    except :
      if x &lt; 4 :
        print &quot;  ... failed, retrying&quot;
      else :
        print &quot;  ... failed, giving up&quot;
        print &quot;  Request was:&quot;
        print &quot;  &quot; + request.get_full_url()
        try :
          print &quot;  Response was:&quot;
          print response
        except :
          pass
        traceback.print_exc()
        #sys.stdin.readline()
        #sys.exit(1)
        return result

def smugmug_request(method, params) :
  global su_cookie

  paramstrings = [urllib.quote(key)+'='+urllib.quote(params[key]) for key in params]
  paramstrings += ['method=' + method]
  url = urlparse.urljoin(API_URL, '?' + '&amp;'.join(paramstrings))
  request = urllib2.Request(url)
  if su_cookie :
    request.add_header('Cookie', su_cookie)
  return safe_geturl(request)

result = smugmug_request('smugmug.login.withPassword',
                         {'APIKey'       : APIKEY,
                          'EmailAddress' : EMAIL,
                          'Password'     : PASSWORD})
session = result['Login']['Session']['id']

result = smugmug_request('smugmug.albums.get', {'SessionID' : session})
album_id = None
for album in result['Albums'] :
  if album['Title'] == album_name :
    album_id = album['id']
    break
if album_id is None :
  print 'That album does not exist'
  sys.exit(1)

for filename in sys.argv[2:] :
  data = open(filename, 'rb').read()
  print 'Uploading ' + filename
  upload_request = urllib2.Request(UPLOAD_URL,
                                   data,
                                   {'Content-Length'  : len(data),
                                    'Content-MD5'     : hashlib.md5(data).hexdigest(),
                                    'Content-Type'    : 'none',
                                    'X-Smug-SessionID': session,
                                    'X-Smug-Version'  : API_VERSION,
                                    'X-Smug-ResponseType' : 'JSON',
                                    'X-Smug-AlbumID'  : album_id,
                                    'X-Smug-FileName' : os.path.basename(filename) })
  result = safe_geturl(upload_request)
  if result['stat'] == 'ok' :
    print &quot;  ... successful&quot;

print 'Done'
# sys.stdin.readline()
</pre></p>
<p>I am donating this script to the public domain.  You are welcome to use and modify it as you please without conditions.  I&#8217;d appreciate hearing about your experience with this script or any changes and improvements you&#8217;ve made; please leave a comment.  Thanks!</p>
<p><strong>Update 2010-07-20</strong></p>
<p>Since I first posted this, I&#8217;ve updated it as follows:</p>
<ol>
<li>Add a Content-Type header of &#8216;none&#8217;.  This is to workaround a <a href="http://www.dgrin.com/showthread.php?p=1424518">bug in the SmugMug API</a>.</li>
<li>Use basename() to send only the file&#8217;s basename for X-Smug-FileName.</li>
<li>Rewrite safe_geturl() to loop up to five times if the upload attempt fails.  I&#8217;ve found that uploading is surprisingly unreliable, and re-attempting the upload generally works fine.
<li>Add a commented call to readline() at the end of the script.  In my case, I run my script by dragging files onto an icon on my Windows desktop, which causes it to run in a DOS window and vanish when done.  If you uncomment this line, it will wait for you to press Enter when it is done uploading.  You&#8217;ll be able to see any files that weren&#8217;t uploaded successfully.</li>
</ol>
<p><strong>Update 2010-11-28</strong></p>
<p>SmugMug made a recent change to their API&#8217;s login behavior which broke this script.  While the new login behavior is not documented in the API docs, the fix is apparently to <a href="http://dgrin.com/showthread.php?t=183759">use a session cookie along with the session ID</a>.  While it&#8217;s a bit of a kludge, I&#8217;ve updated the script above to save this cookie in a global variable and submit it on subsequent requests.</p>
<p><strong>Update 2011-06-24</strong></p>
<p>I&#8217;ve fixed a bug in the script causing it to wrongly report a failure for certain requests that don&#8217;t send back the session cookie. The fix involves testing whether a set-cookie header was returned before accessing the header.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=113&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2008/12/01/smugmug-uploader/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>

		<media:content url="http://cdn.smugmug.com/img/header/smugmug_black.png" medium="image">
			<media:title type="html">[SmugMug]</media:title>
		</media:content>
	</item>
		<item>
		<title>Editor Color Scheme</title>
		<link>http://scottmoonen.com/2008/07/07/editor-color-scheme/</link>
		<comments>http://scottmoonen.com/2008/07/07/editor-color-scheme/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 17:16:22 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[color scheme]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[slashdot]]></category>
		<category><![CDATA[slickedit]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[zenburn]]></category>

		<guid isPermaLink="false">http://blog.fullvalence.com/?p=28</guid>
		<description><![CDATA[Recently Slashdot featured a discussion of the best color scheme for programming. From that discussion I&#8217;ve discovered the zenburn color scheme, and have switched to it. I like the fact that the background is not stark black; the reduced contrast feels easier on my eyes. Here are some resources I found from that discussion for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=108&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img style="border:0 none;float:right;margin:.5em;" src="http://smoonen.files.wordpress.com/2008/07/colors.png?w=84&#038;h=84" alt="" width="84" height="84" />Recently Slashdot featured a <a href="http://developers.slashdot.org/article.pl?sid=08/07/03/1249246">discussion</a> of the best color scheme for programming.  From that discussion I&#8217;ve discovered the <em>zenburn</em> color scheme, and have switched to it.  I like the fact that the background is not stark black; the reduced contrast feels easier on my eyes.</p>
<p>Here are some resources I found from that discussion for color schemes:</p>
<ul>
<li><a href="http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/">Compare hundreds of vim color schemes all on one page.</a></li>
<li><a href="http://www.vim.org/scripts/script.php?script_id=415">Zenburn for vim.</a></li>
<li><a href="http://developers.slashdot.org/comments.pl?sid=602957&amp;cid=24042623">Some recommendations for tweaking zenburn (I am using the high contrast setting and also the 256-color setting).</a></li>
<li>Zenburn for <a href="http://www.deepwood.net/software/zenburn/zenburn.el">Emacs</a> and for <a href="http://community.slickedit.com/index.php?topic=324.msg9342#msg9342">Visual SlickEdit</a> (for the latter you&#8217;ll need to register for free before the download links will appear).</li>
</ul>
<p>What color scheme do you prefer for programming?  There are several others at the vim color scheme test, above, that I&#8217;m also interested in trying out.</p>
<p><strong>See also:</strong> <a href="http://scottmoonen.com/2008/02/04/programming-fonts/">Programming Fonts</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/108/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/108/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=108&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2008/07/07/editor-color-scheme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>

		<media:content url="http://smoonen.files.wordpress.com/2008/07/colors.png" medium="image" />
	</item>
		<item>
		<title>GCC binary conditional</title>
		<link>http://scottmoonen.com/2008/05/27/gcc-binary-conditional/</link>
		<comments>http://scottmoonen.com/2008/05/27/gcc-binary-conditional/#comments</comments>
		<pubDate>Tue, 27 May 2008 13:14:01 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[binary-conditional]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[operator]]></category>
		<category><![CDATA[operators]]></category>
		<category><![CDATA[ternary]]></category>

		<guid isPermaLink="false">http://blog.fullvalence.com/2008/05/27/gcc-binary-conditional/</guid>
		<description><![CDATA[I recently ran into a nifty GCC extension to the C/C++ language, the binary conditional: z = x ?: y; At first glance this looks like the C++ ternary operator: z = x ? y : w; But notice that this new operator above is binary &#8212; it has only two parameters.  Unlike the dash [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=105&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently ran into a nifty GCC extension to the C/C++ language, the <em>binary conditional</em>:</p>
<pre>z = x ?: y;</pre>
<p>At first glance this looks like the C++ ternary operator:</p>
<pre>z = x ? y : w;</pre>
<p>But notice that this new operator above is binary &#8212; it has only two parameters.  Unlike the dash and greater-than symbols in the C arrow operator (<tt>pointer -&gt; member</tt>), GCC does not require that the binary conditional&#8217;s question mark and colon be adjacent, but you should probably write them adjacently to better distinguish them from the ternary operator.</p>
<p>But what does the binary conditional do?  In short, it is analagous to the Perl <tt>||</tt> operator, the Python <tt>or</tt> operator, and the Ruby <tt>||</tt> operator.  It evaluates to the value on the left unless the value on the left evaluates to <em>false</em>, in which case it evaluates to the value on the right.</p>
<table style="border:1px solid white;margin-left:1em;border-collapse:collapse;">
<tr style="border-bottom:1px solid white;">
<td style="border-right:1px solid white;"><tt>x</tt></td>
<td style="border-right:1px solid white;"><tt>y</tt></td>
<td><tt>x ?: y</tt></td>
</tr>
<tr>
<td style="border-right:1px solid white;">0</td>
<td style="border-right:1px solid white;">0</td>
<td>0</td>
</tr>
<tr>
<td style="border-right:1px solid white;">0</td>
<td style="border-right:1px solid white;">80</td>
<td>80</td>
</tr>
<tr>
<td style="border-right:1px solid white;">NULL</td>
<td style="border-right:1px solid white;">0x16E212B4</td>
<td>0x16E212B4</td>
</tr>
<tr>
<td style="border-right:1px solid white;">15</td>
<td style="border-right:1px solid white;">0</td>
<td>15</td>
</tr>
<tr>
<td style="border-right:1px solid white;">15</td>
<td style="border-right:1px solid white;">20</td>
<td>15</td>
</tr>
<tr>
<td style="border-right:1px solid white;">0x16E212BC</td>
<td style="border-right:1px solid white;">0x16E212E8</td>
<td>0x16E212BC</td>
</tr>
</table>
<p>You may wonder why the C <tt>||</tt> operator can&#8217;t be used for this same purpose.  The reason for this is that C&#8217;s <tt>||</tt> operator performs a pure <em>logical</em> or operation: it always collapses the result value to 0 or 1.  For example, the expression <tt>80 || 0</tt> evaluates to 1, not to 80.  However, the expression <tt>80 ?: 0</tt> evaluates to 80.</p>
<p>That&#8217;s pretty nifty, although <tt>?:</tt> is certainly a bit unfortunate; it&#8217;s not obvious from looking at the operator what it should do.  Worse, it appears that the binary conditional is <a href="http://www.comeaucomputing.com/4.3.0/minor/linux/compat.html">unique to GCC</a>.  I&#8217;ve tried this with several other C/C++ compilers without success.</p>
<p>There is, however, a more portable way to accomplish the same thing.  Instead of writing <tt>x ?: y</tt>, you can write the equivalent <tt>x ? x : y</tt>.  This is a little less concise, but it has the advantage that any skilled C programmer can immediately understand what it does.  And it is more portable.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/105/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/105/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=105&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2008/05/27/gcc-binary-conditional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>
	</item>
		<item>
		<title>Richard Scarry and hexadecimal</title>
		<link>http://scottmoonen.com/2008/03/01/richard-scarry-and-hexadecimal/</link>
		<comments>http://scottmoonen.com/2008/03/01/richard-scarry-and-hexadecimal/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 00:46:13 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Miscellany]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[alphabet]]></category>
		<category><![CDATA[aptonym]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[children's books]]></category>
		<category><![CDATA[hexadecimal]]></category>
		<category><![CDATA[phonetic alphabet]]></category>
		<category><![CDATA[Richard Scarry]]></category>
		<category><![CDATA[Sesame Street]]></category>

		<guid isPermaLink="false">http://blog.fullvalence.com/2008/03/01/richard-scarry-and-hexadecimal/</guid>
		<description><![CDATA[When you read a hexadecimal number out loud, how do you pronounce the letters? At my workplace, I&#8217;ve grown used to our custom of pronouncing the letters using the Joint Army/Navy Phonetic Alphabet standardized in 1941. The letter digits are pronounced Able, Baker, Charlie, Dog, Easy and Fox. Under this scheme, the hexadecimal number 0x7F8D3BC0 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=102&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When you read a hexadecimal number out loud, how do you pronounce the letters?</p>
<p>At my workplace, I&#8217;ve grown used to our custom of pronouncing the letters using the <a href="http://en.wikipedia.org/wiki/Joint_Army/Navy_Phonetic_Alphabet">Joint Army/Navy Phonetic Alphabet</a> standardized in 1941.  The letter digits are pronounced Able, Baker, Charlie, Dog, Easy and Fox.  Under this scheme, the hexadecimal number 0x7F8D3BC0 would be pronounced &#8220;Seven Fox Eight Dog Three Baker Charlie Zero.&#8221;  This was disorienting to me at first, but after eight years this is now so natural that this is how I pronounce the digits in my mind even if I&#8217;m not speaking them.</p>
<p>We&#8217;ve started collecting Richard Scarry&#8217;s children&#8217;s books.  Richard Scarry writes with a degree of detail and whimsy that holds an adult&#8217;s interest &#8212; much like old-school Sesame Street.  (How far it has fallen &#8212; modern-day Sesame Street is much too postmodern, pluralistic, saccharine and juvenile for my taste.  I console myself by searching for old Sesame Street clips on Youtube.)  Recently I was amused and pleased to discover that one of Richard Scarry&#8217;s characters is named Able Baker Charlie!  What a strange juxtaposition of worlds for me &#8212; programming and children&#8217;s books.</p>
<p>Able Baker Charlie is a mouse.  He is a baker, and assists Baker Humperdink, a pig.  Despite his small size, Able Baker Charlie is capable assisting with any step of the baking process, from stoking the oven, to mixing the dough, to putting loaves in the oven, and even delivering bread around Busytown.  Below you may see a picture of Able Baker Charlie ably distributing French baguettes to Louie&#8217;s Restaurant.</p>
<p style="text-align:center;"><img src="http://smoonen.files.wordpress.com/2008/03/able-baker-charlie.jpg?w=700" style="border:1px solid;margin:.5em;padding:.5em;" alt=" " /></p>
<p><a href="http://en.wikipedia.org/wiki/Richard_Scarry">Richard Scarry</a> served in the U. S. Army during World War II.  No doubt this is the source of the Able Baker Charlie aptonym.  It still gives me a chuckle every time we read it.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=102&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2008/03/01/richard-scarry-and-hexadecimal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>

		<media:content url="http://smoonen.files.wordpress.com/2008/03/able-baker-charlie.jpg" medium="image">
			<media:title type="html"> </media:title>
		</media:content>
	</item>
		<item>
		<title>Programming Fonts</title>
		<link>http://scottmoonen.com/2008/02/04/programming-fonts/</link>
		<comments>http://scottmoonen.com/2008/02/04/programming-fonts/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 00:36:16 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[courier]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[lucida]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[typeface]]></category>
		<category><![CDATA[typography]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.fullvalence.com/2008/02/04/programming-fonts/</guid>
		<description><![CDATA[I&#8217;ve long been dissatisfied with Courier New as a programming font; I&#8217;ve found the characters to be bulky and the serifs distracting.  For the past year or so I&#8217;ve settled on the beautiful Lucida Console as my favorite font to code in.  Lucida Console is bundled with Windows XP and Windows Vista, and unfortunately it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=101&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve long been dissatisfied with Courier New as a programming font; I&#8217;ve found the characters to be bulky and the serifs distracting.  For the past year or so I&#8217;ve settled on the beautiful Lucida Console as my favorite font to code in.  Lucida Console is bundled with Windows XP and Windows Vista, and unfortunately it doesn&#8217;t seem to be available for free redistribution.  However, you can find some other aesthetically pleasing fixed-width programming fonts, some of which are available for free download, at Hamstu&#8217;s <a href="http://blog.hamstu.com/2008/02/03/the-typography-of-code/">Typography of Code</a>.</p>
<p>HT: <a href="http://www.woot.com/Blog/BlogEntry.aspx?BlogEntryId=3886">Woot</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/101/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/101/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/101/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=101&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2008/02/04/programming-fonts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>
	</item>
		<item>
		<title>Gödel, Escher, Bach: an Eternal Golden Braid</title>
		<link>http://scottmoonen.com/2005/03/25/goedel-escher-bach/</link>
		<comments>http://scottmoonen.com/2005/03/25/goedel-escher-bach/#comments</comments>
		<pubDate>Fri, 25 Mar 2005 16:01:56 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Bach]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[Douglas-Hofstadter]]></category>
		<category><![CDATA[Escher]]></category>
		<category><![CDATA[Gödel]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[logic]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://scottmoonen.com/?p=223</guid>
		<description><![CDATA[Hofstadter, Douglas. Gödel, Escher, Bach: an Eternal Golden Braid. New York: Basic Books, 1999. This book is an excellent and fun, if lengthy, romp through art (visual, literary, and musical), mathematics, logic, provability and computability, linguistics, cognitive science and artificial intelligence, and more. Hofstadter cleverly explores a myriad of amazing connections between all these fields. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=223&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://smoonen.files.wordpress.com/2009/10/geb.jpg?w=700" alt="" title="GEB"   class="alignright size-full wp-image-224" />Hofstadter, Douglas.  <em><a href="http://www.amazon.com/exec/obidos/ASIN/0465026567/?tag=markhorne-20">Gödel, Escher, Bach: an Eternal Golden Braid</a></em>.  New York: Basic Books, 1999.</p>
<p>This book is an excellent and fun, if lengthy, romp through art (visual, literary, and musical), mathematics, logic, provability and computability, linguistics, cognitive science and artificial intelligence, and more.  Hofstadter cleverly explores a myriad of amazing connections between all these fields.  And while he ends up drawing no substantive conclusions about his final hypothesis of emergent intelligence, the journey is no less exciting.</p>
<p>I disagree with Hofstadter&#8217;s opinion of the nature of intelligence.  But I thoroughly enjoyed this book for a number of reasons.  First, despite its imposing size, it is accessible; Hofstadter presents mathematical proofs in an easily understood way, using examples, analogies, and much explanatory prose.  Second, despite its imposing size, it is delightfully fun; this book is brimming with humor, wit, cleverness, and exciting coincidences.  Lastly, it is an excellent introduction to a broad variety of topics.</p>
<p>I first read this book in eighth grade and deeply enjoyed it.  In part this book served as my introduction to the exciting fields of logic, mathematics, and computer science.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/223/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/223/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/223/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/223/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/223/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=223&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2005/03/25/goedel-escher-bach/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>

		<media:content url="http://smoonen.files.wordpress.com/2009/10/geb.jpg" medium="image">
			<media:title type="html">GEB</media:title>
		</media:content>
	</item>
		<item>
		<title>Python persistence</title>
		<link>http://scottmoonen.com/2004/10/01/python-persistence/</link>
		<comments>http://scottmoonen.com/2004/10/01/python-persistence/#comments</comments>
		<pubDate>Fri, 01 Oct 2004 16:07:22 +0000</pubDate>
		<dc:creator>Scott Moonen</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[object store]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[prevalence]]></category>

		<guid isPermaLink="false">http://scottmoonen.com/?p=363</guid>
		<description><![CDATA[I&#8217;ve implemented a rudimentary persistent object store in Python. It is implemented as a Python extension module that implements a set of persistent types: strings, integers, floats, lists, and dictionaries. Each of these are backed by the persistent object store, which is implemented using a memory-mapped file. In addition, using a specially crafted Python base [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=363&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve implemented a rudimentary persistent object store in Python.  It is implemented as a Python extension module that implements a set of persistent types: strings, integers, floats, lists, and dictionaries.  Each of these are backed by the persistent object store, which is implemented using a memory-mapped file.</p>
<p>In addition, using a specially crafted Python base class for Python objects, Python objects may be stored in the object store (as dictionaries) and instantiated out of the object store.</p>
<p>The result is an persistent object graph (the root of which is a persistent dictionary) whose objects and attributes may be manipulated in-place using native Python syntax.  Rudimentary locking is provided so that multiple Python threads / processes may concurrently manipulate the object store.</p>
<h3>Details</h3>
<p>Some aspects of this system are:</p>
<ul>
<li>It is a Python extension module written in C and C++.</li>
<li>It is tested on Linux.  It will likely work on *BSD systems, though it is possible that the location of the mapped storage may need to be moved.</li>
<li>It is implemented in a hierarchical manner:
<ul>
<li>A <em>page manager</em> handles the allocation of 4kB pages within a memory-mapped file.  It is multi-process safe.  It is, in a sense, a glorified <tt>sbrk()</tt> for a memory-mapped file.</li>
<li>A <em>heap manager</em> abstracts the page manager&#8217;s services to manage the allocation and deallocation of arbitrary-sized storage segments within the memory-mapped file.  It is essentially a <tt>malloc()</tt> and <tt>free()</tt> for a memory-mapped file.  This is also multi-process safe.</li>
<li>An <em>object manager</em> manages five new base types (persistent int, float, string, list, and dictionary) backed by persistent storage, using the heap manager&#8217;s services.  It also provides rudimentary locking facilities for concurrency-safeness.</li>
<li>The <tt>persist</tt> Python extension uses the object manager&#8217;s services to implement persistent types that mimic the equivalent Python types.  Additionally, it has the ability to reinstantiate a Python object that was stored as a dictionary (using the appropriate Python base class).  The object manager&#8217;s locking facilities are made available for application usage.</li>
</ul>
</li>
<li>Only one file may be mapped at a time (because it is mapped to a fixed logical address).</li>
<li>It is available for use under the MIT license.  Contact me if you are interested in using it.</li>
</ul>
<h3>Examples</h3>
<p>Some examples of its use are a simple counter:</p>
<p><pre class="brush: python;">
import persist

root = persist.root()
root.lockExcl()
try :    root['x'] += 1                # Increment counter
except : root['x'] = 1                 # First pass; initialize
print &quot;Content-type: text/html\n&quot;
print &quot;&lt;p&gt;You are visitor &quot; + str(root['x']) + &quot; to visit this site!&lt;/p&gt;&quot;
root.unlock()
</pre></p>
<p>and rudimentary objects:</p>
<p><pre class="brush: python;">
import persist
from pbase import pbase

class person (pbase) :
  def __init__(self, name = &quot;&quot;, age = 0) :
    pbase.__init__(self)
    self.name = name
    self.age = age

  def printAge(self) :
    print &quot;&lt;p&gt;&quot; + self.name + &quot; is &quot; + str(self.age) + &quot; years old&lt;/p&gt;&quot;

root = persist.root()
root.lockExcl()

if not root.has_key('Joe') :            # First time through
  root['Joe'] = person('Joe', 27)
if not root.has_key('John') :           # First time through
  root['John'] = person(&quot;John&quot;, 29)

# On subsequent passes we will retrieve the objects stored on the first pass.

print &quot;Content-type: text/html\n&quot;
root['Joe'].printAge()
root['John'].printAge()

root.unlock()
</pre></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/smoonen.wordpress.com/363/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/smoonen.wordpress.com/363/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smoonen.wordpress.com/363/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smoonen.wordpress.com/363/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smoonen.wordpress.com/363/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=scottmoonen.com&amp;blog=9709237&amp;post=363&amp;subd=smoonen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://scottmoonen.com/2004/10/01/python-persistence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c801efd19dadd22c4f35d3f1f6ea1869?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smoonen</media:title>
		</media:content>
	</item>
	</channel>
</rss>
