<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/" xmlns:indexing="urn:atom-extension:indexing" indexing:index="no"><access:restriction xmlns:access="http://www.bloglines.com/about/specs/fac-1.0" relationship="deny"/>
  <title>unofficial planet python</title>
  <updated>2008-05-09T15:05:01Z</updated>
  <generator uri="http://intertwingly.net/code/venus/">Venus</generator>
  <author>
    <name>Ryan Phillips</name>
    <email>trolocsis+python@gmail.com</email>
  </author>
  <id>http://www.planetpython.org/atom.xml</id>
  <link href="http://www.planetpython.org/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://www.planetpython.org/" rel="alternate"/>

  <entry>
    <id>tag:blogger.com,1999:blog-11683713.post-2614622330185555019</id>
    <link href="http://spyced.blogspot.com/2008/05/ide-update.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=11683713&amp;postID=2614622330185555019" rel="replies" type="text/html"/>
    <link href="http://spyced.blogspot.com/feeds/2614622330185555019/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://spyced.blogspot.com/feeds/posts/default/2614622330185555019" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/11683713/posts/default/2614622330185555019" rel="edit" type="application/atom+xml"/>
    <title>IDE update</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Last night the <a href="http://utahpython.org/">Utah Python User Group</a> held an editor/IDE smackdown.  I'm not going to write an exhaustive summary, but here are some highlights:
<ul><li>ViM's OmniComplete is actually pretty decent.  Calltip support in the GUI is also good.  (GUI?  ViM?  Yeah, weird.)</li><li>Emacs completion, from Rope, is also good.  Emacs's refusal to make any concession to GUIs though keeps things clunky.  Not that it isn't great that Everything Works over plain ssh; that's fine, but going through classic Emacs buffers for docstrings or completion means everything takes more keystrokes than it should while being less useful than having that information Always On.
</li><li>Rope also gives Emacs refactoring support that works surprisingly well.</li><li>PyDev still sees a big win from the Eclipse platform.  Specifically, even though Subclipse and Subversive are a bit weak compared to the gold standard (that would be TortoiseSVN), they are much better than what you get with Komodo or Wing.  Now that I am on OS X (no Tortoise) this is a bigger issue for me than it used to be.</li><li>PyDev Extensions has refactoring support now, too.
</li><li>Komodo has limited support for completion inside django templates.  Which is impressive, since the commands allowed in django templates aren't really Python, which is to say that you can't just use the same completion support that you use for normal Python code.</li><li>Mako template support with completion, anyone?</li><li>The latest versions of Komodo and Wing both integrate unittest support.  Wing also supports doctest out of the box.  Meaning, you click a button, your tests run, you get a pretty summary with click-to-go-to-the-source-of-the-error support.  This might get me to finally upgrade to Wing 3.  It's not that "python test.py" is so hard, so much as I do it so often that even a little more convenience adds up.
</li></ul>I was surprised how well ViM and Emacs do with Python now.  ViM's modern inline interface for code completion and Emacs's refactoring support are particularly nice.  The IDEs still win on the I part (Integration), in particular debugging and (for Eclipse at least) svn support.</div>
    </content>
    <updated>2008-05-09T14:19:01Z</updated>
    <published>2008-05-09T10:42:00Z</published>
    <author>
      <name>Jonathan Ellis</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/11003648392946638242</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-11683713</id>
      <author>
        <name>Jonathan Ellis</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/11003648392946638242</uri>
      </author>
      <link href="http://spyced.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://spyced.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://spyced.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://spyced.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Spyced</title>
      <updated>2008-05-09T14:54:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5135517.post-8516857104717763579</id>
    <link href="http://patricklogan.blogspot.com/2008/05/isnt-that-what-internets-are-for.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=5135517&amp;postID=8516857104717763579" rel="replies" type="text/html"/>
    <link href="http://patricklogan.blogspot.com/feeds/8516857104717763579/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://patricklogan.blogspot.com/feeds/posts/default/8516857104717763579" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5135517/posts/default/8516857104717763579" rel="edit" type="application/atom+xml"/>
    <title>Isn't That What The Internets Are For?</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Joe Wilcox watches Microsoft and wonders...<p>"Mesh is the only thing that really makes sense out of a Yahoo<br/>acquisition to me. Yahoo has rich content services—and they're<br/>everywhere. If Microsoft could plug Mesh into that infrastructure,<br/>fast, and flip the switch "Wow!" Imagine, for example, Mesh making<br/>Flickr photos instantly available to all your PCs, cell phones and<br/>TVs. Software plus hardware plus services."</p><p>But isn't that what the internets are for?</p><p><a href="http://www.microsoft-watch.com/content/web_services_browser/yahoo_between_a_rock_and_a_hard_place.html?kc=MWRSS02129TX1K0000535">http://www.microsoft-watch.com/content/web_services_browser/yahoo_between_a_rock_and_a_hard_place.html?kc=MWRSS02129TX1K0000535</a></p></div>
    </content>
    <updated>2008-05-09T12:22:59Z</updated>
    <published>2008-05-09T12:22:00Z</published>
    <author>
      <name>Patrick Logan</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02088461489050417591</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5135517</id>
      <author>
        <name>Patrick Logan</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02088461489050417591</uri>
      </author>
      <link href="http://patricklogan.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Making it stick.</title>
      <updated>2008-05-09T12:22:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://halfcooked.com/blog/?p=64</id>
    <link href="http://halfcooked.com/blog/2008/05/09/opening-a-file-in-python/" rel="alternate" type="text/html"/>
    <title>Opening a file in Python</title>
    <summary>I’m sure I read this somewhere recently, but my scratchy memory and command of Google can’t bring it back to me.
Is there a Python idiom for accepting either a file name or a file object as a function parameter?
The closest I can get is this;

