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

<channel>
	<title>The Third Bit &#187; Basie</title>
	<atom:link href="http://third-bit.com/blog/archives/category/basie/feed" rel="self" type="application/rss+xml" />
	<link>http://third-bit.com/blog</link>
	<description>Data is ones and zeroes &#124; Software is ones and zeroes and hard work.</description>
	<lastBuildDate>Fri, 03 Feb 2012 00:35:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>End of an Era</title>
		<link>http://third-bit.com/blog/archives/4079.html</link>
		<comments>http://third-bit.com/blog/archives/4079.html#comments</comments>
		<pubDate>Tue, 30 Nov 2010 14:57:54 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>

		<guid isPermaLink="false">http://third-bit.com/blog/?p=4079</guid>
		<description><![CDATA[From http://basieproject.org: We have decided to wind down the Basie project and put our effort into Pinax, a collection of reusable Django components designed to simplify the construction of social networking sites. We made this decision because many of the things we want in Basie are actually common to groupware of all kinds, not just [...]]]></description>
			<content:encoded><![CDATA[<p>From <a href="http://basieproject.org">http://basieproject.org</a>:</p>
<blockquote><p>We have decided to wind down the Basie project and put our effort into <a href="http://pinaxproject.com">Pinax</a>, a collection of reusable <a href="http://djangoproject.com">Django</a> components designed to simplify the construction of social networking sites.  We made this decision because many of the things we want in Basie are actually common to groupware of all kinds, not just software project management tools, and because students working on the project will have a better learning experience if they are embedded in an active non-academic open source community.</p>
<p>Our first contribution to <a href="http://pinaxproject.com">Pinax</a> is a repository browser component with back-ends for Subversion and Mercurial. We are now working on a mailing list component, which we hope to release in December 2010.</p></blockquote>
<p>DrProject and Basie were a lot of fun, but now that I&#8217;ve left U of T, they&#8217;re simply not sustainable.  I&#8217;m grateful to everyone who supported the project: the <a href="http://www.utoronto.ca">University of Toronto</a>, the <a href="http://www.jonahgroup.com">Jonah Group</a>, <a href="http://www.ideeinc.com">Idée</a>, <a href="http://www.rypple.com">Rypple</a>, <a href="http://www.rogers.com">Rogers Communications</a>, <a href="http://www.fmginc.com/">First Media Group</a>,  <a href="http://www.redhat.com">Red Hat</a>,  <a href="http://www.tucowsinc.com">TUCOWS</a>,  <a href="http://www.yahoo.com">Yahoo!</a>,  and <a href="http://code.google.com/soc">Google Summer of Code</a>.  Thanks even more to everyone who turned that support into working code:</p>
<ul>
<li>Botond Ballo (University of Toronto)</li>
<li>Jeff Balogh (University of Central Florida / Mozilla)</li>
<li>Liz Blankenship (University of Michigan)</li>
<li>Chad Cogar (University of Toronto)</li>
<li>David Cooper (University of Toronto)</li>
<li>François Fournier (Université Laval)</li>
<li>Heather Grant (University of Alberta)</li>
<li>Russell Haering (Oregon State University)</li>
<li>Eran Henig (University of Toronto)</li>
<li>Jackie Huynh (University of British Columbia)</li>
<li>Bill Konrad (University of Toronto)</li>
<li>Maciej Kozlowski (University of Toronto)</li>
<li>Derek Kwok (University of Toronto)</li>
<li>Pierre Lafayette (Qualcomm)</li>
<li>Alex Le (University of British Columbia)</li>
<li>Phyliss Lee (University of Toronto)</li>
<li>James Leung (University of Alberta)</li>
<li>Ian Lienert (University of Toronto)</li>
<li>Josh McCarthy (Memorial University)</li>
<li>Christian Muise (University of Toronto)</li>
<li>Nikita Pchelin (University of Toronto)</li>
<li>John Peters (University of Alberta)</li>
<li>Andrew Schurman (Simon Fraser University)</li>
<li>Dan Servos (Lakehead University)</li>
<li>Florian Shkurti (University of Toronto)</li>
<li>Guillaume Simard (Université Laval)</li>
<li>Noam Sutskever (high school, Toronto)</li>
<li>Tony Targonski (University of Waterloo)</li>
<li>Edward Tate (Simon Fraser University)</li>
<li>Chris Van Wiemeersch (Michigan State University)</li>
<li>Zuzel Vera Pacheco (University of Havana / University of Toronto)</li>
<li>Jason Whyne (University of Waterloo)</li>
<li>Greg Wilson (University of Toronto)</li>
<li>Blake Winton (Mozilla)</li>
<li>David Wolever (University of Toronto)</li>
<li>Veronica Wong (University of Toronto)</li>
<li>Kosta Zabashta (University of Toronto)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/4079.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing With Random Data</title>
		<link>http://third-bit.com/blog/archives/3687.html</link>
		<comments>http://third-bit.com/blog/archives/3687.html#comments</comments>
		<pubDate>Thu, 18 Mar 2010 09:48:09 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3687</guid>
		<description><![CDATA[Guillaume Simard and François Fournier are writing Selenium tests for Basie (our Django-based replacement for Trac). Over on the Basie blog, they explain why they&#8217;re using random data in their tests, rather than testing against predefined fixtures.]]></description>
			<content:encoded><![CDATA[<p>Guillaume Simard and François Fournier are writing <a href="http://seleniumhq.org/">Selenium</a> tests for <a href="http://basieproject.org">Basie</a> (our <a href="http://djangoproject.com">Django</a>-based replacement for <a href="http://trac.edgewall.org">Trac</a>). Over on the Basie blog, they explain <a href="http://blog.basieproject.org/?p=2601">why they&#8217;re using random data in their tests</a>, rather than testing against predefined fixtures.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3687.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Currently Juggling</title>
		<link>http://third-bit.com/blog/archives/3594.html</link>
		<comments>http://third-bit.com/blog/archives/3594.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 17:11:10 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>
		<category><![CDATA[Government 2.0]]></category>
		<category><![CDATA[Making Software]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Teaching]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3594</guid>
		<description><![CDATA[I keep telling my students not to over-commit themselves. It&#8217;s a shame I don&#8217;t take my own advice . Here&#8217;s what I&#8217;ve currently got on the go: Software Carpentry teaches basic software development skills to scientists and engineers. I have 80% of the funding I need to spend a year upgrading its content and delivery. [...]]]></description>
			<content:encoded><![CDATA[<p>I keep telling my students not to over-commit themselves.  It&#8217;s a shame I don&#8217;t take my own advice <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .  Here&#8217;s what I&#8217;ve currently got on the go:</p>
<p><strong><a href="http://software-carpentry.org">Software Carpentry</a></strong> teaches basic software development skills to scientists and engineers.  I have 80% of the funding I need to spend a year <a href="http://softwarecarpentry.wordpress.com/a-fresh-start/">upgrading its content and delivery</a>.  I hope to raise the last 20% of the money in the next few weeks.  If I can pull it off, the major challenges will be:</p>
<ol>
<li>Learning how to create effective online course material: there&#8217;s lots of handwaving out there about wikis in the classroom, but nothing substantive about instructional design for mature learners using present-day internet technologies.</li>
<li>Assessment. We don&#8217;t know how to measure the productivity of programmers, or the productivity of scientists; trying to gauge this course&#8217;s impact on the productivity of scientific programmers will therefore be something of a challenge. (One of the reasons I left industry for academia in 2006 was to figure out how to do this, but my attempts to find research funding all failed.)</li>
<li>Mechanics. <a href="http://www.site5.com">Site5</a> only allows one shell account per domain, which makes it difficult to open up the project&#8217;s Subversion repository to other contributors. And I&#8217;ll have to choose a format for the lecture notes: LaTeX, plain HTML, S5, one of the many wiki formats&#8230; And figure out a better way to create and manage images and video. And pick a bibliography format. And&#8230;</li>
</ol>
<p>A <a href="http://web.cs.toronto.edu/program/grad/mscac.htm"><strong>professional Master&#8217;s degree</strong></a> in Computer Science at the University of Toronto to complement the department&#8217;s existing research Master&#8217;s.  The program consists of five regular graduate courses, a course each on business skills and professional communication, and an eight-month industrial internship in which students have to show that they can translate theory into practice.  We are now accepting <a href="https://gradapps.cs.toronto.edu/~mscac10/apply">applications</a> for September 2010 entry, so if you&#8217;d like to learn leading-edge ideas from some of the best researchers in the world, please check it out.</p>
<p><strong><a href="http://basieproject.org">Basie</a></strong>, our replacement for <a href="http://trac.edgewall.org">Trac</a>, built on <a href="http://www.djangoproject.com/">Django</a> and <a href="http://jquery.com/">jQuery</a>, is coming along nicely, but I don&#8217;t know what will happen to it once I leave <a href="http://www.utoronto.ca">U of T</a>. A few non-students are now involved in its development, but we aren&#8217;t big enough to bid for our own <a href="http://code.google.com/soc/">Google Summer of Code</a> students. If anyone would like to get involved, please <a href="mailto:gvwilson@third-bit.com">give me a shout</a>. (I&#8217;d particularly like to hear from ex-project students&#8212;it would be nice to have an excuse to stay in touch.)</p>
<p><a href="http://ucosp.wordpress.com"><strong>UCOSP</strong></a> stands for &#8220;undergraduate capstone open source projects&#8221;.  Since September 2008, undergraduates from several universities in Canada and the US have been taking part in joint capstone projects in order to learn first-hand what distributed development is like. Each team has students from two or three schools, and works for a term under the supervision of a faculty or industry lead on an open source project.  We&#8217;re currently trying to find $35,000 to hire a half-time administrator to run the program from September 2010 so that we can scale up from the present 45 students/term to 80, 90, or more.  Again, if you&#8217;re interested, please <a href="mailto:gvwilson@cs.utoronto.ca">give me a shout</a>.</p>
<p><a href="https://stanley.cdf.toronto.edu/drproject/csc302-2010-01"><strong id="csc302">CSC302</strong></a> is my regular undergraduate software engineering course. This term, six teams of students are porting Django to Python 3, adding pivot tables to Gnumeric, parallelizing parts of ILUTE, upgrading PyLint, pluginifying Selenium, and extending SpatiaLite. It could be the last regular course I teach at the University of Toronto; it has been a bit bumpy, but I&#8217;m glad the students are getting to work on real things.</p>
<p><strong>Grad student supervision:</strong> <a href="http://ajfowler.wordpress.com/">Alecia</a>, <a href="http://zuzelvp47uoft.wordpress.com/">Zuzel</a>, and <a href="http://mikeconley.ca/blog/">Mike</a> all have topics nailed down, and <a href="http://www.cs.utoronto.ca/~jmontojo/">Jason </a>is writing up. I plan to spend one morning a week in the department working with them from now through next January; I&#8217;m looking forward to seeing what they produce.</p>
<p>The <a href="http://code.google.com/p/cowichan/"><strong>Cowichan Problems</strong></a>. This one goes back to the mid-1990s, when I first realized that human performance was at least as important to overall productivity in computational science as machine performance. The idea is to use a suite of fairly simple applications, all stitched together, to benchmark the usability of parallel programming systems. A couple of undergrads updated the code last year; I&#8217;m hoping to revisit it as part of my work on <a href="http://software-carpentry.org">Software Carpentry</a>.</p>
<p><strong>Book #1</strong>, called <em>What Really Works?</em>, is a <a href="http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047"><em>Beautiful Code</em></a>-style book that presents <a href="http://pyre.third-bit.com/blog/archives/category/ebse">evidence-based results in software engineering</a>. Where do bugs actually come from? Does pair programming get the job done faster? Can code metrics predict post-release fault rates? Are some programming languages intrinsically more productive than others? Each of our authors will explore one such question in a chapter-length essay; contributions are now coming in, and we&#8217;re still on track to have the book on the shelves this summer. (I&#8217;ve been talking about this subject and this book for a few months now; if you&#8217;re interested, you can <a href="http://www.slideshare.net/gvwilson/bits-of-evidence-2338367">view the slides</a>.)</p>
<p><strong>Book #2</strong> is yet another collection, this time exploring the architecture of open source applications. As I said in <a href="http://pycon.blip.tv/file/3245057/">my lightning talk at PyCon</a>, the aim isn&#8217;t really to explain the internals of Hadoop, Parrot, and Mercurial (though I think that&#8217;s worth doing). The real aim is to teach people how to think about software architecture by showing them how architects think. We&#8217;re hoping to have chapters in for review by November, and the book out this time next year.</p>
<p><strong>Book #3</strong> is an illustrated children&#8217;s book about the universe, life, science, and global warming. I&#8217;ve had some good feedback from the editor who handled <a href="http://pyre.third-bit.com/blog/archives/1657.html">my last children&#8217;s book</a>, but most of the work is still in front of me.</p>
<p>Projects I&#8217;m <em>not</em> working on:</p>
<p><strong>Government 2.0:</strong> I enjoyed working on <a href="http://pyre.third-bit.com/blog/archives/category/gov20">open data/open government projects</a> with my students last term, but I couldn&#8217;t find any faculty at U of T willing to keep it going.  I could have found Gov 2.0 stuff for <a href="#csc302">CSC302</a>, but I thought open source work would be better for them.</p>
<p><strong>Two novels</strong> and half a dozen short stories. I enjoy writing fiction, but it feels like an indulgence, and I keep pushing it aside to do &#8220;serious&#8221; stuff. I&#8217;m sure that when I&#8217;m seventy I&#8217;ll regret having done that, so I hope to spend one hour a day writing fiction once I start full-time on Software Carpentry.</p>
<p><strong>Jazz:</strong> I haven&#8217;t touched my sax since this time last year&#8212;it may be vanity, but I&#8217;d rather not play at all than play badly.  Maybe when my daughter&#8217;s a little older&#8230;</p>
<p><strong>Exercise:</strong> yeah&#8230; exercise. Maybe I&#8217;ll get my bike back on the road this week&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3594.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PyCon 2010</title>
		<link>http://third-bit.com/blog/archives/3540.html</link>
		<comments>http://third-bit.com/blog/archives/3540.html#comments</comments>
		<pubDate>Sun, 21 Feb 2010 14:04:52 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software Carpentry]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3540</guid>
		<description><![CDATA[It&#8217;s a sunny Sunday morning in Atlanta, and I&#8217;m on my way home. I came down Thursday to: Raise money for Software Carpentry. Get people excited about Basie. Get people excited about UCOSP. Talk with Georgia Tech&#8216;s Mark Guzdial about computer science education. #4 actually happened first. Mark picked me up Friday morning; we chatted [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a sunny Sunday morning in Atlanta, and I&#8217;m on my way home. I came down Thursday to:</p>
<ol>
<li>Raise money for <a href="http://software-carpentry.org">Software Carpentry</a>.</li>
<li>Get people excited about <a href="http://basieproject.org">Basie</a>.</li>
<li>Get people excited about <a href="http://ucosp.wordpress.com">UCOSP</a>.</li>
<li>Talk with <a href="http://www.gatech.edu/">Georgia Tech</a>&#8216;s <a href="http://computinged.wordpress.com/">Mark Guzdial</a> about computer science education.</li>
</ol>
<p>#4 actually happened first. Mark picked me up Friday morning; we chatted for a while, then I spent an hour with some other faculty before giving my <a href="http://www.slideshare.net/gvwilson/bits-of-evidence-2338367">evidence-based software engineering talk</a>. It was fun, and I came away from my discussion with Mark with half a dozen leads to follow up.</p>
<p>#1 is most important to me personally&#8212;I really want to spend a year <a href="http://softwarecarpentry.wordpress.com/a-fresh-start/">upgrading the course</a> after I leave U of T at the end of this term&#8212;but I didn&#8217;t have much luck. The people I spoke to were sympathetic, but it&#8217;s been a hard 18 months for everyone financially, and there are a lot of other good causes clamoring for attention.</p>
<p>I put less time into #2 than I probably should have, but still got some good feedback (which I&#8217;ve <a href="http://blog.basieproject.org/?p=2231">posted on the Basie blog</a>). Long story short, if we can make Basie faster and provide a Trac-to-Basie migration tool, our prospects are good.</p>
<p>I wasn&#8217;t thinking of #3 (UCOSP) when I proposed my talk, but it&#8217;s what people were most interested in. Several students and professors said that they would like to be involved; the trick now is to find money to hire a half-time admin to take care of fundraising and organization.  If you have $35K you can spare, please let me know. (And <a href="http://www.slideshare.net/gvwilson/what-weve-learned-from-building-basie">my slides</a> are up if you&#8217;re interested.)</p>
<p>The best part of the trip? Talking to people I&#8217;ve only ever met electronically, or haven&#8217;t seen since my last PyCon eight years ago. Some of the discussion was about programming, but not a lot (since I don&#8217;t actually program any more). Mostly it was about kids, careers, and the meaning of life&#8212;all the catching up you do with people that you really wish you got to see more often.</p>
<p>It&#8217;s a sunny Sunday morning in Atlanta, and I&#8217;m on my way home&#8230;</p>
<p><em>Later: <a href="http://pycon.blip.tv/file/3245057/">video</a> of my lightning talk on Friday evening about yet another collaborative O&#8217;Reilly book (this one on software architecture) is available at blip.tv &#8212; check about 9 minutes in.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3540.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basie 0.6 Has Been Released</title>
		<link>http://third-bit.com/blog/archives/3533.html</link>
		<comments>http://third-bit.com/blog/archives/3533.html#comments</comments>
		<pubDate>Tue, 16 Feb 2010 22:40:36 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Basie]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3533</guid>
		<description><![CDATA[We are pleased to announce the release of Version 0.6 of Basie, a lightweight software project portal built on Django and jQuery. Basie is designed to replace Trac and DrProject; its main features are: Multiple projects per forge Role-based access control Pluggable user account management Per-project wiki with standard WikiCreole syntax Subversion repository browser Per-project [...]]]></description>
			<content:encoded><![CDATA[<p>We are pleased to announce the release of <a href="http://blog.basieproject.org/?p=2225">Version 0.6 of Basie</a>, a lightweight software project portal built on <a href="http://www.djangoproject.com/">Django</a> and <a href="http://jquery.com/">jQuery</a>. Basie is designed to replace <a href="http://trac.edgewall.org">Trac</a> and <a href="http://www.drproject.org">DrProject</a>; its main features are:</p>
<ul>
<li>Multiple projects per forge</li>
<li>Role-based access control</li>
<li>Pluggable user account management</li>
<li>Per-project wiki with standard <a href="http://www.wikicreole.org/">WikiCreole</a> syntax</li>
<li>Subversion repository browser</li>
<li>Per-project mailing list and IRC channel</li>
<li>A simple ticketing system</li>
<li>Milestones and calendaring</li>
<li>Cross-component search</li>
<li>Dashboard summarizing project activity</li>
<li>Web-based administration</li>
<li>REST API for web services</li>
</ul>
<p>Thanks to <a href="http://basieproject.org/#credits">the whole team</a> for all their hard work.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3533.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Polymorphism</title>
		<link>http://third-bit.com/blog/archives/3350.html</link>
		<comments>http://third-bit.com/blog/archives/3350.html#comments</comments>
		<pubDate>Wed, 23 Dec 2009 20:49:09 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3350</guid>
		<description><![CDATA[Yesterday, I asked if anyone was building something like Fossil using a NoSQL database.  In response, someone named Pete (who didn&#8217;t leave a real email address) asked, &#8220;Why NoSQL? This is a perfect application for an SQL database.&#8221;  Respectfully, I disagree, but my reason will take a little explaining. Over the past 16 months, several [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pyre.third-bit.com/blog/archives/3338.html">Yesterday</a>, I asked if anyone was building something like <a href="http://www.fossil-scm.org/">Fossil</a> using a NoSQL database.  In response, someone named Pete (who didn&#8217;t leave a real email address) asked, &#8220;Why NoSQL? This is a perfect application for an SQL database.&#8221;  Respectfully, I disagree, but my reason will take a little explaining.</p>
<p>Over the past 16 months, several waves of students have been working with me on a replacement for <a href="http://trac.edgewall.org">Trac</a> called <a href="http://basieproject.org">Basie</a>. Like Trac, Basie is meant to be a minimalist software forge: it combines version control, ticketing, wikis, the like into one package, but is much simpler than the open source and commercial forges that Jordi Cabot and I <a href="http://www.ddj.com/development-tools/220301068">surveyed</a>. Unlike Trac, Basie is built using modern web tools (<a href="http://www.djangoproject.com/">Django</a> and <a href="http://jquery.com/">jQuery</a>), and supports multiple projects per forge and per-project mailing lists out of the box.</p>
<p>We&#8217;ve dealt with quite a few design challenges while building Basie, and have a few more piled up to worry about in January&#8212;see, for example, Ian Lienert&#8217;s post about <a href="http://blog.basieproject.org/?p=1651">deleting vs. hiding</a>, or Andrew Schurman&#8217;s look at <a href="http://blog.basieproject.org/?p=1629">why integrating with IRC is hard</a> (short answer: channel management). Many of the hardest challenges, though, have a common root cause: relational databases don&#8217;t support polymorphism. Take tagging, for example: in order to find all items tagged with &#8220;upgrade&#8221;, we have to issue and aggregate multiple queries, because the entities that have been tagged are stored in separate tables. Not only does this hurt performance and make the code (much) harder to understand, it also means makes plug-and-play extensibility a lot harder, since anyone who wants to add a new module to Basie has to either edit the tagging code to reference that new module, or wrestle with some not-yet-implemented registration and callback mechanism that moves the grief out of Django&#8217;s ORM (where it belongs) and into pure Python code.</p>
<p>We ran into the same problem building the status dashboard, where we wanted one module (the dashboard) to be able to ask questions of others <em>without</em> knowing exactly what those others were or how they were implemented. This is trivial in a programming language that provides polymorphism (as almost all modern languages do), but there&#8217;s no standard, straightforward way to do it with SQL.</p>
<p>Hence my interest in NoSQL databases. What they&#8217;re explicitly doing is setting aside the &#8220;rows and columns&#8221; model in favor of&#8212;well, in favor of a bunch of different things, depending on which one we&#8217;re talking about. But in doing that, they&#8217;re sort-of-accidentally making a lot of other innovations possible. After all, if PostgreSQL came out with some kind of polymorphism extension, I probably wouldn&#8217;t use it, because I wouldn&#8217;t want to be tied to any one relational database. If I choose to use <a href="http://www.mongodb.org">MongoDB</a> or <a href="http://couchdb.apache.org/">CouchDB</a>, though, I&#8217;m committing to a single-source solution anyway, so why not make full use of everything it offers?  Simon Willison (who knows much more about all of this than I do) <a href="http://simonwillison.net/2009/Jun/30/mongodb/">made a similar point</a> in July when asked how hard it would be to get Django running on top of MongoDB:</p>
<blockquote><p>I remain sceptical of projects that attempt to map Django&#8217;s extremely relational ORM to non-relational backends. Why would you want to do this in the first place? Presumably because you want to use parts of the Django ecosystem &#8211; in particular the admin, generic views and pagination &#8211; with a different persistent store.</p>
<p>I would argue that you don&#8217;t want a ORM backend for MongoDB &#8211; instead, you want the admin, generic views and pagination to work with alternative storage mechanisms. Instead of depending directly on the ORM, they should make use of an abstract interface which can be mapped to the ORM but can also map to other types of persistent store.</p></blockquote>
<p>See also <a href="http://railstips.org/2009/12/18/why-i-think-mongo-is-to-databases-what-rails-was-to-frameworks">this article</a> from John Nunemaker.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3350.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Calling All Django and jQuery Developers</title>
		<link>http://third-bit.com/blog/archives/3251.html</link>
		<comments>http://third-bit.com/blog/archives/3251.html#comments</comments>
		<pubDate>Sun, 06 Dec 2009 21:26:42 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=3251</guid>
		<description><![CDATA[We&#8217;re about to release version 0.6 of Basie, a replacement for Trac built on Django and jQuery. Before we dive into work on 0.7 at the beginning of January, we&#8217;d welcome some code and design reviews from experienced Django and jQuery developers. We have some nice coffee mugs to send as thank-yous&#8230;]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re about to release version 0.6 of <a href="http://basieproject.org">Basie</a>, a replacement for <a href="http://trac.edgewall.org">Trac</a> built on <a href="http://www.djangoproject.com/">Django</a> and <a href="http://jquery.com/">jQuery</a>. Before we dive into work on 0.7 at the beginning of January, we&#8217;d welcome some code and design reviews from experienced Django and jQuery developers. We have some nice <a href="http://www.cafepress.ca/Basie.395306034">coffee mugs</a> to send as thank-yous&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/3251.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Congratulations to the MarkUs Team</title>
		<link>http://third-bit.com/blog/archives/2868.html</link>
		<comments>http://third-bit.com/blog/archives/2868.html#comments</comments>
		<pubDate>Sun, 30 Aug 2009 19:13:33 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=2868</guid>
		<description><![CDATA[MarkUs, a Rails-based tool for marking student programming assignments, just released Version 0.5. MarkUs aims to provide the convenience and flexibility of pen-and-paper marking over the web; it will be deployed this fall at the University of Toronto, and is one of the eight cross-country open source projects we&#8217;ll be working on starting in&#8212;um, really? [...]]]></description>
			<content:encoded><![CDATA[<p>MarkUs, a Rails-based tool for marking student programming assignments, just released <a href="http://blog.markusproject.org/?p=238">Version 0.5</a>. MarkUs aims to provide the convenience and flexibility of pen-and-paper marking over the web; it will be deployed this fall at the University of Toronto, and is one of the eight <a href="http://ucosp.wordpress.com">cross-country open source projects</a> we&#8217;ll be working on starting in&#8212;um, really? Just one week from now?</p>
<p>And speaking of the fall, Bill Konrad has posted some ideas about <a href="http://blog.basieproject.org/?p=917">what&#8217;s next for Basie</a>. If you have preferences, we&#8217;d be grateful for your input.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/2868.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Basie Version 0.5</title>
		<link>http://third-bit.com/blog/archives/2841.html</link>
		<comments>http://third-bit.com/blog/archives/2841.html#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:02:25 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=2841</guid>
		<description><![CDATA[We are very pleased to announce the release of Version 0.5 of Basie, a lightweight software project forge built on Django that borrows many ideas from Trac and DrProject. As this screencast shows, its features include: Multiple projects per forge Role-based access control and pluggable user account management Subversion repository browser Cross-component search Per-project wiki [...]]]></description>
			<content:encoded><![CDATA[<p>We are very pleased to announce the release of <a href="http://basieproject.org">Version 0.5 of Basie</a>, a lightweight software project forge built on <a href="http://www.djangoproject.com">Django</a> that borrows many ideas from <a href="http://trac.edgewall.org">Trac</a> and <a href="http://www.drproject.org">DrProject</a>. As <a href="http://www.youtube.com/watch?v=LDQlaO1PTVw">this screencast</a> shows, its features include:</p>
<ul>
<li>Multiple projects per forge</li>
<li>Role-based access control and pluggable user account management</li>
<li>Subversion repository browser</li>
<li>Cross-component search</li>
<li>Per-project wiki with standard <a href="http://www.wikicreole.org/">WikiCreole</a> syntax</li>
<li>A simple ticketing system</li>
<li>Web-based administration</li>
<li>REST API for web services</li>
<li>Available in English, Bulgarian, Chinese, French, German, Hungarian, and Japanese</li>
<li>Graphical dashboard showing project statistics and history (in beta)</li>
</ul>
<p>Basie is still very much a work in progress (we picked &#8220;0.5&#8243; as a version number because we figure it&#8217;s halfway done <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ), but we are very pleased with how it&#8217;s coming along, and invite anyone who is interested in trying it out, or helping with its development, to <a href="mailto:gvwilson@cs.utoronto.ca">get in touch</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/2841.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fall Projects Redux</title>
		<link>http://third-bit.com/blog/archives/2769.html</link>
		<comments>http://third-bit.com/blog/archives/2769.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 23:24:35 +0000</pubDate>
		<dc:creator>Greg Wilson</dc:creator>
				<category><![CDATA[Basie]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://pyre.third-bit.com/blog/?p=2769</guid>
		<description><![CDATA[Now that the Software Carpentry course is over, it&#8217;s time to get back to planning projects for the fall, and there&#8217;s good news on two fronts.  The first is that we had a very productive meeting on Tuesday about projects using the City of Toronto&#8217;s data.  The CUPE strike may mean that we start off [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the Software Carpentry course is over, it&#8217;s time to get back to planning projects for the fall, and there&#8217;s good news on two fronts.  The first is that we had a very productive meeting on Tuesday about <a href="http://pyre.third-bit.com/blog/archives/2665.html">projects using the City of Toronto&#8217;s data</a>.  The CUPE strike may mean that we start off using canned data instead of live feeds, but lots of people are willing to put in time to help our students figure out what&#8217;s worth building and how to build it.  Ten undergraduate and two graduate students are already signed up; on past experience, we&#8217;ll probably have 15 and 20 respectively by the time we start work.</p>
<p>The second piece of news is about the <a href="http://pyre.third-bit.com/blog/archives/2692.html">cross-Canada undergraduate projects</a>.  We now have interested faculty at:</p>
<ul>
<li><a href="http://www.cs.ualberta.ca">University of Alberta</a></li>
<li><a href="http://www.cpsc.ucalgary.ca">University of Calgary</a></li>
<li><a href="http://www.sce.carleton.ca">Carleton University</a></li>
<li><a href="http://encs.concordia.ca/">Concordia University</a></li>
<li><a href="http://www.polymtl.ca/gigl/">École Polytechnique de Montréal</a></li>
<li><a href="http://www.cs.mun.ca/">Memorial University</a></li>
<li><a href="http://www.cs.queensu.ca/">Queen&#8217;s University</a></li>
<li><a href="http://www.usherbrooke.ca/informatique/">Université de Sherbrooke</a></li>
<li><a href="http://www.cs.queensu.ca/">Simon Fraser University</a></li>
<li><a href="http://www.cs.utoronto.ca">University of Toronto</a></li>
<li><a href="http://www.cs.uvic.ca">University of Victoria</a></li>
<li><a href="http://www.cs.uwaterloo.ca">University of Waterloo</a></li>
<li><a href="http://www.eng.uwo.ca/">University of Western Ontario</a></li>
</ul>
<p>and several have already started recruiting students.  Our project list has also grown to include:</p>
<ul>
<li><a href="http://basieproject.org">Basie</a></li>
<li><a href="http://wiki.eclipse.org/Eclipse_IDE_for_Education">Eclipse IDE for Education</a></li>
<li><a href="http://blog.jonudell.net/elmcity-project-faq/">Elmcity</a></li>
<li><a href="http://markusproject.org/">MarkUs</a></li>
<li><a href="http://www.robocup.org">RoboCup</a></li>
<li>WikiDev</li>
</ul>
<p>I&#8217;m stoked <img src='http://third-bit.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   For more information about both sets of projects, please see the <a href="http://www.cdf.toronto.edu/~csc490h/fall/">combined course page</a>. And if you&#8217;d like to get involved, please give me a shout.</p>
]]></content:encoded>
			<wfw:commentRss>http://third-bit.com/blog/archives/2769.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

