<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1897757324567699379</id><updated>2011-11-23T10:34:34.666-05:00</updated><category term='buildbot'/><category term='interactive fiction'/><category term='python'/><category term='clojure'/><category term='zodb'/><category term='zope'/><title type='text'>Code Singer</title><subtitle type='html'>Notes from a programmer and classical singer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-1783459574961342499</id><published>2011-11-15T11:52:00.000-05:00</published><updated>2011-11-16T17:36:22.052-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Clojure/conj: The Talks</title><summary type='text'>The previous mammoth post was about the questions and answers I found at the Clojure/conj conference and training.  This mammoth post is my notes from the talks. 

Thanks to my employer, Canonical, for the opportunity to go to the conference.  When Canonical gives employees time to go to a conference, we have to summarize it.  The summaries are often company-internal emails, but I like blogging </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/1783459574961342499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=1783459574961342499' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/1783459574961342499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/1783459574961342499'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2011/11/clojureconj-talks.html' title='Clojure/conj: The Talks'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>2</thr:total><georss:featurename>Raleigh, NC, USA</georss:featurename><georss:point>35.772096 -78.6386145</georss:point><georss:box>35.5661335 -78.9544715 35.978058499999996 -78.32275750000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-502015713518821968</id><published>2011-11-15T11:42:00.000-05:00</published><updated>2011-11-23T10:33:28.646-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clojure'/><title type='text'>Clojure/conj: The Questions and the Answers</title><summary type='text'>
Wow. I just had a full immersion experience into the Clojure language and community, and it was awesome.  I'll write about in two posts: questions I tried to answer, and notes from the presentations.  Here's the first.

Thanks to my wife, my boss, and my employer, Canonical, I got to attend the Clojure/conj conference here in Raleigh, as well as the training session beforehand.  It was a full </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/502015713518821968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=502015713518821968' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/502015713518821968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/502015713518821968'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2011/11/clojureconj-questions-and-answers.html' title='Clojure/conj: The Questions and the Answers'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>4</thr:total><georss:featurename>Raleigh, NC, USA</georss:featurename><georss:point>35.772096 -78.6386145</georss:point><georss:box>35.565965999999996 -78.9544715 35.978226 -78.32275750000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-8459254596742049806</id><published>2010-09-17T09:03:00.003-05:00</published><updated>2010-09-17T11:31:38.496-05:00</updated><title type='text'>Open Source</title><summary type='text'>Canonical has encouraged us employees to blog about the work we do on open source.  I intended to include these comments as part of the previous post, but that one was too long already.
Open source has been a huge part of my life for many years now.  A friend once suggested I commission a song cycle about it, but I haven't been inspired in that particular direction yet.  Reflecting back on my </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/8459254596742049806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=8459254596742049806' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8459254596742049806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8459254596742049806'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2010/09/open-source.html' title='Open Source'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-2444406255090636856</id><published>2010-09-17T04:14:00.007-05:00</published><updated>2010-09-22T15:40:55.375-05:00</updated><title type='text'>Zope Summit, DZUG, repoze.bfg</title><summary type='text'>I've spent a thought-provoking week in Germany, primarily in the company of people from the greater Zope community in Europe.  By "the greater Zope community," I mean projects such as Plone, Zope 2/CMF, the Zope Toolkit, Grok, and BlueBream.
My week started in Halle, Germany, at Gocept's offices in a meeting called a "Zope Summit."  19 people gathered to try and figure out what we could </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/2444406255090636856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=2444406255090636856' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/2444406255090636856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/2444406255090636856'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2010/09/zope-summit-dzug-repozebfg.html' title='Zope Summit, DZUG, repoze.bfg'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-7164777049606730944</id><published>2009-04-15T19:26:00.003-05:00</published><updated>2009-04-15T19:39:54.673-05:00</updated><title type='text'>Zope Interfaces and Python Abstract Base Classes</title><summary type='text'>Jim Fulton (the architect of Zope 2, Zope 3, zc.buildout, and so on) and I talked briefly on the first day of the sprints about whether we could take advantage of the Python 2.6/3.0 Abstract Base Classes (ABCs), either replacing Zope interfaces or somehow using them to our advantage.