def my_function(file_name_or_object):
    try:
      [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’m sure I read this somewhere recently, but my scratchy memory and command of Google can’t bring it back to me.</p>
<p>Is there a Python idiom for accepting either a file name or a file object as a function parameter?</p>
<p>The closest I can get is this;</p>
<pre>def my_function(file_name_or_object):
    try:
        open(file_name_or_object)
    except TypeError:
        file = file_name_or_object
    return file
</pre>
<p>Any improvements on this are more than welcome.</p></div>
    </content>
    <updated>2008-05-09T11:01:18Z</updated>
    <category term="General"/>
    <author>
      <name>Andy Todd</name>
    </author>
    <source>
      <id>http://halfcooked.com/blog</id>
      <link href="http://www.halfcooked.com/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://halfcooked.com/blog" rel="alternate" type="text/html"/>
      <subtitle>Wherein I write some stuff  that you may like to read. Or not, its up to you really.</subtitle>
      <title>Andrew Channels Dexter Pinion</title>
      <updated>2008-05-09T11:01:20Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://www.oreillynet.com/onlamp/blog/2008/05/google_app_engine_application.html</id>
    <link href="http://www.oreillynet.com/onlamp/blog/2008/05/google_app_engine_application.html" rel="alternate" type="text/html"/>
    <title xml:lang="en-US">Google App Engine Application Request:  Python User Group Website</title>
    <summary xml:lang="en-US">If anyone was interested in a great Google App Engine project, I would love to see a community blog/speaker registration tool. Jeff Rush mentioned something like this a couple of PyCons ago, but now there is the technology available for free with...</summary>
    <updated>2008-05-09T10:47:01Z</updated>
    <category term="Technical"/>
    <author>
      <name>Noah Gift</name>
    </author>
    <source>
      <id>http://www.oreillynet.com/</id>
      <category scheme="http://www.itunes.com/" term="Technology"/>
      <author>
        <name>O'Reilly Media, Inc.</name>
      </author>
      <link href="http://www.oreillynet.com/" rel="alternate" type="text/html"/>
      <link href="http://www.oreillynet.com/pub/feed/31" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-US">Copyright O'Reilly Media, Inc.</rights>
      <subtitle xml:lang="en-US">The O'Reilly Network Articles and Weblogs</subtitle>
      <title xml:lang="en-US">O'Reilly Network Articles and Weblogs: Noah Gift</title>
      <updated>2008-05-09T10:47:01Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8550962.post-6134059817503243575</id>
    <link href="http://pydev.blogspot.com/2008/05/bug-in-pydev-package-explorer-1316.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=8550962&amp;postID=6134059817503243575" rel="replies" type="text/html"/>
    <link href="http://pydev.blogspot.com/feeds/6134059817503243575/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://pydev.blogspot.com/feeds/posts/default/6134059817503243575" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8550962/posts/default/6134059817503243575" rel="edit" type="application/atom+xml"/>
    <title>Bug in pydev package explorer (1.3.16)</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Ok, a serious bug was found in the pydev package explorer... in version 1.3.16, when a project has the project root in the pythonpath, its children won't appear. For users that have a source folder within the project, this doesn't seem to happen.<br/><br/>This problem has just been fixed and a new release should be out pretty soon (in 1.3.17)</div>
    </content>
    <updated>2008-05-09T01:09:01Z</updated>
    <published>2008-05-09T01:03:00Z</published>
    <author>
      <name>Fabio Zadrozny</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04202246218394712738</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8550962</id>
      <author>
        <name>Fabio Zadrozny</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04202246218394712738</uri>
      </author>
      <link href="http://pydev.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Pydev adventures</title>
      <updated>2008-05-09T01:09:01Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.deadlybloodyserious.com/?p=2055</id>
    <link href="http://feeds.feedburner.com/~r/DeadlyBloodySeriousAboutPython/~3/286481536/" rel="alternate" type="text/html"/>
    <title>Default arguments in Python: two easy blunders</title>
    <summary>I’m glad I stumbled across Patrick Altman’s tweet about a “default bug in Django“. I’d never have guessed you can pass a callable to a field’s default= argument, otherwise. That’s quite a powerful idiom, and I think I’ll use it a lot.

To balance the karma, I’d like to post a quick reminder to everyone else [...]</summary>
    <updated>2008-05-09T01:05:12Z</updated>
    <category term="Django"/>
    <category term="Misc"/>
    <category term="Python"/>
    <category term="arguments"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.deadlybloodyserious.com/2008/05/default-argument-blunders/</feedburner:origlink>
    <author>
      <name>garth</name>
    </author>
    <source>
      <id>http://www.deadlybloodyserious.com</id>
      <logo>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</logo>
      <link href="http://www.deadlybloodyserious.com" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nc-sa/2.0/" rel="license"/>
      <link href="http://feeds.feedburner.com/DeadlyBloodySeriousAboutPython" rel="self" type="application/atom+xml"/>
      <subtitle>Just another WordPress weblog</subtitle>
      <title>Deadly Bloody Serious about Python</title>
      <updated>2008-05-09T01:05:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-9238405.post-7663945367612013621</id>
    <link href="http://agiletesting.blogspot.com/2008/05/notes-from-latest-socal-piggies-meeting.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=9238405&amp;postID=7663945367612013621" rel="replies" type="text/html"/>
    <link href="http://agiletesting.blogspot.com/feeds/7663945367612013621/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://agiletesting.blogspot.com/feeds/posts/default/7663945367612013621" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/9238405/posts/default/7663945367612013621" rel="edit" type="application/atom+xml"/>
    <title>Notes from the latest SoCal Piggies meeting</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">...have been <a href="http://python-groups.blogspot.com/2008/05/notes-from-socal-piggies-meeting-on-may.html">posted</a> to the "Happenings in Python User groups" blog.</div>
    </content>
    <updated>2008-05-09T00:17:51Z</updated>
    <published>2008-05-09T00:16:00Z</published>
    <author>
      <name>Grig Gheorghiu</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/17863511617654196370</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-9238405</id>
      <author>
        <name>Grig Gheorghiu</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/17863511617654196370</uri>
      </author>
      <link href="http://agiletesting.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://agiletesting.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://agiletesting.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://agiletesting.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Agile Testing</title>
      <updated>2008-05-09T00:17:51Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://halfcooked.com/blog/?p=63</id>
    <link href="http://halfcooked.com/blog/2008/05/09/trouble-getting-a-date/" rel="alternate" type="text/html"/>
    <title>Trouble Getting a Date</title>
    <summary>I’m having trouble with dates. This can be summed up in a couple of high level issues;
1. Date support in relational databases is insane, or at the best inconsistent.
As far as I can tell the ANSI SQL-92 standard defines date, time, interval and timestamp data types. Which doesn’t help when SQL Server only implements something [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’m having trouble with dates. This can be summed up in a couple of high level issues;
</p><p>1. Date support in relational databases is insane, or at the best inconsistent.</p>
<p>As far as I <a href="http://www.cyberarmy.net/library/article/190">can tell</a> the ANSI SQL-92 standard defines date, time, interval and timestamp data types. Which doesn’t help when <a href="http://www.microsoft.com/sql/default.mspx">SQL Server</a> only implements something called ‘datetime’ - at least I think so, have you tried accessing any sort of manual for a Microsoft product online? Blimey, I thought billg had embraced this web thing years ago. Oracle has the ‘date’ data type (which is actually a time stamp) and <a href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html">MySQL</a>, well they’ve gone and outdone everyone by implementing  DATETIME, DATE, TIMESTAMP, TIME, and YEAR.</p>
<p>2. The Python DB-API does not cope with date data type ambiguity well.</p>
<p>When it comes to the date question the <a href="http://www.python.org/dev/peps/pep-0249/">Python DB-API</a> states (and I quote) ” … may use mx.DateTime”, which if you ask me isn’t much of a standard. This needs to change so that all DB-API modules return consistent datetime objects, not such a big issue as datetime has been part of the standard library since, what, Python 2.3?</p>
<p>Sadly even if we fix this it won’t work with <a href="http://www.sqlite.org/">Sqlite</a> as it doesn’t consistently support data typing. In my experiments regardless of what sort of date you insert into the database you get a unicode string back. Don’t believe me? Try this in Python 2.5;</p>
<pre>&gt;&gt;&gt; from sqlite3 import dbapi2
&gt;&gt;&gt; db = dbapi2.connect('test_db')
&gt;&gt;&gt; cursor = db.cursor()
&gt;&gt;&gt; cursor.execute('create table date_test (id integer not null primary key autoincrement, sample_date DATE NOT NULL)'
&gt;&gt;&gt; stmt = "INSERT INTO date_test (sample_date) VALUES (?)"
&gt;&gt;&gt; cursor.execute(stmt, (1234, ))
&gt;&gt;&gt; import datetime
&gt;&gt;&gt; cursor.execute(stmt, (datetime.date(2008, 3, 10), ))
&gt;&gt;&gt; cursor.execute(stmt, ('My name is Earl', ))
&gt;&gt;&gt; db.commit()
&gt;&gt;&gt; cursor.execute("SELECT * FROM date_test")
&gt;&gt;&gt; results = cursor.fetchall()
&gt;&gt;&gt; for item in results:
...     print item[1], type(item[1])
1234 
2008-03-10 
My name is Earl 
&gt;&gt;&gt;
</pre>
<p>But note that it is fine for integers.</p>
<p>3. The people writing the Python standard library modules are on crack.
</p><p>Outside of the database world and within the batteries included Python standard library some modules use <a href="http://docs.python.org/lib/module-datetime.html">datetime</a>, others <a href="http://docs.python.org/lib/module-time.html">time</a> and there are even uses of <a href="http://docs.python.org/lib/module-calendar.html">calendar</a>.</p>
<p>O.K. I’ll accept that maybe the module authors aren’t on full strength crack, because the <a href="http://docs.python.org/lib/module-time.html">time</a> module just exposes underlying posix functions. But the people who wrote those were on something strong and hallucinogenic. I table the following function signatures from section <a href="http://docs.python.org/lib/module-time.html">14.2</a> of the Python Library Reference 2.5 as an example;</p>
<pre>strftime(format[, t ])
strptime(string[, format ])
</pre>
<p>This has bitten me twice in the last twenty four hours and frankly I’m not happy.</p>
<p>I appreciate that there are historical reasons for having inconsistent function signatures but can someone please fix this in Python 3.0. All we need is a single module that can access the underlying system clock and then convert between a number of different representations of that and other epoch driven dates. How hard can it be? As far as I can tell this is not part of the <a href="http://www.python.org/dev/peps/pep-3108/">proposed standard library re-organisation</a>. I think it should be.</p></div>
    </content>
    <updated>2008-05-08T22:04:59Z</updated>
    <category term="database"/>
    <category term="python"/>
    <author>
      <name>Andy Todd</name>
    </author>
    <source>
      <id>http://halfcooked.com/blog</id>
      <link href="http://www.halfcooked.com/blog/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://halfcooked.com/blog" rel="alternate" type="text/html"/>
      <subtitle>Wherein I write some stuff  that you may like to read. Or not, its up to you really.</subtitle>
      <title>Andrew Channels Dexter Pinion</title>
      <updated>2008-05-09T11:01:20Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3604515438787408842.post-3051089778518323550</id>
    <link href="http://ironpython-urls.blogspot.com/2008/05/debugging-ironpython-code-with-visual.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=3604515438787408842&amp;postID=3051089778518323550" rel="replies" type="text/html"/>
    <link href="http://ironpython-urls.blogspot.com/feeds/3051089778518323550/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://ironpython-urls.blogspot.com/feeds/posts/default/3051089778518323550" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/3604515438787408842/posts/default/3051089778518323550" rel="edit" type="application/atom+xml"/>
    <title>Debugging IronPython Code with Visual Studio</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Harry Pierson has written up how to use Visual Studio to debug IronPython code:<br/><ul><li><a href="http://devhawk.net/2008/05/08/Debugging+IronPython+Code+In+Visual+Studio.aspx">Debugging IronPython Code with Visual Studio</a><br/></li></ul></div>
    </content>
    <updated>2008-05-08T22:02:50Z</updated>
    <published>2008-05-08T21:53:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="visual studio"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="debugging"/>
    <author>
      <name>Fuzzyman</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06229713779852499022</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3604515438787408842</id>
      <author>
        <name>Mark Rees</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13884562284992556003</uri>
      </author>
      <link href="http://ironpython-urls.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>IronPython URL's</title>
      <updated>2008-05-08T22:02:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>tag:blogger.com,1999:blog-11788780.post-9016810050815733008</id>
    <link href="http://jjinux.blogspot.com/2008/05/joel-on-software-never-rewrite-from.html" rel="alternate" type="text/html"/>
    <title>Joel on Software: Never Rewrite from Scratch</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">I was thinking of Joel on Software's famous post <a href="http://www.joelonsoftware.com/articles/fog0000000069.html">Things You Should Never Do, Part I</a> where he says, "[Netscape] did it by making the single worst strategic mistake that any software company can make:  They decided to rewrite the code from scratch."<br/><br/>Since Joel is from Microsoft, I was pondering what would have happened if the Microsoft NT developers had taken that advice and based NT on DOS.  Perhaps it's illustrative to compare the quality of Windows ME vs. Windows 2000 and XP.</div>
    </summary>
    <updated>2008-05-08T20:12:39Z</updated>
    <author>
      <name>Shannon -jj Behrens</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>http://jjinux.blogspot.com/</id>
      <author>
        <name>Shannon -jj Behrens</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://jjinux.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/JJinuxLandRSS" rel="self" type="application/rss+xml"/>
      <title>JJinuxLand</title>
      <updated>2008-05-09T06:04:25Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-5135517.post-7381822099573530299</id>
    <link href="http://patricklogan.blogspot.com/2008/05/good-bits-bad-bits.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=5135517&amp;postID=7381822099573530299" rel="replies" type="text/html"/>
    <link href="http://patricklogan.blogspot.com/feeds/7381822099573530299/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://patricklogan.blogspot.com/feeds/posts/default/7381822099573530299" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/5135517/posts/default/7381822099573530299" rel="edit" type="application/atom+xml"/>
    <title>Good Bits, Bad Bits</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>
Michael Nygard <a href="http://www.michaelnygard.com/blog/2008/05/saps_soa_esr_1.html">posted about SAP's SOA capabilities</a>. I wasn't sure if he'd appreciated their complexity, but he does emphasize that in a comment on this post here.
</p><p>
We're talking really complicated, WS-*-ish bits. My advice from hands-on experience two years ago would be: stop; walk back slowly, slowly; now turn and run; faster.
</p><p>
Not the kind of good system attributes I think of when reading Michael's book.</p></div>
    </content>
    <updated>2008-05-08T20:05:31Z</updated>
    <published>2008-05-08T00:16:00Z</published>
    <author>
      <name>Patrick Logan</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02088461489050417591</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-5135517</id>
      <author>
        <name>Patrick Logan</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02088461489050417591</uri>
      </author>
      <link href="http://patricklogan.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://patricklogan.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Making it stick.</title>
      <updated>2008-05-09T12:22:59Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://python.genedrift.org/?p=102</id>
    <link href="http://feeds.feedburner.com/~r/BeginningPythonForBioinformatics/~3/286299620/" rel="alternate" type="text/html"/>
    <title>Repository</title>
    <summary>As mentioned on the last post I am moving the current repository, an html page, to an actual Git repository on github.com. The link to the repository is 
http://github.com/nuin/beginning-python-for-bioinformatics/tree/master
and it can be accessed by anyone. There are only a handful of scripts there but I am slowly adding more comments to the scripts and moving [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>As mentioned on the last post I am moving the current repository, an html page, to an actual Git repository on <a href="http://github.com">github.com</a>. The link to the repository is </p>
<p><a href="http://github.com/nuin/beginning-python-for-bioinformatics/tree/master">http://github.com/nuin/beginning-python-for-bioinformatics/tree/master</a></p>
<p>and it can be accessed by anyone. There are only a handful of scripts there but I am slowly adding more comments to the scripts and moving them to github. The web interface at github is pretty nice and the code can be viewed on the website with a nice code highlighting, for <a href="http://github.com/nuin/beginning-python-for-bioinformatics/tree/master/scripts/code_04.py">example</a>. Also there is an RSS feed to receive updates, commits, etc.</p>
<p><strong>How to create a local copy</strong></p>
<p>Git is very easy to use and it is very simple to create a local copy of the repository on your local machine. Git is available on most systems as a command-line utility (there is a gui but I haven’t used yet) and to have an updated copy of the Beginning Python for Bioinformatics, two commands are needed.</p>
<p>- first you have to <code>clone</code> the repository</p>
<p><strong>$ git clone git://github.com/nuin/beginning-python-for-bioinformatics.git</strong></p>
<p>that will create a beginning-python-for-bioinformatics directory wherever you run git (this only needs to be done once)</p>
<p>and to keep the clone updated</p>
<p><strong>$ git pull</strong></p>
<p>from inside the clone directory.</p>
<p>Any questions please let me know.</p>

<p><a href="http://feeds.feedburner.com/~a/BeginningPythonForBioinformatics?a=dk72bk"><img border="0" src="http://feeds.feedburner.com/~a/BeginningPythonForBioinformatics?i=dk72bk"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/BeginningPythonForBioinformatics/~4/286299620" width="1"/></div>
    </content>
    <updated>2008-05-08T19:41:28Z</updated>
    <category term="Uncategorized"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://python.genedrift.org/2008/05/08/repository-2/</feedburner:origlink>
    <author>
      <name>Paulo Nuin</name>
    </author>
    <source>
      <id>http://python.genedrift.org</id>
      <link href="http://python.genedrift.org" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nd/3.0/" rel="license"/>
      <link href="http://feeds.feedburner.com/BeginningPythonForBioinformatics" rel="self" type="application/atom+xml"/>
      <subtitle>a step-by-step guide to create Python applications in bioinformatics</subtitle>
      <title>Beginning Python for Bioinformatics</title>
      <updated>2008-05-08T20:31:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://homepage.mac.com/s_lott/iblog/architecture/C465799452/E20080508085843/index.html</id>
    <link href="http://homepage.mac.com/s_lott/iblog/architecture/C465799452/E20080508085843/index.html" rel="alternate" type="text/html"/>
    <title>Standard Software Defects - Java Edition</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><br/>Here are some software defects so typical, that I've collected a handy short list with acronyms. I've also got a specific technique for remediating those awful Everything In Main programs.<br/></div>
    </summary>
    <updated>2008-05-08T12:58:43Z</updated>
    <source>
      <id>http://homepage.mac.com/s_lott/iblog/architecture</id>
      <author>
        <name>S.Lott</name>
      </author>
      <link href="http://homepage.mac.com/s_lott/iblog/architecture" rel="alternate" type="text/html"/>
      <link href="http://homepage.mac.com/s_lott/iblog/architecture/rss.xml" rel="self" type="application/rss+xml"/>
      <rights>2005-2007 Steven F. Lott</rights>
      <subtitle>Software Architecture - mostly ranting about the daily grind of being a software architect.</subtitle>
      <title>S.Lott - Software Architect</title>
      <updated>2008-05-08T15:19:07Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://radian.org/notebook/?p=56</id>
    <link href="http://radian.org/notebook/hls-open-access" rel="alternate" type="text/html"/>
    <title>Harvard Law goes Open Access</title>
    <summary>In February, Harvard’s Faculty of Arts and Sciences (FAS) unanimously approved an Open Access resolution, committing to make all its research available through a public repository. It was the first US college to do so.
Yesterday, Harvard Law School unanimously voted to become the first US law school with the same commitment.
Over a scant few years, [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p/><center><img src="http://radian.org/notebook/wp-content/uploads/2008/05/harvard.jpg"/></center><p/>
<p>In February, Harvard’s Faculty of Arts and Sciences (FAS) <a href="http://radian.org/notebook/open-future">unanimously approved</a> an Open Access resolution, committing to make all its research available through a public repository. It was the first US college to do so.</p>
<p>Yesterday, Harvard Law School <a href="http://www.law.harvard.edu/news/2008/05/07_openaccess.php">unanimously voted</a> to become the first US law school with the same commitment.</p>
<p>Over a scant few years, Harvard Law pulled together <a href="http://en.wikipedia.org/wiki/Lawrence_Lessig">Larry Lessig</a> and <a href="http://en.wikipedia.org/wiki/Jonathan_Zittrain">Jonathan Zittrain</a>, and recently recruited both <a href="http://en.wikipedia.org/wiki/Yochai_Benkler">Yochai Benkler</a> and <a href="http://en.wikipedia.org/wiki/Cass_Sunstein">Cass Sunstein</a>. These are, along with folks like <a href="http://en.wikipedia.org/wiki/John_Palfrey">John Palfrey</a>, the finest legal thinkers of their generation. I am incredibly hopeful about the kind of cyberlaw activism and trendsetting we’ll see with these minds all sharing an affiliation.</p></div>
    </content>
    <updated>2008-05-08T10:29:50Z</updated>
    <category term="Uncategorized"/>
    <author>
      <name>Ivan Krstić</name>
    </author>
    <source>
      <id>http://radian.org/notebook</id>
      <link href="http://radian.org/notebook/feed" rel="self" type="application/atom+xml"/>
      <link href="http://radian.org/notebook" rel="alternate" type="text/html"/>
      <subtitle>Code. Culture. Clarity.</subtitle>
      <title>ivan krstić · code culture</title>
      <updated>2008-05-09T12:04:08Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8935780327334775165.post-7844482930238707337</id>
    <link href="http://entitycrisis.blogspot.com/2008/05/apache-ssl-psk-on-ubuntu.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=8935780327334775165&amp;postID=7844482930238707337" rel="replies" type="text/html"/>
    <link href="http://entitycrisis.blogspot.com/feeds/7844482930238707337/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://entitycrisis.blogspot.com/feeds/posts/default/7844482930238707337" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8935780327334775165/posts/default/7844482930238707337" rel="edit" type="application/atom+xml"/>
    <title>Apache + SSL + PSK on Ubuntu</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">This howto describes the process of using Apache and SSL with trusted clients, via Pre Shared Keys. Unlike the usual way of using SSL, this setup requires the server _and_ the client to have valid certificates. This means you need to create a client certificate and deliver it securely to the client.<br/><br/>1. Enable SSL.<br/><pre>sudo a2enmod ssl</pre><br/>2. Generate a private key without a passphrase,<br/><pre>openssl genrsa -out server.key 1024</pre><br/>or with a passphrase.<br/><pre>openssl genrsa -des3 -out server.key 1024</pre><br/>3. Create a certificate signing request.<br/><pre>openssl req -new -key server.key -out server.csr</pre><br/>4. Sign it yourself.<br/><pre>openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt</pre><br/>5. Copy your new certificate and keys to the appropriate places.<br/><pre>sudo cp server.crt /etc/ssl/certs<br/>sudo cp server.key /etc/ssl/private</pre><br/>6. Edit your apache site configuration, add these lines into a VirtualHost section.<br/><pre>SSLEngine on<br/>SSLCertificateFile /etc/ssl/certs/server.crt<br/>SSLCertificateKeyFile /etc/ssl/private/server.key<br/>SSLVerifyClient require<br/>SSLVerifyDepth 1<br/>SSLCACertificateFile /etc/ssl/certs/server.crt</pre><br/>7. Create a certificate which you can give to a client, or a group of clients.<br/><pre>openssl pkcs12 -export -out client_cert.pfx -in server.crt -inkey server.key\<br/>-name 'Certificate Name'</pre><br/>8. Make sure the client gets the client_cert.pfx file, which they install into their browser.<br/><br/>9. To use the client_certificate.pfx in a python httplib or httplib2, it needs to be split into a key and certificate file.<br/><pre>openssl pkcs12 -clcerts -nokeys -in client_cert.pfx -out client_cert.pem<br/>openssl pkcs12 -nocerts -in client_cert.pfx -out client_key.pem</pre><br/>10. Strip the pass phrase from client_key.pem so Python does not prompt for a pass phrase!<br/><pre>openssl rsa -in client_key.pem -out unsecured_client_key.pem</pre></div>
    </content>
    <updated>2008-05-08T03:52:54Z</updated>
    <published>2008-05-08T02:39:00Z</published>
    <author>
      <name>Simon Wittber</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/02730025645144151014</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8935780327334775165</id>
      <author>
        <name>Simon Wittber</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02730025645144151014</uri>
      </author>
      <link href="http://entitycrisis.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://entitycrisis.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://entitycrisis.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://feeds.feedburner.com/EntityCrisis" rel="self" type="application/atom+xml"/>
      <title>Entity Crisis</title>
      <updated>2008-05-08T03:52:54Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.blueskyonmars.com/2008/05/07/paver-07-better-than-distutils-better-docs-and-much-more/</id>
    <link href="http://www.blueskyonmars.com/2008/05/07/paver-07-better-than-distutils-better-docs-and-much-more/" rel="alternate" type="text/html"/>
    <title>Paver 0.7: Better than distutils, better docs and much more</title>
    <summary>I’m delighted to release Paver 0.7. If you missed my original announcement, the short story is that Paver is a new build, distribution and deployment scripting tool geared toward Python projects. My original announcement and the new foreword to the docs explain the motivation.
Ben Bangert and others pointed out a giant documentation bug in 0.4: [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I’m delighted to release <a href="http://www.blueskyonmars.com/projects/paver/">Paver</a> 0.7. If you missed my <a href="http://www.blueskyonmars.com/2008/04/22/paver-and-the-building-distribution-deployment-etc-of-python-projects/">original announcement</a>, the short story is that Paver is a new build, distribution and deployment scripting tool geared toward Python projects. My original announcement and the <a href="http://www.blueskyonmars.com/projects/paver/foreword.html">new foreword</a> to the docs explain the motivation.</p>
<p>Ben Bangert and others pointed out a giant documentation bug in 0.4: there was a fair bit of reference doc but no doc that said “here’s how you get started with Paver”. Now there is: Paver’s <a href="http://www.blueskyonmars.com/projects/paver/getting_started.html#gettingstarted">Getting Started Guide</a>.</p>
<p>Paver 0.7 is a big step up from 0.4 (hence the version number bump). I implemented one of the two major features I had planned for 1.0: distutils/setuptools integration. It’s really cool. Have you ever wanted to just slightly change how “sdist” or “upload” or “develop” worked? Now you can, just by writing a function in your pavement.py file. And don’t worry, you don’t need to duplicate anything between setup.py and pavement.py. It all just moves into pavement.py and Paver can even generate a setup.py file for you, since most people are use to the common “python setup.py install” command.</p>
<p>I’ve gone even farther than that with making it easy to use Paver and not annoy users that don’t yet have Paver. Paver can create a small zip file of Paver’s core bits so that “python setup.py install” will work just fine even for users who don’t have Paver installed. Paver can also create a virtualenv bootstrap script for you, so that users don’t necessarily need to install your package on their systems in order to use it.</p>
<p>Paver’s got new documentation tools that work great with Sphinx. It’s now easy to mark sections of sample code files and then include those sections in your documentation, using the built-in version of Ned Batchelder’s <a href="http://nedbatchelder.com/code/cog/index.html">Cog</a>.</p>
<p>And I’m definitely eating my own dogfood. Paver is built using Paver itself and the source distribution includes the paver-minilib so that setup.py install should work fine (let me know if it doesn’t!) The new Getting Started Guide uses the new documentation tools.</p>
<p>There are even more changes than these, and you can look at the <a href="http://www.blueskyonmars.com/projects/paver/changelog.html#may-7-2008">changelog</a> for the full list. Note that if you’re using Paver 0.4, there are a couple of trivial breaking changes.</p>
<p><a href="http://sharethis.com/item?&amp;wp=2.5.1&amp;publisher=4c75e961-1ece-4620-a912-84dd6eb72e2f&amp;title=Paver+0.7%3A+Better+than+distutils%2C+better+docs+and+much+more&amp;url=http%3A%2F%2Fwww.blueskyonmars.com%2F2008%2F05%2F07%2Fpaver-07-better-than-distutils-better-docs-and-much-more%2F">ShareThis</a></p></div>
    </content>
    <updated>2008-05-08T02:55:29Z</updated>
    <category term="Python"/>
    <category term="Paver"/>
    <author>
      <name>Kevin Dangoor</name>
    </author>
    <source>
      <id>http://www.blueskyonmars.com</id>
      <link href="http://www.blueskyonmars.com/category/python/feed/" rel="self" type="application/atom+xml"/>
      <link href="http://www.blueskyonmars.com" rel="alternate" type="text/html"/>
      <subtitle>Kevin Dangoor on Technology, Business and Everything</subtitle>
      <title>Blue Sky On Mars » Python</title>
      <updated>2008-05-09T11:58:49Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8550962.post-8266914483452981532</id>
    <link href="http://pydev.blogspot.com/2008/05/pydev-1316.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=8550962&amp;postID=8266914483452981532" rel="replies" type="text/html"/>
    <link href="http://pydev.blogspot.com/feeds/8266914483452981532/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://pydev.blogspot.com/feeds/posts/default/8266914483452981532" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/8550962/posts/default/8266914483452981532" rel="edit" type="application/atom+xml"/>
    <title>Pydev 1.3.16</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Yeap, it's just been released. Most of the work on this release was on bug-fixes, so, it should be safe to upgrade without major concerns.<br/><br/>The launching facility had some changes, mostly regarding the Ctrl+F11 when it's set to launch the current editor (it just didn't work the way it was supposed to), but that's only valid for new launch configurations (so, if you do want to use it instead of having it launch the previously launched app, existing launches should be deleted -- just note that you should delete only a few launches at a time (around 10-15) -- for some reason eclipse takes a lot of time to delete lots of launches at once (I tried doing it here and it halted for about 5 minutes until I decided to kill it and delete in small steps).</div>
    </content>
    <updated>2008-05-08T01:45:59Z</updated>
    <published>2008-05-08T01:34:00Z</published>
    <author>
      <name>Fabio Zadrozny</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04202246218394712738</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8550962</id>
      <author>
        <name>Fabio Zadrozny</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04202246218394712738</uri>
      </author>
      <link href="http://pydev.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://pydev.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>Pydev adventures</title>
      <updated>2008-05-09T01:09:01Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://ivory.idyll.org/blog/2008/05/07/lazyweb-javascript-image-stuff</id>
    <link href="http://ivory.idyll.org/blog/may-08/lazyweb-javascript-image-stuff" rel="alternate" type="text/html"/>
    <title xml:lang="en">Dear Lazyweb: JavaScript "imagemaps" and/or image subselection?</title>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><div class="document">
<p>Dear Lazyweb, help!</p>
<p>I'm embarking on a number of summer projects in my <a class="reference" href="http://ged.cse.msu.edu/">new lab at MSU</a>, and several of them focus on using <a class="reference" href="http://code.google.com/p/pygr">pygr</a> to do cool genomic stuff.  In
particular, I'm planning to build a personal genome annotation system
that will let people run their own full genome Web sites and annotate
the genomes with private information such as Solexa data, cDNA/EST
projects, ChIP-seq, cis-regulatory reporter constructs, ncRNA
predictions, etc. etc.  (If you're interested in this sort of thing,
<a class="reference" href="mailto:ctb@msu.edu">get in touch</a> -- it will, of course, be open
source and open development, albeit in Python :)</p>
<p>As I've been thinking more about how to do the display side of things,
I've been running headfirst into a serious lack of knowledge.  I would
like to make an interface that looks somewhat like your standard
genome browser/GMOD/UCSC interface, such as <a class="reference" href="http://genome.ucsc.edu/cgi-bin/hgTracks?hgsid=107080583&amp;clade=vertebrate&amp;org=Chicken&amp;db=galGal3&amp;position=chr8%3A28%2C563%2C111-28%2C563%2C687&amp;pix=620&amp;Submit=submit&amp;hgsid=107080583">this UCSC view of the
chicken genome</a>.
I already have the basics of that view working; for example, see this
<a class="reference" href="http://iorich.caltech.edu/~t/transfer/pygr-draw/doc/simple-example.html">simple example</a>
and <a class="reference" href="http://iorich.caltech.edu/~t/transfer/pygr-draw/doc/group-example.html">a group-feature example</a>.
But I'd like to add more - a LOT more -- interactivity.</p>
<p>Ideally I'd like to be able to draw simple objects (squares, rectangles,
lines) on some sort of canvas and then use JavaScript and AJAX to pop
up windows and display bits of information.  But I don't really know this
space of functionality very well.</p>
<p>So I'm turning to the lazyweb.</p>
<p>Are JavaScript+image maps the right way to go (for example, <a class="reference" href="http://www.sbrady.com/hotsource/javascript/mapdis.html">this</a>, <a class="reference" href="http://www.w3schools.com/js/js_image_maps.asp">this</a>, and <a class="reference" href="http://www.webmonkey.com/webmonkey/98/29/index3a_page2.html?tw=programming">this</a>)?
Do they work well with multiple browsers?  Or are there good JS
libraries for <em>drawing</em> images on the fly in the browser?  Is SVG a
good thing to look at?  Were you stuck with this task, what would you use?</p>
<p>The most important things for this project are, in order of importance:</p>
<blockquote>
<ul class="simple">
<li>basic functionality (JS image maps seem fine for this)</li>
<li>cross-browser functionality</li>
<li>selection (e.g. <a class="reference" href="http://www.gmod.org/wiki/index.php/RubberBandSelection">GMOD RubberBandSelection</a>)</li>
<li>flexibility: reordering and redrawing of images.</li>
</ul>
</blockquote>
<p>Your thoughts are much appreciated!  Please <a class="reference" href="mailto:ctb@msu.edu">drop me a line</a> or comment, whichever is most convenient.  I'll summarize the options.</p>
<p>thanks,</p>
<p>--titus</p>
<p>p.s. I'm perfectly fine with "Google this, dumby!"  I just don't have much
in the way of google keyword knowledge in this area...</p>
</div></div>
    </content>
    <updated>2008-05-07T22:03:21Z</updated>
    <published>2008-05-07T22:03:21Z</published>
    <category term="/u/t/blog/entries/may-08"/>
    <source>
      <id>http://ivory.idyll.org/blog/tags/python</id>
      <author>
        <name>Titus Brown</name>
        <email>titus+blog1@idyll.org</email>
        <uri>http://ivory.idyll.org/blog/tags/python</uri>
      </author>
      <link href="http://ivory.idyll.org/blog" rel="alternate" type="text/html"/>
      <link href="http://ivory.idyll.org/blog/tags/python" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en">Copyright 2004-2006, C. Titus Brown</rights>
      <subtitle xml:lang="en">This Space Intentionally Left Empty</subtitle>
      <title xml:lang="en">Daily Life in an Ivory Basement</title>
      <updated>2008-05-07T22:03:21Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3604515438787408842.post-7323538960553519424</id>
    <link href="http://ironpython-urls.blogspot.com/2008/05/games-programming-with-ironpython-and.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=3604515438787408842&amp;postID=7323538960553519424" rel="replies" type="text/html"/>
    <link href="http://ironpython-urls.blogspot.com/feeds/7323538960553519424/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://ironpython-urls.blogspot.com/feeds/posts/default/7323538960553519424" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/3604515438787408842/posts/default/7323538960553519424" rel="edit" type="application/atom+xml"/>
    <title>Games Programming with IronPython and OpenTk</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">There are lots of good options for games programming with CPython, so it is nice to also have choices for IronPython. One .NET framework for games programming that boasts of working well with IronPython is "OpenTk".<br/><ul><li><a href="http://www.opentk.com/">OpenTk - the Open Toolkit</a></li></ul>The Open Toolkit is a game development library for .Net/Mono with an elegant, yet powerful, API. It enables you to bring your ideas to fruition, leveraging the full power of .Net, OpenGL and OpenAL.<br/><br/>OpenTK needs no setup. It runs on Linux and Windows and works with all .Net languages, like C#, VB.Net and IronPython. Best of all, it is - and will remain! - free for both commercial and non-commercial projects.<br/><br/>This is OpenGL like you've never seen it before.</div>
    </content>
    <updated>2008-05-07T20:47:43Z</updated>
    <published>2008-05-07T20:44:00Z</published>
    <category scheme="http://www.blogger.com/atom/ns#" term="games"/>
    <category scheme="http://www.blogger.com/atom/ns#" term="opengl"/>
    <author>
      <name>Fuzzyman</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06229713779852499022</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3604515438787408842</id>
      <author>
        <name>Mark Rees</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/13884562284992556003</uri>
      </author>
      <link href="http://ironpython-urls.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://ironpython-urls.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>IronPython URL's</title>
      <updated>2008-05-08T22:02:50Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-11638628.post-7925663519945544503</id>
    <link href="http://pycon.blogspot.com/2008/05/pycon-fr-may-17-18-2008.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=11638628&amp;postID=7925663519945544503" rel="replies" type="text/html"/>
    <link href="http://pycon.blogspot.com/feeds/7925663519945544503/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://pycon.blogspot.com/feeds/posts/default/7925663519945544503" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/11638628/posts/default/7925663519945544503" rel="edit" type="application/atom+xml"/>
    <title>PyCon FR: May 17 &amp; 18, 2008</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">(In case you didn't see it on the <a href="http://pyfound.blogspot.com/">PSF Blog</a> or on the <a href="http://www.python.org">python.org front page</a>:)<br/><br/>The second national Python Conference in France, PyCon FR 08, will be held at the <a href="http://fr.pycon.org/presentation" target="_blank">Cité des sciences et de la Villette</a> in Paris. <a href="http://fr.pycon.org/programme">The program has been posted (in French</a> -- <a href="http://tarekziade.wordpress.com/2008/05/07/pycon-fr-is-coming-up-ask-the-program">an English version is available as a blog post</a>).</div>
    </content>
    <updated>2008-05-07T19:30:32Z</updated>
    <published>2008-05-07T16:50:00Z</published>
    <author>
      <name>David Goodger</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/06673699859175469861</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-11638628</id>
      <author>
        <name>Greg Stein</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/02475017701402788075</uri>
      </author>
      <link href="http://pycon.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://pycon.blogspot.com/feeds/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/>
      <link href="http://pycon.blogspot.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/>
      <link href="http://pycon.blogspot.com/feeds/posts/default" rel="self" type="application/atom+xml"/>
      <title>PyCon</title>
      <updated>2008-05-08T11:08:50Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://jessenoller.com/?p=260</id>
    <link href="http://feeds.feedburner.com/~r/Jessenollercom/~3/285565879/" rel="alternate" type="text/html"/>
    <title>My Python maxes out my cpus…</title>
    <summary>... And it's just the unittest I wrote for an application I'm cooking up:


Python is consuming much in the way of processor time. I</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>... And it's just the unittest I wrote for an application I'm cooking up:</p>
<div style="text-align: center;">
<a href="http://jessenoller.com/wp-content/uploads/2008/05/picture-1.png" title="view full' on Flickr.com"><img alt="Picture 1.png" border="0" height="329" src="http://jessenoller.com/wp-content/uploads/2008/05/picture-1.png" width="416"/></a></div>
<p>Python is consuming much in the way of processor time. I &lt;3 the processing module. All the workers are doing is tossing integers from one queue to another (in, out, result) and doing random multiplication on those integers.</p>
<p>Delicious.</p></div>
    </content>
    <updated>2008-05-07T19:00:11Z</updated>
    <category term="Programming"/>
    <category term="Python"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://jessenoller.com/2008/05/07/my-python-maxes-out-my-cpus/</feedburner:origlink>
    <author>
      <name>jesse</name>
    </author>
    <source>
      <id>http://jessenoller.com</id>
      <link href="http://jessenoller.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/Jessenollercom" rel="self" type="application/atom+xml"/>
      <subtitle>python, programming and other things</subtitle>
      <title>jessenoller.com</title>
      <updated>2008-05-07T19:03:47Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>urn:uuid:d2370853-4f82-40dd-b4fe-2a233c9c6ea4</id>
    <link href="http://groovie.org/articles/2008/05/07/pylons-on-jvms-and-other-vms" rel="alternate" type="text/html"/>
    <title>Pylons on JVM's (and other VMs)</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Phil Jenvey has been making some great progress getting all the components of Pylons running on Jython, and posted a <a href="http://dunderboss.blogspot.com/2008/05/you-must-construct-additional-pylons-on.html">good write-up of the remaining work</a> being done. It’s interesting to note that one of the big issues will affect any web framework on Jython, not just Pylons. That is, the reload time when used in development to restart the server.</p>


	<p>While I don’t plan on deploying Pylons apps in <span class="caps">WAR</span> files anytime soon, its nice to see Jython emerging as a candidate for deployment.</p></div>
    </summary>
    <updated>2008-05-07T18:40:20Z</updated>
    <author>
      <name>ben</name>
    </author>
    <source>
      <id>http://groovie.org</id>
      <link href="http://groovie.org" rel="alternate" type="text/html"/>
      <link href="http://www.groovie.org/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Code, Thoughts, and Misc Debris</subtitle>
      <title>Groovie</title>
      <updated>2008-05-09T15:04:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.sauria.com/blog/2008/05/07/communityone/</id>
    <link href="http://www.sauria.com/blog/2008/05/07/communityone/" rel="alternate" type="text/html"/>
    <title>CommunityOne</title>
    <summary>Live or semi liveblogging conferences has been getting more and more difficult for me to do. The combination of meetings, networking/parties, and photographs means that it takes longer to assemble the requisite material. Here’s a bit on CommunityOne, which took place on Monday.
Many people (mostly Sun folks) have been asking me if this is my [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Live or semi liveblogging conferences has been getting more and more difficult for me to do. The combination of meetings, networking/parties, and photographs means that it takes longer to assemble the requisite material. Here’s a bit on CommunityOne, which took place on Monday.</p>
<p>Many people (mostly Sun folks) have been asking me if this is my first JavaOne. My answer is, “it’s not, but it is my first one in ten years”. It’s been quite some time since I’ve been to a conference run by a big company like Sun (as opposed to an O’Reilly or open-source community conference). Even though the basics are the same, I definitely feel a kind of culture shock. I was asked to be on a panel during the general session, first thing in the morning, in order to get miked up and to run though the flow. Production values are much higher than I am used to. I keep thinking of CommunityOne as a small event, but in reality it is huge. I am told that registration was around 5000 people, which is twice the size of OSCON, which is the largest conference that I’ve been to in the last 4 or 5 years. Some pictures might help with the scale and production values:</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/51035696189@N01/2470603680" title="View 'CommunityOne 2008' on Flickr.com"><img alt="CommunityOne 2008" border="0" height="333" src="http://farm3.static.flickr.com/2385/2470603680_a6e7dcc721.jpg" width="500"/></a></p>
<p style="text-align: center;"><img alt="CommunityOne 2008" border="0" height="333" src="http://farm3.static.flickr.com/2110/2469781263_631485303e.jpg" width="500"/><a href="http://www.flickr.com/photos/51035696189@N01/2470604892" title="View 'CommunityOne 2008' on Flickr.com"/></p>
<p>The panel was on community models, although the content was closer to the edge where companies and open source communities meet/collaborate/fight. I think that I had two or three chances to speak, including the final set of remarks before the close of the panel. I have some more thoughts on that topic, but they are deserving of their own post, so that will be showing up after JavaOne is over.</p>
<p>Probably my favorite thing that happened at CommunityOne was the demonstration of ZFS’s reliability in the face of hardware failures. Sun Fellow Jim Hughes has demonstrated this a few times at Sun Tech days, and I’ve been meaning to write about that. I got to meet Jim before the keynote, and I had a very good seat to observe the hardware failure.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/51035696189@N01/2470604512" title="View 'CommunityOne 2008' on Flickr.com"><img alt="CommunityOne 2008" border="0" height="333" src="http://farm4.static.flickr.com/3282/2470604512_3de22692ec.jpg" width="500"/></a><a href="http://www.flickr.com/photos/51035696189@N01/2470603680" title="View 'CommunityOne 2008' on Flickr.com"/></p>
<p>Jim usually destroys 2 of the drives in the ZFS pool, and it looked like Rich Green (EVP of Software) was going to get to smash the other one, until Jeff Bonwick, the inventor of ZFS, showed up to do the honors himself.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/51035696189@N01/2470604892" title="View 'CommunityOne 2008' on Flickr.com"><img alt="CommunityOne 2008" border="0" height="333" src="http://farm4.static.flickr.com/3289/2470604892_d88a1e3d77.jpg" width="500"/></a><a href="http://www.flickr.com/photos/51035696189@N01/2470604512" title="View 'CommunityOne 2008' on Flickr.com"/></p>
<p>Smashing things makes for cool demos - you can watch the <a href="http://www.sun.com/featured-articles/2008-0505/commone/index.jsp?intcmp=hp2008may05_opensol_buz">video</a> replay if you like.. I’ve been paying more attention to ZFS ever since Theo Schlossnagle sat with me and a few other people in a bar at ApacheCon in Atlanta last year. We were talking about the voracious storage needs of photographers, and Theo was really singing the praises of ZFS. There were so important things that happened to ZFS for OpenSolaris 00805 (which was launched at CommunityOne). The most important is that you can now boot off of a ZFS volume. I hope (but don’t know for sure) that the work that made this possible will make it possible for Macs to boot off of a ZFS volume. My photo storage is getting all fragmented, and I could really put ZFS to good use. I suppose that I could build a ZFS storage appliance based on <a href="http://www.sun.com/storagetek/openstorage/index.jsp">OpenStorage</a>, but at the moment that is more work that I want to do.</p>
<p>I spent much of the rest of CommunityOne at the Redmonk unconference. I was drafted for an impromptu discussion on dynamic and other programming languages, which included a drop in from David Pollak, developer of the very cool <a href="http://liftweb.net/">lift</a> framework for <a href="http://www.scala-lang.org/">Scala</a>, and organizer of the <a href="http://scalaliftoff.com/liftoff/">Scala liftoff</a> which is happening on Saturday, right after JavaOne. There was also a very active session on Twitter - probably the biggest of the unconference. Jim <strike>Evans</strike> Edwards from Twitter came along to participate in that one</p>
<p style="text-align: center;"><img alt="CommunityOne 2008" border="0" height="500" src="http://farm3.static.flickr.com/2324/2470606872_9956a8dee3.jpg" width="333"/></p>
<p style="text-align: left;">I have a bunch more <a href="http://www.flickr.com/photos/twleung/sets/72157604908686388/">photos</a> from CommunityOne. At the rate that things are going, I will probably just do a single post on JavaOne. There are plenty of other people doing liveblogging, for those who need a bigger information flow.</p>
<p style="text-align: left;"><strong>Update</strong>: corrected Jim Edwards’ name. Thanks to @monkchips</p></div>
    </content>
    <updated>2008-05-07T16:30:43Z</updated>
    <category term="Sun"/>
    <category term="open source"/>
    <category term="communityone2008"/>
    <category term="twitter"/>
    <category term="zfs"/>
    <author>
      <name>Ted Leung</name>
    </author>
    <source>
      <id>http://www.sauria.com/blog</id>
      <link href="http://www.sauria.com/blog?flav=rss" rel="self" type="application/atom+xml"/>
      <link href="http://www.sauria.com/blog" rel="alternate" type="text/html"/>
      <subtitle>Open Source, Modern Programming Languages, OS X, Photography, and ...</subtitle>
      <title>Ted Leung on the Air</title>
      <updated>2008-05-08T16:40:36Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.swordstyle.com/blog2/?p=1619</id>
    <link href="http://www.swordstyle.com/blog2/?p=1619" rel="alternate" type="text/html"/>
    <title>Small Victories</title>
    <summary>Yesterday I successfully used map() and lambda without having to look @ the documentation (and yet I link to the documentation)!
Something like:

some_url = "http://www.foo.com/"
things = ["foo", "bar", "baz"]
urls = map(lambda x: some_url + x, things)
for u in urls:
    print u

UPDATE: Sorry based on the comment by ‘baoilleach’ I feel compelled to update [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Yesterday I successfully used <a href="http://docs.python.org/lib/built-in-funcs.html">map()</a> and <a href="http://docs.python.org/tut/node6.html#SECTION006750000000000000000">lambda</a> without having to look @ the documentation (and yet I link to the documentation)!</p>
<p>Something like:</p>
<pre class="python" name="code">some_url = "http://www.foo.com/"
things = ["foo", "bar", "baz"]
urls = map(lambda x: some_url + x, things)
for u in urls:
    print u
</pre>
<p><strong>UPDATE</strong>: Sorry based on the comment by ‘baoilleach’ I feel compelled to update the code above using  map() and lambda with a list comprehension as suggested.</p>
<pre class="python" name="code">some_url = "http://www.foo.com/"
things = ["foo", "bar", "baz"]
urls = [some_url + t for t in things]
for u in urls:
    print u
</pre>
<p>And don’t ask why I wasn’t using <a href="http://docs.python.org/lib/module-urlparse.html">urlparse</a>, I swear I have a good reason. </p>
<p>Another little thing that I think I was too dense too get was my misconception that lambda could only take one argument. I don’t know where I picked that up could be similar to <a href="http://www.zerbie.com/2008/04/04/a-test-suite-for-ice-cream-1/">someone thinking that tuples could only have two items</a> (I’m just kidding Pam) - two-ples, ya know? </p>
<p>Simple lambda influenced by what Mr. I says these days:</p>
<pre class="python" name="code">&gt;&gt;&gt; mine = lambda n: n.capitalize() + " is mine!"
&gt;&gt;&gt; mine("book")
'Book is mine!'
&gt;&gt;&gt; mine("shirt")
'Shirt is mine!'
</pre>
<p>But what about more than a single argument. Easy:</p>
<pre class="python" name="code">&gt;&gt;&gt; huh = lambda what, who: what.capitalize() + ", " + who.capitalize() + "?"
&gt;&gt;&gt; huh("cow", "daddy")
'Cow, Daddy?'
&gt;&gt;&gt; huh("cat", "mommy")
'Cat, Mommy?'
&gt;&gt;&gt;
</pre>
<p>I don’t use lambda’s very often, most of the time if I’m going to write a lambda I just write a function. Anyway, small victory for me.
</p></div>
    </content>
    <updated>2008-05-07T13:30:17Z</updated>
    <category term="Dad"/>
    <category term="Python"/>
    <author>
      <name>terryp</name>
    </author>
    <source>
      <id>http://www.swordstyle.com/blog2</id>
      <link href="http://www.swordstyle.com/blog2" rel="alternate" type="text/html"/>
      <link href="http://swordstyle.com/blog2/?feed=rss2&amp;cat=20" rel="self" type="application/rss+xml"/>
      <subtitle>Sucks To Your Assmar, Piggy!</subtitle>
      <title>Can You Defeat My Swordstyle?</title>
      <updated>2008-05-07T20:55:23Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lucumr.pocoo.org/cogitations/2008/05/07/jinja2-documentation-online/</id>
    <link href="http://lucumr.pocoo.org/cogitations/2008/05/07/jinja2-documentation-online/" rel="alternate" type="text/html"/>
    <title xml:lang="en">Jinja2 Documentation Online</title>
    <summary xml:lang="en">I now uploaded the documentation for Jinja2 to the website for those of you who are eager and want to play with it :-)  On jinja.pocoo.org you have now the choice to chose between Jinja1 and Jinja2.
The new docs are powered by Sphinx and Jinja2 with a custom templating bridge.
Read the documenation.</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>I now uploaded the documentation for Jinja2 to the website for those of you who are eager and want to play with it :-)  On <a href="http://jinja.pocoo.org/">jinja.pocoo.org</a> you have now the choice to chose between Jinja1 and Jinja2.</p>
<p>The new docs are <a href="http://sphinx.pocoo.org/">powered by Sphinx</a> and Jinja2 with a custom templating bridge.</p>
<p>Read <a href="http://jinja.pocoo.org/2/documentation/">the documenation</a>.</p></div>
    </content>
    <updated>2008-05-07T12:08:16Z</updated>
    <published>2008-05-07T12:08:16Z</published>
    <category scheme="http://lucumr.pocoo.org/cogitations" term="jinja"/>
    <category scheme="http://lucumr.pocoo.org/cogitations" term="announcement"/>
    <author>
      <name>Armin Ronacher</name>
      <uri>http://lucumr.pocoo.org/</uri>
    </author>
    <source>
      <id>http://lucumr.pocoo.org/cogitations/feed/atom/</id>
      <link href="http://lucumr.pocoo.org/cogitations" rel="alternate" type="text/html"/>
      <link href="http://lucumr.pocoo.org/cogitations/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Armin Ronacher thinking</subtitle>
      <title xml:lang="en">Lucumr Cogitations</title>
      <updated>2008-05-07T12:08:16Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.oluyede.org/blog/?p=360</id>
    <link href="http://feeds.feedburner.com/~r/ASongForTheLovers/~3/285324091/" rel="alternate" type="text/html"/>
    <title>Twitter page for PyCon Italy</title>
    <summary>I opened a Twitter account for the PyCon Italy conference. I will try to keep updated as soon as things come up and the conference starts on Friday.

http://twitter.com/pyconit</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I opened a <a href="http://twitter.com/pyconit">Twitter account</a> for the PyCon Italy conference. I will try to keep updated as soon as things come up and the conference starts on Friday.</p>

<p><a href="http://twitter.com/pyconit">http://twitter.com/pyconit</a></p>
<img height="1" src="http://feeds.feedburner.com/~r/ASongForTheLovers/~4/285324091" width="1"/></div>
    </content>
    <updated>2008-05-07T12:05:59Z</updated>
    <category term="Uncategorized"/>
    <category term="pycon"/>
    <category term="Python"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.oluyede.org/blog/2008/05/07/twitter-page-for-pycon-italy/</feedburner:origlink>
    <author>
      <name>Lawrence</name>
    </author>
    <source>
      <id>http://www.oluyede.org/blog</id>
      <link href="http://www.oluyede.org/blog" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/ASongForTheLovers" rel="self" type="application/atom+xml"/>
      <subtitle>Everything considered harmful</subtitle>
      <title>A song for the lovers</title>
      <updated>2008-05-07T12:06:19Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://lucumr.pocoo.org/cogitations/2008/05/07/simple-batch-function-for-python/</id>
    <link href="http://lucumr.pocoo.org/cogitations/2008/05/07/simple-batch-function-for-python/" rel="alternate" type="text/html"/>
    <title xml:lang="en">Simple batch function for Python</title>
    <summary xml:lang="en">Often I have an iterable i want to group.  For example a list of integers and i want to process two at once.  That’s a pretty nice idom I found in the documentation translated to itertools:

from itertools import izip, repeat

def batch(iterable, n):
    return izip(*repeat(iter(iterable), n))


Use it like that:

&gt;&gt;&gt; for key, [...]</summary>
    <content type="xhtml" xml:lang="en"><div xmlns="http://www.w3.org/1999/xhtml"><p>Often I have an iterable i want to group.  For example a list of integers and i want to process two at once.  That’s a pretty nice idom I found in the documentation translated to itertools:</p>
<div class="highlight">
<pre><span class="k">from</span> <span class="nn">itertools</span> <span class="k">import</span> <span class="n">izip</span><span class="p">,</span> <span class="n">repeat</span>

<span class="k">def</span> <span class="nf">batch</span><span class="p">(</span><span class="n">iterable</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">izip</span><span class="p">(</span><span class="o">*</span><span class="n">repeat</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="n">iterable</span><span class="p">),</span> <span class="n">n</span><span class="p">))</span>
</pre>
</div>
<p>Use it like that:</p>
<div class="highlight">
<pre><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">([</span><span class="mf">1</span><span class="p">,</span> <span class="mf">2</span><span class="p">,</span> <span class="mf">3</span><span class="p">,</span> <span class="mf">4</span><span class="p">],</span> <span class="mf">2</span><span class="p">):</span>
<span class="gp">..<span/>. </span> <span class="k">print</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span>
<span class="gp">..<span/>. </span>
<span class="go">1 2</span>
<span class="go">3 4</span>
</pre>
</div></div>
    </content>
    <updated>2008-05-07T10:44:11Z</updated>
    <published>2008-05-07T10:44:11Z</published>
    <category scheme="http://lucumr.pocoo.org/cogitations" term="snippets"/>
    <category scheme="http://lucumr.pocoo.org/cogitations" term="python"/>
    <author>
      <name>Armin Ronacher</name>
      <uri>http://lucumr.pocoo.org/</uri>
    </author>
    <source>
      <id>http://lucumr.pocoo.org/cogitations/feed/atom/</id>
      <link href="http://lucumr.pocoo.org/cogitations" rel="alternate" type="text/html"/>
      <link href="http://lucumr.pocoo.org/cogitations/feed/atom/" rel="self" type="application/atom+xml"/>
      <subtitle xml:lang="en">Armin Ronacher thinking</subtitle>
      <title xml:lang="en">Lucumr Cogitations</title>
      <updated>2008-05-07T12:08:16Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://ramblings.timgolden.me.uk/2008/05/07/london-python-meetup-may-2008/</id>
    <link href="http://ramblings.timgolden.me.uk/2008/05/07/london-python-meetup-may-2008/" rel="alternate" type="text/html"/>
    <title>London Python Meetup May 2008</title>
    <summary>Thanks as always to Simon Brunning for organising another meetup at Thoughtworks, who generously funded the beer &amp; pizza as well. Whether by planning or force of circumstances I’m not sure, but we started with half-a-dozen lightning talks before moving on to the main speaker of the evening. Simon made it clear up-front that overrunning [...]</summary>
    <updated>2008-05-07T10:31:50Z</updated>
    <category term="Python"/>
    <author>
      <name>tim</name>
    </author>
    <source>
      <id>http://ramblings.timgolden.me.uk</id>
      <link href="http://ramblings.timgolden.me.uk" rel="alternate" type="text/html"/>
      <link href="http://ramblings.timgolden.me.uk/category/tech/python/feed/" rel="self" type="application/rss+xml"/>
      <subtitle>The ramblings of Tim Golden</subtitle>
      <title>Moderate Realism » Python</title>
      <updated>2008-05-07T13:32:35Z</updated>
    </source>
  </entry>

  <entry xml:lang="fr">
    <id>http://www.defuze.org/archives/13-guid.html</id>
    <link href="http://www.defuze.org/archives/13-Redmine-vs-Trac.html" rel="alternate" type="text/html"/>
    <link href="http://creativecommons.org/licenses/by/1.0/" rel="license"/>
    <title>Redmine vs Trac</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Following <a href="http://www.defuze.org/archives/12-From-subversion-to-mercurial.html">my last post</a> in regards to a move from subversion to mercurial I received many interesting comments. One key aspect that those comments showed was that no matter which DCVS I would use it would be critical to me that it could be interfaced with <a href="http://trac.edgewall.org/" title="Trac">Trac</a> since that's the tool I'm using to manage my projects. <a href="http://www.defuze.org/archives/12-From-subversion-to-mercurial.html#c2469">Jim Jones</a> hinted that I could also see the problem the other way around and decide to change for a different software management tool that would be better at handling the DCVS I'd choose. He led me to discover <a href="http://www.redmine.org/" title="Redmine">Redmine</a>. <br/>
<br/>
I wasn't very motivated by the idea of migrating from Trac to a different tool. Many reasons to that: <br/>
<br/>
1. Trac has answered most of my needs until now. <br/>
2. It's well spread and has an active community. <br/>
3. I'm damn lazy when it comes to such mundane task.<br/>
<br/>
Nonetheless Jim had made me curious and so I did give a look at the <a href="http://www.redmine.org/wiki/redmine/Features" title="Redmine features">Redmine's features</a> and I wasn't disappointed. It basically supports what Trac offers with some more interesting built-in features like Gantt chart, multiple projects, forums, DCVS, etc. Of course most of these features could be integrated to Trac easily thanks to the <a href="http://trac-hacks.org/" title="Trac plugins">community</a> (although I can't tell whether or not multiple projects in one Trac instance is feasible).<br/>
<br/>
That being said not everything is perfect in this world and while discussing about this topic on the #kamaelia IRC channel, Matt Hammond, one of the <a href="http://kamaelia.sourceforge.net/">Kamaelia</a> long time project developer, linked me to a note from <a href="http://changelog.complete.org/authors/1-John-Goerzen">John Goerzen</a> indicating that <a href="http://changelog.complete.org/posts/696-Thoughts-on-Redmine.html">social considerations</a> were sometimes as important as technical ones.<br/>
<br/>
I guess you understand that I'm still struggling on which decision to make. Nevertheless redmine looks like a great product and if you're not using any software management tool yet I'm pretty sure you want to give a close look at it.</div>
    </content>
    <updated>2008-05-07T08:29:43Z</updated>
    <category term="python"/>
    <author>
      <name>Sylvain Hellegouarch</name>
      <email>nospam@example.com</email>
    </author>
    <source>
      <id>http://www.defuze.org/</id>
      <logo>http://www.defuze.org/templates/default/img/s9y_banner_small.png</logo>
      <link href="http://www.defuze.org/" rel="alternate" type="text/html"/>
      <link href="http://www.defuze.org/feeds/categories/3-python.rss" rel="self" type="application/rss+xml"/>
      <title>deFuze.org - python</title>
      <updated>2008-05-08T17:56:22Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://www.kunxi.org/?p=258</id>
    <link href="http://feeds.kunxi.org/~r/rtl/~3/285155690/" rel="alternate" type="text/html"/>
    <title>PyAWS 0.3.0 released</title>
    <summary>After 6 months, PyAWS 0.3.0 is eventually released. You can check out the tar ball here.
I almost abandoned this project as I found the XSLT approach is more appealing: ideal for AJAX application and easy to integrate via simplejson in the server side. Furthermore, I joined Microsoft, moved to Canada, and had less spare time [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>After 6 months, <a href="http://trac2.assembla.com/pyaws">PyAWS</a> 0.3.0 is eventually released. You can check out the tar ball <a href="http://trac2.assembla.com/pyaws/attachment/wiki/WikiStart/pyaws-0.3.0.tar.gz">here</a>.</p>
<p>I almost abandoned this project as I found the <a href="http://www.kunxi.org/archives/2007/09/learning-django-by-example2-show-me-your-data/">XSLT approach</a> is more appealing: ideal for AJAX application and easy to integrate via <a href="http://code.google.com/p/simplejson/">simplejson</a> in the server side. Furthermore, I joined Microsoft, moved to Canada, and had less spare time to work on less interested hobby work. The last straw is the unexpected complicity of the the BIG FAT refactory. </p>
<p>Until recently, I got the email from one PyAWS user, he reported a bug on unexpected result of ListLookup operation. It is so good to hear from some users that this library still benefits somebody in the world. So I picked it up, completed the refactory and released it today. The library still <em>in active development</em>, the code style stinks, the document sucks and most of all, testing is lacking — I would explain it for a little bit here.</p>
<p>I am a big fan of <a href="http://feeds.kunxi.org/en.wikipedia.org/wiki/Test-driven_development">TDD</a> personally, and we have respected testing troops to help building our products in MSFT as well. However, the complexity of PyAWS is far beyond my capacity: there are tens of operations and twenties of response groups, and response groups may combine, that make it extremely difficult to cover all the paths. To make it worse, the AWS is dynamic, there is no guarantee that the consecutive queries would return the same result. I may consider automation to facilitate the unit tests. If you have better ideas, please leave a comment here.</p>
<p class="akst_link"><a class="akst_share_link" href="http://www.kunxi.org/?p=258&amp;akst_action=share-this" id="akst_link_258" rel="nofollow" title="E-mail this, post to del.icio.us, etc.">Share This</a>
</p><img height="1" src="http://feeds.kunxi.org/~r/rtl/~4/285155690" width="1"/></div>
    </content>
    <updated>2008-05-07T06:18:43Z</updated>
    <category term="Development"/>
    <category term="Web"/>
    <category term="pyaws"/>
    <category term="python"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.kunxi.org/archives/2008/05/pyaws-030-released/</feedburner:origlink>
    <author>
      <name>bookstack</name>
    </author>
    <source>
      <id>http://www.kunxi.org</id>
      <link href="http://www.kunxi.org" rel="alternate" type="text/html"/>
      <link href="http://feeds.kunxi.org/rtl" rel="self" type="application/atom+xml"/>
      <subtitle>Yet another code monkey blog.</subtitle>
      <title>Refactor the Life</title>
      <updated>2008-05-07T06:18:43Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>urn:uuid:b69f2ed3-6b2c-426c-a047-e1edbb050d08</id>
    <link href="http://groovie.org/articles/2008/05/06/most-bizarre-git-service-and-other-stupid-rails-powered-businesses" rel="alternate" type="text/html"/>
    <title>Most bizarre Git service and other stupid Rails powered "businesses"</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I can’t help but get totally baffled when I see a <a href="http://github.com/plans">business model like this</a>.</p>


	<p>Yes, that’s right, you can pay for the privilege of keeping a copy of your <strong>distributed</strong> version control system (DVCS) <strong>private</strong> repositories on someone else’s machines. You also get to pay depending on how many people you want to allow to collaborate on it.</p>


	<p>Nevermind that one of the <b>entire points of a <span class="caps">DVCS</span></b> is that you <strong>do <span class="caps">NOT</span></strong> need a central repository. Does anyone actually work at a “Large Company” (as the page indicates) that would be stupid enough to pay $100/month so they can put all their proprietary and very personal code repositories on a third party web service?</p>


	<p>So what are you paying for? Well, to start with, they have awesome integration with <a href="http://lighthouseapp.com/">Lighthouse</a>, since we all know there’s no decent free open-source issue tracking system… <strong>cough</strong> <a href="http://trac.edgewall.org/">trac</a> <strong>cough</strong> <a href="http://roundup.sourceforge.net/">roundup</a> <strong>cough</strong>. Oh wait, since there’s absolutely no simple web-based issue tracking systems, let’s have another <a href="http://sera.lighthouseapp.com/plans">slick business model</a> to get people to pay for a stripped down Trac (but this time with a really pretty UI)!</p>


	<p>What do these sites have in common? Rails, “look ma, I can copy-paste the business plan too” pricing models, and some good graphic designers at the helm. There also seems to be an interesting amount of promotion between these sites, as well as a nice <a href="http://www.loudthinking.com/posts/24-gits-avalanche">blog post from the Rails creator himself</a> promoting GitHub. I’m sure no one who has read <a href="http://www.zedshaw.com/rants/rails_is_a_ghetto.html">this rant</a> should be surprised though.</p>


	<p>I only hope that no one starts to believe that a <span class="caps">DVCS</span> actually requires these “please pay” copies of their <span class="caps">DVCS</span> repo.</p></div>
    </summary>
    <updated>2008-05-07T03:18:21Z</updated>
    <category term="Rants"/>
    <author>
      <name>ben</name>
    </author>
    <source>
      <id>http://groovie.org</id>
      <link href="http://groovie.org" rel="alternate" type="text/html"/>
      <link href="http://www.groovie.org/index.xml" rel="self" type="application/rss+xml"/>
      <subtitle>Code, Thoughts, and Misc Debris</subtitle>
      <title>Groovie</title>
      <updated>2008-05-09T15:04:02Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://nedbatchelder.com/blog/200805/so_that_happened.html</id>
    <link href="http://nedbatchelder.com/blog/200805/so_that_happened.html" rel="alternate" type="text/html"/>
    <title>So that happened... (Digg, Slashdot, and WebFaction)</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Last Thursday, I posted the <a href="http://nedbatchelder.com/blog/200805/css_homer_animated.html">animated CSS Homer</a>,
and it was a big hit. Friday morning, it was
<a class="offsite" href="http://digg.com/programming/Homer_Simspon_drawn_in_CSS">popular on Digg</a>
(over 3000 diggs). The resulting Digg effect was enough for my hosting provider
to shut off my site.</p><p>I was a cheapskate when I bought my hosting plan from
<a class="offsite" href="http://totalchoicehosting.com">TotalChoice Hosting</a>, looking only
for low cost.  Their reaction seemed aggravatingly uninformed.  The support guy kept
referring to the traffic spike as "an attack".  I tried to explain that it was
in fact a success, and that they had failed to help me deal with that success.
I could understand needing to protect their widely shared servers, but at least
they could speak knowledgeably about the event.</p><p>He also called it a DDOS, which it was, but only if it stands for
<b>D</b>istributed <b>D</b>esirability <b>O</b>f <b>S</b>tuff.</p><p>Further angering me was the fact that my email was unavailable, since they
simply shut off my entire account. Also, there was a misconfiguration in the 403
page they were serving, so the traffic logs showed every request resulting in
another request for a non-existent 403.shtml page. TotalChoice will be the first
to point out that they are not the right service for a high-traffic site, but
they should at least be conversant in the language of their newly disappointed
customers, and know how to correctly shut off accounts.</p><p>Saturday morning, the traffic had subsided and the site was reactivated, and
I figured I could spend some time researching options for a new provider.
<a class="offsite" href="http://slicehost.com">Slicehost</a> seemed good if I wanted to go the
VPS route, though sysadmin is not my interest or forte, so I was leery of taking
on all the responsibility for the machine, however virtual it was.</p><p><a class="offsite" href="http://webfaction.com?affiliate=nedbat">WebFaction</a> seemed the best choice of the
shared providers, with supported Django, and many Django sites hosted.</p><p>I was <a class="offsite" href="http://susansenator.com/blog/2008/05/sneak-preview-of-party.html">away for the weekend</a>,
so I wasn't actively working on the problem.  My site was up, I could now plan
my next move.</p><p>At least, until <a class="offsite" href="http://tech.slashdot.org/article.pl?sid=08/05/05/0047225">I got
slashdotted</a>. Now the site was really shut down, and TotalChoice wasn't too
pleased. The only way back online was with a new provider.
<a class="offsite" href="http://webfaction.com?affiliate=nedbat">WebFaction</a> got the gig,
because I don't need complete control over a machine. A shared account with
shell access and supported Django would be great. I looked in their forum for
Digg effect issues, and saw intelligent conversation. I had dropped them a line
outlining my situation, and they made clear that they had dealt with it before
and would work with me if such good fortune arose again, but that they would
shut down sites if it was the only way to protect the shared servers. In a way,
that last caveat reassured me. If they had made a blanket claim that their
servers were Digg-proof, it would have smelled of naive or dishonest admins.</p><p>Monday I signed up, switched over my domains nameservers, re-uploaded my site,
and I was back online.  After getting TotalChoice to reactivate my old site, I
transfered the blog comments, and now everything should be back as good as new.</p><p>It would have been nice to survive the Digg and Slashdotting. Maybe with WebFaction
I will next time.  I've got a new appreciation for slimming down the server needs
of my blog.  The avatars in comments are something to think about: the Homer
post has 70 comments, meaning each page load also generates 70 image requests.  One
possibility is to offload the image to another service.
</p><p>The irony in all this is that although I started with TotalChoice because of
how inexpensive they were, I'm not paying much more for the WebFaction account.
</p></div>
    </summary>
    <updated>2008-05-07T00:23:57Z</updated>
    <source>
      <id>http://nedbatchelder.com/blog</id>
      <author>
        <name>Ned Batchelder</name>
      </author>
      <link href="http://nedbatchelder.com/blog" rel="alternate" type="text/html"/>
      <link href="http://www.nedbatchelder.com/blog/rss.xml" rel="self" type="application/rdf+xml"/>
      <subtitle>Ned Batchelder's personal blog.</subtitle>
      <title>Ned Batchelder's blog</title>
      <updated>2008-05-07T02:04:56Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://python.genedrift.org/?p=101</id>
    <link href="http://feeds.feedburner.com/~r/BeginningPythonForBioinformatics/~3/284987787/" rel="alternate" type="text/html"/>
    <title>Code repository</title>
    <summary>I am transferring the current repository, which is “hosted” in a static page on th blog, to a Git repository on github.com. I am posting soon a quick guide on how to access it. I am also making all relevant entries from the blog into stand alone html pages for off-line browsing.
Anyone with Git experience [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I am transferring the current repository, which is “hosted” in a static page on th blog, to a Git repository on <a href="http://github.com">github.com</a>. I am posting soon a quick guide on how to access it. I am also making all relevant entries from the blog into stand alone html pages for off-line browsing.</p>
<p>Anyone with Git experience the link to the repository is <a href="http://github.com/nuin/beginning-python-for-bioinformatics/tree">here</a> (not many commits yet, but it is coming).
</p><div id="zemanta-pixie" style="margin: 5px 0pt; width: 100%;"><a href="http://www.zemanta.com/" id="zemanta-pixie-a" title="Zemified by Zemanta"><img id="zemanta-pixie-img" src="http://img.zemanta.com/pixie.png?x-id=e8381a4c-60e2-423f-a07e-6050da5476ef" style="border: medium none ; float: right;"/></a></div>

<p><a href="http://feeds.feedburner.com/~a/BeginningPythonForBioinformatics?a=vSbQ4H"><img border="0" src="http://feeds.feedburner.com/~a/BeginningPythonForBioinformatics?i=vSbQ4H"/></a></p><img height="1" src="http://feeds.feedburner.com/~r/BeginningPythonForBioinformatics/~4/284987787" width="1"/></div>
    </content>
    <updated>2008-05-07T00:01:22Z</updated>
    <category term="off topic"/>
    <category term="Git"/>
    <category term="Github"/>
    <category term="Repository"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://python.genedrift.org/2008/05/06/code-repository/</feedburner:origlink>
    <author>
      <name>Paulo Nuin</name>
    </author>
    <source>
      <id>http://python.genedrift.org</id>
      <link href="http://python.genedrift.org" rel="alternate" type="text/html"/>
      <link href="http://creativecommons.org/licenses/by-nd/3.0/" rel="license"/>
      <link href="http://feeds.feedburner.com/BeginningPythonForBioinformatics" rel="self" type="application/atom+xml"/>
      <subtitle>a step-by-step guide to create Python applications in bioinformatics</subtitle>
      <title>Beginning Python for Bioinformatics</title>
      <updated>2008-05-08T20:31:12Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-3776799.post-1060133405380091626</id>
    <link href="http://feeds.feedburner.com/~r/SeanMcGrath/~3/284825403/intranets-have-eyeballs-too.html" rel="alternate" type="text/html"/>
    <title>Intranets have eyeballs too</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.itworld.com/Tech/2427/intranets-advertising-nlstipsm-080506/index.html">Intranets have eyeballs too</a></div>
    </summary>
    <updated>2008-05-06T18:36:00Z</updated><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://seanmcgrath.blogspot.com/2008/05/intranets-have-eyeballs-too.html</feedburner:origlink>
    <author>
      <name>Sean</name>
      <email>noreply@blogger.com</email>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-3776799</id>
      <author>
        <name>Sean</name>
        <email>noreply@blogger.com</email>
      </author>
      <link href="http://seanmcgrath.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/SeanMcGrath" rel="self" type="application/atom+xml"/>
      <title>Sean McGrath</title>
      <updated>2008-05-09T13:32:40Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.ianbicking.org/2008/05/06/the-gpl-and-principles/</id>
    <link href="http://blog.ianbicking.org/2008/05/06/the-gpl-and-principles/" rel="alternate" type="text/html"/>
    <title>The GPL and Principles</title>
    <summary>For the most part by the time I finished writing my last article on licensing I had mostly convinced myself that the GPL isn’t a practical license for most projects.  That is, outcomes when using the GPL aren’t likely to be any better than outcomes using a permissive license, except for certain kinds of [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div class="document">
<p>For the most part by the time I finished writing my <a class="reference external" href="http://blog.ianbicking.org/2008/05/05/choosing-a-license/">last article on licensing</a> I had mostly convinced myself that the GPL isn’t a practical license for most projects.  That is, outcomes when using the GPL aren’t likely to be any better than outcomes using a permissive license, except for certain kinds of projects, mostly projects involving big faceless companies, and I’d just as soon avoid such projects anyway.</p>
<p>My own thinking on this has changed over the years in part because of a greater sense of humility about what I produce.  I’m really not that worried about people stealing my work because I don’t think that theft would be of much value.  But also because I realize that the value in software is not so much in the code as in the process.  The process is what is valuable, particularly for open source, and licensing doesn’t really address issues of process.</p>
<p>As an example, if I’m uncomfortable with how some member of an open source community is using the code, or the community, I will be much more effective by dealing with that head-on, talking with that member, or even confronting them if it’s really necessary.  If you give someone an unwelcoming attitude, they’ll probably go away.  The license doesn’t need to be your gatekeeper.  It’s not a particularly effective gatekeeper anyway.</p>
<p>Another change is perhaps a more reasonable valuation of code.  There was a time when people wanted to protect their intellectual property.  Even some non-software company might have gotten the idea that it should own the code it contracts someone else to write, under a proprietary license, so they could sell that software later.  That anyone would care to buy it was always an illusion, but the illusion is a little more obvious these days.</p>
<p>One value of the <a class="reference external" href="http://www.gnu.org/licenses/gpl.html">GPL</a> that I do want to acknowledge is its expression of <em>values</em>.  It makes this explicit:</p>
<blockquote>
<p>When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.</p>
<p>To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.</p>
</blockquote>
<p>But the GPL does more than just its text: adopting the GPL is a statement of principle on the part of the original authors, of the people who adopt the project, and of the people who later help maintain the project.  It is a statement that freedom is valued and that it is valued in a universal sense, not just in a personal or isolated sense.</p>
<p>This is implicit, not explicit, in the choice of license, but despite that I see this pattern in projects.  Projects that choose the GPL are more likely to engender a spirit of openness and sharing.  Not of the core project itself — both GPL and permissively licensed projects accomplish this just fine so long as they are properly maintained, and their success is far more related to how the project is managed than the licensing.  But I see the difference in the sofware that grows up around the project: extensions, complementary projects, documentation.</p>
<p>Maybe this is because of licensing.  The license filters the community, and the people who are left in a GPL project are all at least open to sharing.  But more than that, I think it puts people in the right state of mind to share.  The project feels more principled, the participation is based less on pragmatism and more on optimism.  And there’s always people coming into open source who haven’t really figured out why or what they want to get out of it.  Presenting them with the principles of Free Software influences their decision.  (This issue has <a class="reference external" href="http://www.gnu.org/philosophy/open-source-misses-the-point.html">caused some debate about terminology</a>.)</p>
<p>With all that said, you don’t need the GPL to present the principles of a project.  It’s certainly the easiest way to do so.  The GPL is shorthand for a rich set of principles and ideals.  But it’s shorthand for people who are already in the know.  The ideas need to be reiterated and explained and reconsidered to stay relevant.  I think a project might do more good with an explicit statement of principles.  With that in place the licensing might not matter so much.</p>
</div></div>
    </content>
    <updated>2008-05-06T18:08:14Z</updated>
    <category term="Politics"/>
    <category term="Programming"/>
    <author>
      <name>Ian Bicking</name>
    </author>
    <source>
      <id>http://blog.ianbicking.org</id>
      <link href="http://blog.ianbicking.org" rel="alternate" type="text/html"/>
      <link href="http://blog.ianbicking.org/feeds/new_pages.xml" rel="self" type="application/rss+xml"/>
      <title>Ian Bicking: a blog</title>
      <updated>2008-05-06T18:09:41Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://jessenoller.com/2008/05/06/pep-370-per-user-site-packages-directory-accepted/</id>
    <link href="http://feeds.feedburner.com/~r/Jessenollercom/~3/284793412/" rel="alternate" type="text/html"/>
    <title>PEP 370 Per user site-packages directory - accepted.</title>
    <summary>Guido just shot out email to the dev list(s) announcing he has accepted Christian Helmes' Per user site-packages directory PEP. This is awesome as it will provide a lot of functionality for those of us who don't want to sully the system package tree with modules we install. It could also help simplify things like [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>Guido just shot out email to the dev list(s) announcing he has accepted Christian Helmes' <a href="http://www.python.org/dev/peps/pep-0370/" target="_blank">Per user site-packages directory PEP</a>. This is awesome as it will provide a lot of functionality for those of us who don't want to sully the system package tree with modules we install. It could also help simplify things like zc.buildout and virtualenv.py</p>
<p>For giggles, you should read the <a href="http://mail.python.org/pipermail/python-dev/2008-May/079002.html" target="_blank">discussion thread</a> - please ignore <a href="http://mail.python.org/pipermail/python-dev/2008-May/079119.html" target="_blank">my less-than-caffenated</a> contribution to it.</p></div>
    </content>
    <updated>2008-05-06T17:38:43Z</updated>
    <category term="Programming"/>
    <category term="Python"/><feedburner:origlink xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://jessenoller.com/2008/05/06/pep-370-per-user-site-packages-directory-accepted/</feedburner:origlink>
    <author>
      <name>jesse</name>
    </author>
    <source>
      <id>http://jessenoller.com</id>
      <link href="http://jessenoller.com" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/Jessenollercom" rel="self" type="application/atom+xml"/>
      <subtitle>python, programming and other things</subtitle>
      <title>jessenoller.com</title>
      <updated>2008-05-07T19:03:47Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-8212254010436871241.post-2070275067972654709</id>
    <link href="http://mockit.blogspot.com/2008/05/meet-dobbin.html" rel="alternate" type="text/html"/>
    <title>Meet Dobbin</title>
    <summary type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">If you've been with Zope since at least 2004, chances are you've heard about Ape, the adaptable persistence engine, which allows you to create a ZODB mount point that uses an SQL database as storage [1]. Ape uses native column types to store attributes, if a schema is provided, else the attributes are stored using the python pickle format.<br/><br/>Enter <a href="http://pypi.python.org/pypi/z3c.dobbin">Dobbin</a>, an adaptable persistence engine which does away with the complexity of Ape by relying on SQLAlchemy for relational storage, and zope.schema for schema declaration [2]. The codebase is slim, and developer documentation is provided as doctests.<br/><br/>Tables are created on-the-fly with a 1:1 correspondence to interfaces with no inheritance (minimal interface). As such, objects are modelled as a join between the interfaces it implements. This approach allows using the database as a catalog in an way that's fully integrated with zope.schema. As an example, listing folder contents is a matter of acquiring the joined mapper of ILocation and IDCDescriptiveProperties, and doing a select by _parent_.<br/><br/>[1] Florent Guillaume on <a href="http://blogs.nuxeo.com/sections/blogs/florent_guillaume/2005_08_11_object_relational">object-relational mapping in Zope</a><br/>[2] Project page for <a href="http://pypi.python.org/pypi/z3c.dobbin">z3c.dobbin</a></div>
    </summary>
    <updated>2008-05-06T15:32:00Z</updated>
    <author>
      <name>malthe</name>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-8212254010436871241</id>
      <author>
        <name>malthe</name>
      </author>
      <link href="http://mockit.blogspot.com/" rel="alternate" type="text/html"/>
      <link href="http://feeds.feedburner.com/MockIt" rel="self" type="application/atom+xml"/>
      <title>Mock It!</title>
      <updated>2008-05-07T18:35:10Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.artima.com/weblogs/viewpost.jsp?thread=230157</id>
    <link href="http://www.artima.com/weblogs/viewpost.jsp?thread=230157" rel="alternate" type="text/html"/>
    <title>Unicode misinformation</title>
    <summary>It's great that Google is moving to Unicode 5.1 and that UTF-8 is so popular, but I wish they'd get their terms straight!</summary>
    <updated>2008-05-06T15:30:15Z</updated>
    <source>
      <id>http://www.artima.com/weblogs/index.jsp?blogger=goodger</id>
      <author>
        <name>David Goodger</name>
      </author>
      <link href="http://www.artima.com/weblogs/index.jsp?blogger=goodger" rel="alternate" type="text/html"/>
      <link href="http://www.artima.com/weblogs/feeds/bloggers/goodger.rss" rel="self" type="application/rdf+xml"/>
      <subtitle>Artima Weblogs is a community of bloggers posting on a wide range of topics of interest to software developers.</subtitle>
      <title>David Goodger's Weblog</title>
      <updated>2008-05-06T15:30:15Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://jtauber.com/blog/2008/05/06/lotro_on_vmware_fusion</id>
    <link href="http://jtauber.com/blog/2008/05/06/lotro_on_vmware_fusion/" rel="alternate" type="text/html"/>
    <title>LOTRO on VMware Fusion</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>I've hardly played Lord of the Rings Online at all the last six months and not at all the last three.
</p>
<p>
My only copy of Windows is a <a class="external" href="http://vmware.com/products/fusion/">VMware Fusion</a> instance and LOTRO doesn't work on VMware Fusion. That is...until now.
</p>
<p>
I was excited to hear that the new VMware Fusion 2.0 beta 1 supported pixel shaders in DirectX 9 and I wondered if that meant LOTRO would work. I downloaded the beta, which JUST WORKED with my existing VM (which wasn't even shut down). I spent an hour or so updating LOTRO but my first attempt to start the game failed.
</p>
<p>
The error message was different, though. Instead of being about the graphics adapter it was a complaint about a Game Error 127. A Google search revealed <a class="external" href="http://forums.lotro.com/showthread.php?t=128648">this post</a> and so I tried making the config change they suggested there.
</p>
<p>
And BINGO! I can now run Lord of the Rings Online on VMware Fusion!
</p>
<p>
I haven't tweaked the settings yet to see if it's playable but I'm hopeful.
</p>
<p>
VMware, you are amazing!
</p>
<p>
<b>UPDATE</b>: I played LOTRO for a little bit tonight. I had to turn sound off as it was too jittery. Graphics were fine, though, on Low detail and low resolution. The mouse look problem mentioned in the comments was easily fixed by just going to options and changing the mouse look sensitivity.</p></div>
    </content>
    <updated>2008-05-06T08:21:22Z</updated>
    <published>2008-05-06T08:19:36Z</published>
    <source>
      <id>http://jtauber.com/atom/full</id>
      <author>
        <name>James Tauber</name>
      </author>
      <link href="http://jtauber.com/atom/full" rel="self" type="application/atom+xml"/>
      <link href="http://jtauber.com/blog/" rel="alternate" type="text/html"/>
      <title>James Tauber's Blog</title>
      <updated>2008-05-06T08:21:22Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-us">
    <id>http://www.brunningonline.net/simon/blog/2240@http://www.brunningonline.net/simon/blog/</id>
    <link href="http://www.brunningonline.net/simon/blog/archives/002240.html" rel="alternate" type="text/html"/>
    <title>Python Meetup Tonight!</title>
    <summary>Python Meetup in London tonight. See you there!...</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://announce.londonpython.org.uk/2008/04/15/london-python-meetup-tuesday-may-the-5th/">Python Meetup in London tonight</a>. See you there!</p></div>
    </content>
    <updated>2008-05-06T07:22:16Z</updated>
    <category term="Python"/>
    <source>
      <id>http://www.brunningonline.net/simon/blog/</id>
      <author>
        <name>Small Values of Cool - Simon Brunning</name>
        <email>simon.brunning+smallvaluescomment@gmail.com</email>
      </author>
      <link href="http://www.brunningonline.net/simon/blog/" rel="alternate" type="text/html"/>
      <link href="http://www.brunningonline.net/simon/blog/index-P.xml" rel="self" type="application/rss+xml"/>
      <rights>Copyright 2008</rights>
      <subtitle>Simon Brunning - stuff that I find interesting</subtitle>
      <title>Small Values of Cool</title>
      <updated>2008-05-07T14:42:11Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://jtauber.com/blog/2008/05/06/reusable_django_apps_and_introducing_tabula_rasa</id>
    <link href="http://jtauber.com/blog/2008/05/06/reusable_django_apps_and_introducing_tabula_rasa/" rel="alternate" type="text/html"/>
    <title>Reusable Django Apps And Introducing Tabula Rasa</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>The excellent 42 Topics blog has a post entitled <a class="external" href="http://42topics.com/blog/2008/05/popularizing-django-or-reusable-apps-considered-harmful/">Popularizing Django —  Or Reusable apps considered harmful</a> which makes (or attempts to make) the case for packaged apps over reusable apps.
</p>
<p>
He raises some good points, although of course the packaged apps he's talking about still use reusable apps so he's not actually talking about there being a problem with reusable apps per se, just that there should be packaged apps <b>as well</b>.
</p>
<p>
I mentioned the <a class="external" href="http://groups.google.com/group/django-hotclub">django-hotclub group</a> in a comment on that post as I'd really like the discussion to take place there.
</p>
<p>
I also, in that comment, mention something I'm working on tentatively  called Tabula Rasa. (I'm toying with a Greek name rather than Latin but something tells me people are more comfortable with <i>tabula</i> rather than <i>grammateion</i>)
</p>
<p>
Basically, the goal of Tabula Rasa is an out-of-the-box Django-based website with everything <b>but</b> the domain-specific functionality.
</p>
<p>
So far it's just my new <a href="http://jtauber.com/django-email-confirmation">django-email-confirmation</a> app tied together with password change and reset, login/logout, with the beginnings of a tab-style UI. There's a ton more I want to refactor out of my existing websites to put into it as well as adding support for OpenID and the stuff I'm starting to do for <a href="http://jtauber.com/django-friends">django-friends</a>.
</p>
<p>
Even if one doesn't use Tabula Rasa as the starting point of a website, I'm hoping it will prove very useful for another goal, namely a "host" project to develop and tryout reusable apps.
</p>
<p>
One of the challenges I know I've always had with writing or trying out reusable apps is the need for a project to provide the scaffolding.
</p>
<p>
So Tabula Rasa will hopefully serve that dual purpose.
</p>
<p>
The initial code is available at <a class="external" href="http://code.google.com/p/django-hotclub/">http://code.google.com/p/django-hotclub/</a> under /trunk/projects/tabularasa
</p>
<p>
I hope to have a running instance online soon.
</p></div>
    </content>
    <updated>2008-05-06T05:52:43Z</updated>
    <published>2008-05-06T05:49:35Z</published>
    <source>
      <id>http://jtauber.com/atom/full</id>
      <author>
        <name>James Tauber</name>
      </author>
      <link href="http://jtauber.com/atom/full" rel="self" type="application/atom+xml"/>
      <link href="http://jtauber.com/blog/" rel="alternate" type="text/html"/>
      <title>James Tauber's Blog</title>
      <updated>2008-05-06T08:21:22Z</updated>
    </source>
  </entry>

  <entry xml:lang="en-US">
    <id>http://www.oreillynet.com/onlamp/blog/2008/05/greedy_coin_google_app_engine.html</id>
    <link href="http://www.oreillynet.com/onlamp/blog/2008/05/greedy_coin_google_app_engine.html" rel="alternate" type="text/html"/>
    <title xml:lang="en-US">Greedy Coin Google App Engine Application With Source</title>
    <summary xml:lang="en-US">Here is an application on Google App Engine Application I wrote for an upcoming PyAtl Talk, and an upcoming O'Reilly Online Article: http://greedycoin.appspot.com/ Quick notes: Really liking the datastore API. I also liked the Django templates even though I have touched them...</summary>
    <updated>2008-05-06T04:17:15Z</updated>
    <category term="Technical"/>
    <author>
      <name>Noah Gift</name>
    </author>
    <source>
      <id>http://www.oreillynet.com/</id>
      <category scheme="http://www.itunes.com/" term="Technology"/>
      <author>
        <name>O'Reilly Media, Inc.</name>
      </author>
      <link href="http://www.oreillynet.com/" rel="alternate" type="text/html"/>
      <link href="http://www.oreillynet.com/pub/feed/31" rel="self" type="application/atom+xml"/>
      <rights xml:lang="en-US">Copyright O'Reilly Media, Inc.</rights>
      <subtitle xml:lang="en-US">The O'Reilly Network Articles and Weblogs</subtitle>
      <title xml:lang="en-US">O'Reilly Network Articles and Weblogs: Noah Gift</title>
      <updated>2008-05-09T10:47:01Z</updated>
    </source>
  </entry>

  <entry xml:lang="en">
    <id>http://blog.ianbicking.org/2008/05/05/governance/</id>
    <link href="http://blog.ianbicking.org/2008/05/05/governance/" rel="alternate" type="text/html"/>
    <title>Governance</title>
    <summary>It occurred to me… Django is something like a dictatorship… or maybe an oligarchy.  At first it seems like Pylons is the same… but no.  Pylons is clearly feudal.  I lord over Paste, WebOb, FormEncode.  Mike Bayer lords over Mako and SQLAlchemy.  Ben lords over Routes, Beaker, and Pylons.
I suppose [...]</summary>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><div class="document">
<p>It occurred to me… Django is something like a dictatorship… or maybe an <a class="reference external" href="http://en.wikipedia.org/wiki/Oligarchy">oligarchy</a>.  At first it seems like Pylons is the same… but no.  Pylons is clearly <a class="reference external" href="http://en.wikipedia.org/wiki/Feudalism">feudal</a>.  I lord over Paste, WebOb, FormEncode.  Mike Bayer lords over Mako and SQLAlchemy.  Ben lords over Routes, Beaker, and Pylons.</p>
<p>I suppose in all cases there is a certain amount of democracy, because there are no <a class="reference external" href="http://en.wikipedia.org/wiki/Serf">serfs</a>, and any individual is free to travel to any kingdom they like.  Well, at least among the open source kingdoms.  Without citizenship, and with no exclusiveness of ownership, with even property having largely disappeared, I suppose it’s inevitable that traditional metaphors of control and governance don’t really make sense.</p>
</div></div>
    </content>
    <updated>2008-05-06T04:08:30Z</updated>
    <category term="Python"/>
    <category term="Politics"/>
    <category term="Programming"/>
    <author>
      <name>Ian Bicking</name>
    </author>
    <source>
      <id>http://blog.ianbicking.org</id>
      <link href="http://blog.ianbicking.org" rel="alternate" type="text/html"/>
      <link href="http://blog.ianbicking.org/feeds/new_pages.xml" rel="self" type="application/rss+xml"/>
      <title>Ian Bicking: a blog</title>
      <updated>2008-05-06T18:09:41Z</updated>
    </source>
  </entry>

  <entry>
    <id>http://www.eflorenzano.com/blog/post/my-awesome-regex-snippet/</id>
    <link href="http://www.eflorenzano.com/blog/post/my-awesome-regex-snippet/" rel="alternate" type="text/html"/>
    <title>My Awesome Regex Snippet</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml"><p>There are many times when the programming task at hand is to iterate over some semi-structured text, transform parts of that text in some way, and reintegrate those transformed parts back into the original text.</p>
<p>Typically using a regular expression with re.sub and a callback function, but sometimes you want a bit more control of the process (especially over those parts that <em>dont</em> match the regex). Usually my solution is to write a one-off function that does it, but today I had to write that function yet again and decided to generalize it and post it here.</p>
<p>To be completely honest, this post is more for my own archival purposes than for the internet as a whole, but if anyone else finds it useful, then I'm ecstatic.</p>
<div class="highlight"><pre><span style="color: #008000; font-weight: bold;">def</span> <span style="color: #0000FF;">re_parts</span>(regex_list, text):
    <span style="color: #BA2121; font-style: italic;">"""</span>
<span style="color: #BA2121; font-style: italic;">    An iterator that returns the entire text, but split by which regex it</span>
<span style="color: #BA2121; font-style: italic;">    matched, or none at all.  If it did, the first value of the returned tuple</span>
<span style="color: #BA2121; font-style: italic;">    is the index into the regex list, otherwise -1.</span>

<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; first_re = re.compile('asdf')</span>
<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; second_re = re.compile('an')</span>
<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; list(re_parts([first_re, second_re], 'This is an asdf test.'))</span>
<span style="color: #BA2121; font-style: italic;">    [(-1, 'This is '), (1, 'an'), (-1, ' '), (0, 'asdf'), (-1, ' test.')]</span>

<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; list(re_parts([first_re, second_re], 'asdfasdfasdf'))</span>
<span style="color: #BA2121; font-style: italic;">    [(0, 'asdf'), (0, 'asdf'), (0, 'asdf')]</span>

<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; list(re_parts([], 'This is an asdf test.'))</span>
<span style="color: #BA2121; font-style: italic;">    [(-1, 'This is an asdf test.')]</span>

<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; third_re = re.compile('sdf')</span>
<span style="color: #BA2121; font-style: italic;">    &gt;&gt;&gt; list(re_parts([first_re, second_re, third_re], 'This is an asdf test.'))</span>
<span style="color: #BA2121; font-style: italic;">    [(-1, 'This is '), (1, 'an'), (-1, ' '), (0, 'asdf'), (-1, ' test.')]</span>
<span style="color: #BA2121; font-style: italic;">    """</span>
    <span style="color: #008000; font-weight: bold;">def</span> <span style="color: #0000FF;">match_compare</span>(x, y):
        <span style="color: #008000; font-weight: bold;">return</span> x<span style="color: #666666;">.</span>start() <span style="color: #666666;">-</span> y<span style="color: #666666;">.</span>start()
    prev_end <span style="color: #666666;">=</span> <span style="color: #666666;">0</span>
    iters <span style="color: #666666;">=</span> [r<span style="color: #666666;">.</span>finditer(text) <span style="color: #008000; font-weight: bold;">for</span> r <span style="color: #AA22FF; font-weight: bold;">in</span> regex_list]
    matches <span style="color: #666666;">=</span> []
    <span style="color: #008000; font-weight: bold;">while</span> iters:
        <span style="color: #008000; font-weight: bold;">if</span> matches:
            match <span style="color: #666666;">=</span> matches<span style="color: #666666;">.</span>pop(<span style="color: #666666;">0</span>)
            (start, end) <span style="color: #666666;">=</span> match<span style="color: #666666;">.</span>span()
            <span style="color: #008000; font-weight: bold;">if</span> start <span style="color: #666666;">&gt;</span> prev_end:
                <span style="color: #008000; font-weight: bold;">yield</span> (<span style="color: #666666;">-1</span>, text[prev_end:start])
                <span style="color: #008000; font-weight: bold;">yield</span> (regex_list<span style="color: #666666;">.</span>index(match<span style="color: #666666;">.</span>re), text[start:end])
            <span style="color: #008000; font-weight: bold;">elif</span> start <span style="color: #666666;">==</span> prev_end:
                <span style="color: #008000; font-weight: bold;">yield</span> (regex_list<span style="color: #666666;">.</span>index(match<span style="color: #666666;">.</span>re), text[start:end])
            prev_end <span style="color: #666666;">=</span> end
        <span style="color: #008000; font-weight: bold;">else</span>:
            matches <span style="color: #666666;">=</span> []
            <span style="color: #008000; font-weight: bold;">for</span> iterator <span style="color: #AA22FF; font-weight: bold;">in</span> iters:
                <span style="color: #008000; font-weight: bold;">try</span>:
                    matches<span style="color: #666666;">.</span>append(iterator<span style="color: #666666;">.</span>next())
                <span style="color: #008000; font-weight: bold;">except</span> <span style="color: #D2413A; font-weight: bold;">StopIteration</span>:
                    iters<span style="color: #666666;">.</span>remove(iterator)
            matches <span style="color: #666666;">=</span> sorted(matches, match_compare)
    last_bit <span style="color: #666666;">=</span> text[prev_end:]
    <span style="color: #008000; font-weight: bold;">if</span> <span style="color: #008000;">len</span>(last_bit) <span style="color: #666666;">&gt;</span> <span style="color: #666666;">0</span>:
        <span style="color: #008000; font-weight: bold;">yield</span> (<span style="color: #666666;">-1</span>, last_bit)
</pre></div></div>
    </content>
    <updated>2008-05-06T03:24:07Z</updated>
    <category term="Programming"/>
    <category term="Python"/>
    <category term="Regex"/>
    <source>
      <id>http://www.eflorenzano.com/blog/feeds/posts/python/</id>
      <author>
        <name>Eric Florenzano</name>
      </author>
      <link href="http://www.eflorenzano.com/blog/tag/python/" rel="alternate" type="text/html"/>
      <link href="http://www.eflorenzano.com/blog/feeds/posts/python/" rel="self" type="application/atom+xml"/>
      <title>Eric Florenzano's Latetest Posts for Tag Python</title>
      <updated>2008-05-06T03:24:07Z</updated>
    </source>
  </entry>

  <entry>
    <id>tag:blogger.com,1999:blog-6946125878559207247.post-964587830994242271</id>
    <link href="http://davywybiral.blogspot.com/2008/01/javascript-bad.html" rel="alternate" type="text/html"/>
    <link href="http://www.blogger.com/comment.g?blogID=6946125878559207247&amp;postID=964587830994242271" rel="replies" type="text/html"/>
    <link href="http://davywybiral.blogspot.com/feeds/964587830994242271/comments/default" rel="replies" type="application/atom+xml"/>
    <link href="http://davywybiral.blogspot.com/feeds/posts/default/964587830994242271" rel="self" type="application/atom+xml"/>
    <link href="http://www.blogger.com/feeds/6946125878559207247/posts/default/964587830994242271" rel="edit" type="application/atom+xml"/>
    <title>Javascript == bad</title>
    <content type="xhtml"><div xmlns="http://www.w3.org/1999/xhtml">Along the way while writing Epy, I've noticed some things about Javascript (a language I once considered perfectly reasonable) that are in serious need of a revamp (at least at the time of writing this). Here are just a few of the (many) issues I have with Javascript:<br/><br/><ol><li>Namespaces. In the world of most Javascript, everything is global or function-scope, there seems to be no use of namespace or module-style development at all. It's possible to simulate namespaces by wrapping entire modules in an object definition, but this is usually too much of a hassle for practicality.</li><li>Objects. Javascript's object system is, well, crap. Sure, it's ad-hoc like Python, but it has no formal way of creating simple constructors. You can use the "this" object in a function, or create a new instance of "Object" to append methods to, but there are no standards for constructing an object.<br/></li><li>Objects do <span style="font-weight: bold;">not</span> support destructors. Many might argue that a memory-safe language like Js doesn't need them, but destructors have more use than freeing memory. They serve a very useful purpose in a lot of OO designs, memory-safe or not.</li><li>Javascript does <span style="font-weight: bold;">not</span> support associative arrays! You can use the "Array" object, or even the "Object" object to assign associative values to using the index operators, but this is deceiving... Any time you use "obj['index'] = something" you could replace it with "obj.index = something" which causes major problems with naming collisions. This style of object/hashtable is bad, there should be a clear distinction between the two.<br/></li><li>Javascript is <span style="font-weight: bold;">not</span> cross-browser compatible... Don't get me started...</li></ol>Yet Javascript remains at the heart of our internet! Projects like Epy could help to solve some of these problems by abstracting away the issues allowing you to develop your client-side scripting in a more pleasant syntax (such as Python). But maybe someday we'll just use another language all-together :)</div>
    </content>
    <updated>2008-05-05T23:14:20Z</updated>
    <published>2008-01-14T03:15:00Z</published>
    <author>
      <name>Wybiral</name>
      <email>noreply@blogger.com</email>
      <uri>http://www.blogger.com/profile/04401873536119552162</uri>
    </author>
    <source>
      <id>tag:blogger.com,1999:blog-6946125878559207247</id>
      <author>
        <name>Wybiral</name>
        <email>noreply@blogger.com</email>
        <uri>http://www.blogger.com/profile/04401873536119552162</uri>
      </author>
      <link href="http://davywybiral.blogspot.com/" rel="alternate" type="text/html"/>
   