So I don't misrepresent him, I'll state my conclusions.  Ask Jim for his.

Unfortunately, I came to the </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/7164777049606730944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=7164777049606730944' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7164777049606730944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7164777049606730944'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/04/zope-interfaces-and-python-abstract.html' title='Zope Interfaces and Python Abstract Base Classes'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-7043352883250343299</id><published>2009-04-15T19:06:00.004-05:00</published><updated>2009-04-15T19:26:49.977-05:00</updated><title type='text'>Back from PyCon 2009...a week ago.</title><summary type='text'>I came back about a week ago from PyCon 2009...and went straight into getting our house ready to offer for sale, and then performing Anima Mundi by Mark Scearce in Raleigh, NC with my wife, Karyn, and some old and new friends.  Good stuff, but exhausting.

I have quite a few notes from PyCon.  My first mission there was to announce some of Launchpad's recent open-source work, in particular </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/7043352883250343299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=7043352883250343299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7043352883250343299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7043352883250343299'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/04/back-from-pycon-2009a-week-ago.html' title='Back from PyCon 2009...a week ago.'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-6058845560306528358</id><published>2009-04-15T18:51:00.002-05:00</published><updated>2009-04-15T19:05:19.621-05:00</updated><title type='text'>Speaking at OSCON 2009: Launchpad Foundations</title><summary type='text'>My speaking proposal for OSCON 2009 was accepted: "Launchpad Foundations: Learning to Leverage a Component Architecture".  Here's the quick blurb:

Study gains and losses in how Launchpad, a collaboration web service for the open-source community, used a Python component library from Zope 3 to help manage a large project. Discuss when the approach might be appropriate. Code examples include </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/6058845560306528358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=6058845560306528358' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6058845560306528358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6058845560306528358'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/04/speaking-at-oscon-2009-launchpad.html' title='Speaking at OSCON 2009: Launchpad Foundations'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-3245664676484772881</id><published>2009-02-28T16:45:00.002-05:00</published><updated>2009-02-28T17:40:27.890-05:00</updated><title type='text'>Getting VMWare Faster</title><summary type='text'>I like Macs, and OS X.  I like Ubuntu too, and with my job at Canonical, I develop with it.

I've been developing in Ubuntu in a VMWare Fusion image, for a variety of reasons.  I recently got really tired of the slow speed I was experiencing, though.  I decided to investigate what I could do to keep my Mac/Linux story portable, but faster, that didn't involve a new computer.

Random Googling to </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/3245664676484772881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=3245664676484772881' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/3245664676484772881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/3245664676484772881'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/02/getting-vmware-faster.html' title='Getting VMWare Faster'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-7478849047830542428</id><published>2009-02-16T17:29:00.005-05:00</published><updated>2009-02-16T22:41:41.357-05:00</updated><title type='text'>Oh, the farmer and the cowman should be friends: URI parsing with Routes versus graph traversal</title><summary type='text'>(This post's title alludes to a song from the musical Oklahoma, in case you were wondering.)

I, like many web application developers, am impressed with the Routes model for mapping a URI to application code (as in RoR, or any number of Python versions).  I plan to use it for "hobby" work, and I'm advocating it at my job.

For many web applications, it seems to work as well or better than the </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/7478849047830542428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=7478849047830542428' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7478849047830542428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/7478849047830542428'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/02/oh-farmer-and-cowman-should-be-friends.html' title='Oh, the farmer and the cowman should be friends: URI parsing with Routes versus graph traversal'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-1019073968559622105</id><published>2009-02-16T16:30:00.003-05:00</published><updated>2009-02-16T17:27:48.765-05:00</updated><title type='text'>Don't use __*__ in Python unless you are hacking Python</title><summary type='text'>As an aside, I've essentially finished the REST book I was reading, so could theoretically launch into blogging about that; and I have been doing a lot of reading and exploring of the Inform 7 ideas I introduced earlier.  But those are too big and daunting to write about quite yet.

When starting the Pylons book today, I noticed that their Routes library uses the __*__ pattern for some of their </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/1019073968559622105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=1019073968559622105' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/1019073968559622105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/1019073968559622105'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/02/dont-use-in-python-unless-you-are.html' title='Don&apos;t use __*__ in Python unless you are hacking Python'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-6642544945319320078</id><published>2009-02-09T22:53:00.004-05:00</published><updated>2009-02-09T23:18:24.731-05:00</updated><title type='text'>My Claim: "MTV" Is Silly.</title><summary type='text'>repoze.bfg's creator, Chris McDonough, in an informative and corrective comment to my last blog post, among other things disagreed with me about my assertion that "repoze.bfg doesn't provide a model story; it provides a traversal story."

I'm afraid I didn't communicate myself well enough.  He might still disagree, and I might still fail to make my points clearly, but I found this the most </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/6642544945319320078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=6642544945319320078' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6642544945319320078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6642544945319320078'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/02/my-claim-mtv-is-silly.html' title='My Claim: &quot;MTV&quot; Is Silly.'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-5178229826893346608</id><published>2009-02-07T21:02:00.006-05:00</published><updated>2009-02-07T23:36:02.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Repoze.bfg</title><summary type='text'>As mentioned earlier, I've spent time looking at other frameworks lately.

I've spent more time on Chris McDonough's repoze.bfg than any of the others so far.  This is probably because, as discussed below, it's very minimal.  It's also documented well.  Finally, it follows a few standard old Zope patterns that don't require much thought for me to process.  Given all that, I can understand it </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/5178229826893346608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=5178229826893346608' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/5178229826893346608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/5178229826893346608'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/02/repozebfg.html' title='Repoze.bfg'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-5169557701105670926</id><published>2009-01-31T21:31:00.007-05:00</published><updated>2009-01-31T23:04:28.684-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interactive fiction'/><title type='text'>Interactive Fiction, Declarative Domain Specific Languages, and Web Frameworks: Introduction</title><summary type='text'>This is the first part--just the introduction, really--to what I intend to be a small series.

I've liked interactive fiction pretty well since I was a child.  If "interactive fiction" doesn't mean anything to you, you might be familiar with the old Infocom games of the 1980s: Zork, Planetfall, The Hitchhiker's Guide to the Galaxy, Leather Goddesses of Phobos, and so on.  That's interactive </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/5169557701105670926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=5169557701105670926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/5169557701105670926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/5169557701105670926'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/01/interactive-fiction-declarative-domain.html' title='Interactive Fiction, Declarative Domain Specific Languages, and Web Frameworks: Introduction'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-6728312905049746045</id><published>2009-01-31T20:23:00.004-05:00</published><updated>2009-01-31T21:24:07.911-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buildbot'/><title type='text'>Buildbot and Amazon Web Services Elastic Compute Cloud ("AWS EC2")</title><summary type='text'>If you might care about Buildbot, you probably already know about it: "a system to automate the compile/test cycle required by most software projects to validate code changes," as the site puts it.  It's written in Python with the Twisted framework.

At Canonical, I've been doing some work with it, and, lately, on it.  My first accepted git branch added some bzr helpers.  That was cool, but small</summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/6728312905049746045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=6728312905049746045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6728312905049746045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/6728312905049746045'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/01/buildbot-and-amazon-aws.html' title='Buildbot and Amazon Web Services Elastic Compute Cloud (&quot;AWS EC2&quot;)'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-4856839860254107181</id><published>2009-01-31T13:56:00.004-05:00</published><updated>2009-01-31T15:25:57.111-05:00</updated><title type='text'>Catch-up</title><summary type='text'>I feel like I've been playing a whole lot of catch-up lately.

Mark Ramm's September '08 blog posts about how Django could learn from Zope 2's mistakes made one point (actually from the second post) that struck home strongly: more innovation happens elsewhere than within one given community.  You have to pay attention to it and be a part of it.

I have been a part of some cool, and uniquely </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/4856839860254107181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=4856839860254107181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/4856839860254107181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/4856839860254107181'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/01/catch-up.html' title='Catch-up'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-67711516430552566</id><published>2009-01-17T18:58:00.004-05:00</published><updated>2009-01-17T22:09:08.246-05:00</updated><title type='text'>Learning How to Blog</title><summary type='text'>It's been awhile--over two years--since I blogged.  The reasons are simple: I'm busy with work and family, and  perhaps I associated blogging too much with professional or scholarly publishing.  The second point had two corollaries: my posts were often too big, both in terms of engaging readers and finding time to write; and I felt insecure and shy about saying much.

I'm still busy, and I still </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/67711516430552566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=67711516430552566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/67711516430552566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/67711516430552566'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2009/01/learning-how-to-blog.html' title='Learning How to Blog'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-8246703052040141104</id><published>2007-01-01T21:15:00.000-05:00</published><updated>2007-01-01T21:14:03.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Introducing Zope</title><summary type='text'>I'm going to be introducing someone to Zope 3 starting tomorrow.  The goal is to build a productive long-term contributor.  I'll be investing a decent amount of time, and also be expecting a big investment of energy from the student.

To start off, I want to answer this question: what is Zope 3, and why do we use it?

Amazingly, one of the community's problems is that we don't agree on an answer.</summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/8246703052040141104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=8246703052040141104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8246703052040141104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8246703052040141104'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2007/01/introducing-zope.html' title='Introducing Zope'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-3270580307773509804</id><published>2006-12-29T20:00:00.000-05:00</published><updated>2006-12-29T19:56:27.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zodb'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Out on the edge with the ZODB</title><summary type='text'>Someday I'd love to write a book called something like Application Development with the Zope Object Database (ZODB).  Writing it would let me share the information I've learned, as well as make me learn the bits I still haven't gotten around to.  That's how I really think of my Zope 3 work--in that context, I'm A Python programmerwho uses the ZODB and related librarieswith web-related components </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/3270580307773509804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=3270580307773509804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/3270580307773509804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/3270580307773509804'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2006/12/out-on-edge-with-zodb.html' title='Out on the edge with the ZODB'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1897757324567699379.post-8933198419329117275</id><published>2006-12-12T21:50:00.000-05:00</published><updated>2006-12-14T22:35:39.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='zope'/><title type='text'>Web Component Development with Zope 3, Second Edition</title><summary type='text'>I got my comp copy of Philipp von Weitershausen's Web Component Development with Zope 3, Second Edition yesterday. I was the primary technical reviewer for this second edition.  It's an impressive book, and I'm happy I was able to be a part of it.

It's also fascinating as an artifact documenting the current state of Zope.  The message it sends is overwhelmingly positive. While the usual polish </summary><link rel='replies' type='application/atom+xml' href='http://codesinger.blogspot.com/feeds/8933198419329117275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1897757324567699379&amp;postID=8933198419329117275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8933198419329117275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1897757324567699379/posts/default/8933198419329117275'/><link rel='alternate' type='text/html' href='http://codesinger.blogspot.com/2006/12/web-component-development-with-zope-3.html' title='Web Component Development with Zope 3, Second Edition'/><author><name>Gary Poster</name><uri>http://www.blogger.com/profile/02305364761685060789</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://3.bp.blogspot.com/_plBt_ALD-BE/SXJLC2TjtII/AAAAAAAAAAM/yMYOlQWxcX8/S220/head.jpg'/></author><thr:total>0</thr:total></entry></feed>
