<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.unbracketed.org/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.unbracketed.org/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Unbracketed</title><link>http://unbracketed.org/</link><description>Latest Postings from Unbracketed</description><language>en-us</language><lastBuildDate>Sun, 06 Jul 2008 19:31:23 -0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.unbracketed.org/Unbracketed" type="application/rss+xml" /><item><title>Django Komodo Kit Project</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/327802491/</link><description>&lt;p&gt;Based on some &lt;a href="http://groups.google.com/group/django-users/browse_thread/thread/e3b67ae85c169e38"&gt;mutual interest&lt;/a&gt; I am launching the &lt;a href="http://code.google.com/p/django-komodo-kit/"&gt;Django Komodo Kit&lt;/a&gt; project.
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/jul/05/django-komodo-kit-project/</guid><feedburner:origLink>http://unbracketed.org/2008/jul/05/django-komodo-kit-project/</feedburner:origLink></item><item><title>Queryset-Refactor Lands in Trunk</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/279880803/</link><description>&lt;p&gt;Malcolm Tredinnick (whom Adrian Holovaty described in his PyCon 2008 presentation as &amp;quot;this Australian guy who is like a Django god&amp;quot;) has just finished merging the queryset-refactor branch into trunk.  The &lt;a href="http://code.djangoproject.com/wiki/QuerysetRefactorBranch" title="Queryset-Refactor Wiki Page"&gt;wiki page&lt;/a&gt; summarizes the changes in detail so go ahead and take a gander there to get a glimpse of what to expect.  Collectively this branch brings a number of features that will make it more intuitive to get the results you want with less code. &lt;a href="http://www.djangoproject.com/documentation/model-api/#model-inheritance" title="Django Model Inheritance"&gt;Model inheritance&lt;/a&gt; (&lt;a href="http://unbracketed.org/2008/feb/21/model-inheritance-hits-queryset-refactor-branch/" title="Unbracketed: Django Model Inheritance"&gt;covered earlier here&lt;/a&gt;) will also be a big win.
&lt;/p&gt;
&lt;p&gt;One nice side effect of the merge is that once the &lt;a href="http://code.djangoproject.com/wiki/NewformsAdminBranch" title="Django Newforms-Admin Branch Wiki Page"&gt;newforms-admin branch&lt;/a&gt; merges with trunk to incorporate these changes, developers won't have to choose between the two branches anymore. If you are preparing your applications for the goodness that Django will soon bring you now only need to code against the newforms-admin branch.
&lt;/p&gt;
&lt;p&gt;It is hardly enough to just give kudos to Malcolm for his work. Well, to be sure many others put in effort in terms of ideas, advice, reviewing, and testing code. However Malcolm did the heavy lifting and the desire to produce a first-class product shines through.  This may be a little unfair to take his words out of context, but on his blog about a month ago he mentioned:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;I've been doing all this reading in an attempt to get out of a bit of a funk about writing code and designing things. It's not too serious, but I'm grumpy a lot and missing the feeling of being enthusiastic about stuff and have been spending a lot of time trying to work out why this is the case...
&lt;/p&gt;
&lt;p&gt;...I want to work on something that matters, something that has a completion point and will be useful. Contributing to projects like Django are still fun, obviously, but that's mostly doing little things to help out others and sometimes I'm not as invested in it as I should be. I think I'm missing the fun of working on something that is hard but realistic and which can be said at some point to be done. I'm also worried that the lack of periodic work with teams is not giving me any outlet for ideas or source of problems. I'm hardly a hermit, but I sometimes miss working closely with other people and succeeding together on something that is non-trivial. Self-education is fun and something I do a lot, but the real world tends to throw up a lot of interesting problems that you don't see in the books. 
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.pointy-stick.com/blog/2008/03/31/software-development-motivation/" title="Software Development Motivation"&gt;Defying Classification: Software Development Motivation&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;I think Malcolm is being modest and/or underestimating his own abilities here. I've never written an ORM but I've used a handful across a few languages and I've put just enough thought into their construction to realize that they are complex beasts to get right. When one accounts for the fact that Malcolm also regularly participates in the &lt;a href="http://groups.google.com/group/django-users" title="Django User Group on Google Groups"&gt;Django user group&lt;/a&gt; as well as fixing bugs it becomes clear that this is one talented guy. I believe that Malcolm is truly a shining star in open source development and we in the Django community are very fortunate to be able to utilize his efforts.
&lt;/p&gt;
&lt;p&gt;Malcolm &lt;a href="http://42topics.com/blog/2008/04/an-interview-with-malcolm-tredinnick/" title="42topics Interview with Malcolm Tredinnick"&gt;recently interviewed&lt;/a&gt; by the 42topics blog and also made an appearance on the &amp;quot;&lt;a href="http://blog.michaeltrier.com/2008/4/22/this-week-in-django-19-2008-04-20" title="This Week in Django"&gt;This Week in Django&lt;/a&gt;&amp;quot; podcast.  If you are fortunate enough to encounter him in a social setting please do pay for his meal, buy him a beverage, and pass along an enthusiastic thanks for me. 
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/apr/28/queryset-refactor-lands-trunk/</guid><feedburner:origLink>http://unbracketed.org/2008/apr/28/queryset-refactor-lands-trunk/</feedburner:origLink></item><item><title>A Delicious Perspective on Popular Django Projects</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/279691139/</link><description>&lt;p&gt;After hearing from Bryan over at &lt;a href="http://www.djangoplugables.com/" title="Django Plugables Home Page"&gt;Django Plugables&lt;/a&gt; that tagging on the list of projects would not be open to outside input, he was open to the idea of pulling data from &lt;a href="http://del.icio.us/" title="Delicious Home Page"&gt;Delicious&lt;/a&gt; as a starting point.  I came across an &lt;a href="http://www.niallkennedy.com/blog/2006/12/delicious-url-api.html" title=""&gt;entry on Niall Kennedy's blog&lt;/a&gt; pointing to a &lt;a href="http://del.icio.us/help/json/url" title="Del.icio.us badge JSON call"&gt;JSON URL feed&lt;/a&gt; being available and it seemed like that would do the trick. Please note that this API is probably not intended to be used for general data harvesting. I did throttle my requests way back to be respectful. Make sure you read and understand the terms and conditions surrounding this API before using it.
&lt;/p&gt;
&lt;p&gt;Following my own curiosities, I created a list of the 25 most popular projects from Django Plugables based on total posts in Delicious to URLs associated with those projects. Below you will also find a tag cloud that shows all Delicious tags associated with all of the Django Plugables projects. Hovering over a tag will list the associated projects with links to their respective project page at Django Plugables.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;Let's take a quick moment to acknowledge that this sampling is not intended to be a well-thought out or authoritative statement on the actual use/popularity of projects that exist within the Django community. It is merely the outcome of an exercise - produced by combining data from two isolated resources. If one were to order the projects listed at Django Plugables (as of April 20, 2008), the 25 most popular bookmarked at Delicious are:
&lt;/p&gt;

&lt;h3&gt;Top 25 Projects (With Total Delicious Posts for Associated URLs)&lt;/h3&gt;
&lt;ol&gt;
 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/satchmo/" title=""&gt;satchmo&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (371)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-tagging/" title=""&gt;django-tagging&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (321)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-registration/" title=""&gt;django-registration&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (255)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/typogrify/" title=""&gt;typogrify&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (247)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-evolution/" title=""&gt;django-evolution&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (222)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-rest-interface/" title=""&gt;django-rest-interface&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (138)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-photologue/" title=""&gt;django-photologue&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (131)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-openid/" title=""&gt;django-openid&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (127)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-template-utils/" title=""&gt;django-template-utils&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (117)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/sorl-thumbnail/" title=""&gt;sorl-thumbnail&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (110)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-mptt/" title=""&gt;django-mptt&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (88)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-rosetta/" title=""&gt;django-rosetta&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (88)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-comment-utils/" title=""&gt;django-comment-utils&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (87)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-sphinx/" title=""&gt;django-sphinx&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (85)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/sphene/" title=""&gt;sphene&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (85)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-voting/" title=""&gt;django-voting&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (79)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-queue-service/" title=""&gt;django-queue-service&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (75)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-atompub/" title=""&gt;django-atompub&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (73)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-pressroom/" title=""&gt;django-pressroom&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (66)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-contact-form/" title=""&gt;django-contact-form&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (58)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/diamanda/" title=""&gt;diamanda&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (57)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/tranquil/" title=""&gt;tranquil&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (54)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-logging/" title=""&gt;django-logging&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (53)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-threadedcomments/" title=""&gt;django-threadedcomments&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (53)
 &lt;/li&gt;

 &lt;li&gt;
     &lt;em&gt;&lt;/em&gt;&lt;a href="http://djangoplugables.com/projects/django-forum/" title=""&gt;django-forum&lt;/a&gt;&lt;em&gt;&lt;/em&gt; (51)
 &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nothing surprising there. We can generalize the list to say that each of those projects meets some set of the following criteria:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     Has been in existence for a while
 &lt;/li&gt;

 &lt;li&gt;
     Was authored by someone who has been with the community for a while
 &lt;/li&gt;

 &lt;li&gt;
     Provides functionality or features common to most web applications
 &lt;/li&gt;

 &lt;li&gt;
     Well written, portable Django code
 &lt;/li&gt;

 &lt;li&gt;
     Follows in the footsteps of Django's roots as a publishing platform
 &lt;/li&gt;

 &lt;li&gt;
     Just frickin' cool
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;script type="text/javascript" src="/site_media/js/jquery.js"&gt;&lt;/script&gt;
   &lt;script type="text/javascript" src="/site_media/js/jquery/plugins/hovertip.js"&gt;&lt;/script&gt;
   &lt;script type="text/javascript" src="/site_media/js/extended_content/delicious_django_tag_cloud.js"&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;Here is the set of tags associated with all projects listed at Django Plugables (as of April 20, 2008):
   &lt;div id="delicious-tags" class="extended-content-widget" style="border-top: 1px solid #000;border-bottom:1px solid #000"&gt;
   Loading additional content...
   &lt;/div&gt;
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/apr/28/delicious-perspective-popular-django-projects/</guid><feedburner:origLink>http://unbracketed.org/2008/apr/28/delicious-perspective-popular-django-projects/</feedburner:origLink></item><item><title>Find Apps to Wire Up Your Django Site at Django Plugables</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/271065881/</link><description>&lt;p&gt;One of the major underlying design principles of the Django framework is that sites should be composed of numerous modules - each with a specific purpose.  This is the &lt;a href="http://en.wikipedia.org/wiki/Unix_philosophy" title="UNIX Philosophy"&gt;same ethos&lt;/a&gt; that has fueled both the reputation and growth of UNIX-based operating systems. With the recent explosion and certain continual growth of Django, a wonderful natural side effect will be a proliferation of great components providing features common to web applications. The task then becomes searching for and filtering the results to find exactly what you are looking for. &lt;a href="http://www.djangoplugables.com/" title="Django Plugables Home"&gt;Django Plugables&lt;/a&gt; has stepped up to ease this process significantly.
&lt;/p&gt;
&lt;p&gt;Conceived by &lt;a href="http://revyver.com/" title="Revyver Home"&gt;Revyver&lt;/a&gt;, the site has a clean, spiffy design. Yet another successful example of self-proclaimed designers learning Django and being productive with it in a jiffy. This already helpful site should morph into a very useful utility once their proposed features surface.&lt;br /&gt;

&lt;/p&gt;

&lt;h3&gt;Current Features&lt;/h3&gt;
&lt;p&gt;The main pieces of functionality the site currently offers are:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     A &lt;a href="http://www.djangoplugables.com/projects/" title="Django Plugables Projects Page"&gt;list of hand-selected projects&lt;/a&gt; with brief descriptions.
 &lt;/li&gt;

 &lt;li&gt;
     A &lt;a href="http://www.djangoplugables.com/developers/" title="Django Plugables Developers Page"&gt;list of developers&lt;/a&gt; and their collective projects.&lt;br /&gt;

 &lt;/li&gt;

 &lt;li&gt;
     A &lt;a href="http://www.djangoplugables.com/repositories/" title="Django Plugables Repositories List"&gt;handy page&lt;/a&gt; (dubbed EzayRepo) for doing quick repository lookups for your favorite projects.&lt;br /&gt;

 &lt;/li&gt;

 &lt;li&gt;
     Feeds for &lt;a href="http://djangoplugables.com/feeds/commits/" title="Django Plugables Recent Commits Feed"&gt;recent commits&lt;/a&gt; (across all projects) and &lt;a href="http://djangoplugables.com/feeds/projects/" title="Django Plugables Recent Projects Feed"&gt;recently added projects&lt;/a&gt;. 
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Searching the Projects page is the main way to filter projects at the moment but this should improve tremendously with the addition of tagging. The developer listing is a nice way to give credit to generous community members who are making their work available. They've made clear that they are not focused on creating a social-network so only the most details about project authors are listed. This should help ensure that the site's usefulness as a utility can remain a priority for the site.
&lt;/p&gt;

&lt;h3&gt;Coming Soon&lt;/h3&gt;
&lt;p&gt;Voting, comments, and per-project feeds will join project tagging as new features in future iterations. It is not clear to me whether users will be able to add tags to existing projects.  I am personally hoping they will make a basic REST API available because the data on this site will dovetail nicely into a community resource organization tool I am creating. I think others might find the data useful as well - I can imagine in areas such as build systems and administration.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;I am looking forward to utilizing this site as a time saver in the future. More importantly, the site should go a long way toward gaining exposure for well-written, useful projects which will in turn do its part toward accelerating the adoption of Django. Very nice job Bryan and Jen!
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/apr/15/find-apps-wire-your-django-site-django-plugables/</guid><feedburner:origLink>http://unbracketed.org/2008/apr/15/find-apps-wire-your-django-site-django-plugables/</feedburner:origLink></item><item><title>Integrate markItUp! Into the Django Admin</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/262796080/</link><description>&lt;h3&gt;What is markItUp?&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://markitup.jaysalvat.com/home/" title="markItUp Home Page"&gt;markItUp!&lt;/a&gt; is attempting to be a universal markup editor that will support working with a variety of markup syntaxes. It is simple to setup and can turn any textarea into a full-fledged editor with just a few lines of code. They've also provided a lot of hooks to make it customizable so you can easily add new features or change the behavior.  The &lt;a href="http://markitup.jaysalvat.com/documentation/" title="markItUp Documentation"&gt;documentation &lt;/a&gt; still needs a fair bit of work, but I was able to get it up and running by just poking around.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;My motivation for investigating markItUp was that I realized a need to create some editing tools that would reduce the time it takes me to write posts and automate some of the styling that I like to use to highlight important keywords, people, and sites that I mention in my articles. But aren't markup syntaxes supposed to do this already?  Yes they do, but it can still be tedious to manually add lot of links and add specific styling. Let me point out that my mindset with the creation of this blog has been to benefit from the learning experience.  While I could of course use this, that, and the other tool/editor out there for building and managing my content, part of the enjoyment for me has been learning about the problem sets accompany publishing and content creation.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;I think it is a common pattern for us custom blog builders to represent posts with an Entry model that contains two fields to hold the actual content. One field holds the &amp;quot;raw&amp;quot; content - typically in a markup format - and the other field holds the display content.  Then we override the model's save method to process the markup content into HTML suitable for live content and stick that into the display field.  So what I was looking for was an easy way to beef up the raw content field with some utilities so that composing entries would be a little easier.
&lt;/p&gt;
&lt;p&gt;I just happened to come across markItUp and was pleased to see that it would probably provide much of what I wanted and it looks like I'll be able to customize it to provide the shortcuts that are specific to my writing and styling preferences. I'm also a fan of &lt;a href="http://jquery.com" title="jQuery Home Page"&gt;jQuery&lt;/a&gt;. Obviously it would be preferable to just extend the admin since it's already so powerful so if I could just drop something in that would make editing a little saner that would seem to be a huge win.
&lt;/p&gt;

&lt;h3&gt;Installing and Configuring markItUp!&lt;/h3&gt;
&lt;p&gt;I had a little confusion starting out because I followed the download link from the home page, which provides with you with the default set.  markItUp uses the notion of &amp;quot;sets&amp;quot; to configure the specific markup language to work with.  The default set is simply HTML.  Once I found the &lt;a href="http://markitup.jaysalvat.com/downloads/" title="markItUp Downloads Page"&gt;downloads page&lt;/a&gt; I realized that I needed to also grab the &lt;a href="http://markitup.jaysalvat.com/downloads/demo.php?id=markupsets/markdown" title="markItUp Markdown set"&gt;Markdown set&lt;/a&gt; (my preferred markup syntax at the moment).  From there installation proceeded well enough by combining referencing their sparse documentation with a few peeks into &lt;a href="http://www.getfirebug.com/" title="Firebug Home Page"&gt;Firebug&lt;/a&gt;.  In fact, I'm writing this post with the editor in place!
&lt;/p&gt;

&lt;h4&gt;Extending the Admin&lt;/h4&gt;
&lt;p&gt;All we really need to do is drop a few javascript and CSS references and a little javascript snippet into the _&lt;head&gt;_ to turn our textarea field into a markItUp! editor. If you've never done any admin customization before, take a gander through &lt;a href="http://djangobook.com/en/1.0/chapter17/" title="DjangoBook Chapter 17: Extending the Django Admin"&gt;the chapter in the Django book&lt;/a&gt;. I added a &lt;em&gt;change_form.html&lt;/em&gt; template to &lt;em&gt;/mytemplates/admin/article/entry&lt;/em&gt;. &amp;quot;mytemplates&amp;quot; is specified as a template directory in my Django settings, article is the app, and entry refers to the Entry model. The admin knows to look there first for any appropriate templates and load those rather its own template. Here is what my change_form.html template looks like:
&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;extends&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;admin/change_form.html&amp;quot;&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;

&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;block&lt;/span&gt; &lt;span class="nv"&gt;extrahead&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nb"&gt;block&lt;/span&gt;&lt;span class="nv"&gt;.super&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;MEDIA_URL&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;css/markitup/markdown/style.css&amp;quot; /&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; type=&amp;quot;text/css&amp;quot; href=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;MEDIA_URL&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;css/markitup/skins/markitup/style.css&amp;quot; /&amp;gt;&lt;/span&gt;

&lt;span class="x"&gt;&amp;lt;script src=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;MEDIA_URL&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;js/jquery.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;MEDIA_URL&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;js/markitup/jquery.markitup.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;&lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="nv"&gt;MEDIA_URL&lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="x"&gt;js/markitup/markdown/set.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot; &amp;gt;&lt;/span&gt;
&lt;span class="x"&gt;   $(document).ready(function() {&lt;/span&gt;
&lt;span class="x"&gt;      $(&amp;quot;#id_body&amp;quot;).markItUp(mySettings);&lt;/span&gt;
&lt;span class="x"&gt;   });&lt;/span&gt;
&lt;span class="x"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;endblock&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A few notes:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     The code snippet in the Django book does not include &lt;em&gt;{{block.super}}&lt;/em&gt;.  If you don't include this, then your change form won't pull in all of the helper scripts that provide some of the dynamic functionality you may rely on such as &amp;quot;pre-populate  from&amp;quot;.  I don't know why they don't mention this in the book, but in most cases you'll probably want the admin to have the normal scripts available.&lt;br /&gt;

 &lt;/li&gt;

 &lt;li&gt;
     The &amp;quot;markitup/markdown/style.css&amp;quot; comes from the &lt;a href="http://markitup.jaysalvat.com/downloads/demo.php?id=markupsets/markdown" title="markItUp Markdown set"&gt;Markdown set&lt;/a&gt; and it provides the styling for the Markdown-specific buttons on the toolbar. The other one comes from the default set and provides some of the basic styling for the editor regardless of what markup set you happen to be working with.
 &lt;/li&gt;

 &lt;li&gt;
     I had to do a little find/replace on the css files to get the background image paths to match up to my configuration.  The stylesheets assume that the images are all located in an images directory located at the root of the site.  I house all my media (images,css,js) under a &amp;quot;site_media&amp;quot; directory and then I like to organize resources into subfolders so the markItUp! default scheme didn't work for me.
 &lt;/li&gt;

 &lt;li&gt;
     The &amp;quot;set.js&amp;quot; comes from the Markdown set.  The defaults worked fine for me just to get everything going and I added a &lt;em&gt;previewParserPath&lt;/em&gt; (more on that in a minute).
 &lt;/li&gt;

 &lt;li&gt;
     The little javascript snippet simply directs markItUp! to the textarea on the page and sets up the editor with the settings that are specified in &amp;quot;set.js&amp;quot;. &lt;em&gt;#id_body&lt;/em&gt; refers to the textarea corresponding to the &lt;em&gt;body&lt;/em&gt; field on my Entry model. 
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all you need to do to get the editor working on a textarea on your admin change form page.  The editor also has a &amp;quot;Preview&amp;quot; button (the checkmark) which will show the actual output in an iFrame below your textarea - a very handy feature!  However you need to do a little extra work to have that functionality available. 
&lt;/p&gt;

&lt;h4&gt;Adding Preview Functionality&lt;/h4&gt;
&lt;p&gt;The editor will simply make an XHR POST with the markup content and dump the response back into the iFrame.  So you just need to set up a view that will accept a &lt;em&gt;data&lt;/em&gt; POST parameter, format it according to your preferred markup syntax, and return a full HTML page containing the output. Here is what a view could look like - add in your own exception handling and error checking to taste:
&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;markdown&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;markdown&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.template.context&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;RequestContext&lt;/span&gt;
&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.shortcuts&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;render_to_response&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;apply_markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;markup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;POST&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;data&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;extensions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;codehilite&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;render_to_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;utils/markup/markdown/preview.html&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                              &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;preview&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;markup&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                              &lt;span class="n"&gt;context_instance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;RequestContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You'll notice that I pass the codehilite extension to markdown to handle making code snippets all nice and pretty.  You may not need this in which case you can simply omit the second parameter.  I am using a &lt;em&gt;RequestContext&lt;/em&gt; since I would like access to the MEDIA_URL in the template. This makes it easy to include the special stylesheet utilized by codehilite in a portable manner (syntax.css).  Here is the template:
&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Markdown Preview&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;{{MEDIA_URL}}css/syntax.css&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    {{preview|safe}}
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The last thing to get this working is to add the path to your view in the &lt;em&gt;previewParserPath&lt;/em&gt; in the set.js.  Now you can simply hit the Preview button and get an idea of what your final output will look like.  One minor annoyance is that once the Preview iFrame is open there does not appear to be an easy way to close it and what will happen is that as you continue editing your markup the iFrame will refresh whenever you hit Enter.&lt;br /&gt;

&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;One issue worth a little attention is that if you are using the built-in development server to serve media with the Django static media view, adding in the markItUp! editor will add a lot of overhead since it pulls in a few extra javascripts, a few extra CSS files, and fair amount of small graphics to provide the toolbar.  As the Django documentation clearly states, the development server was not designed with media serving in mind.  You may find that your admin pages bog down quite a bit on loading. If this bugs you, I recommend taking a few minutes to set up a local media server for yourself.  That way you'll get the benefits of the debug environment combined with the snappy performance of a dedicated file server.
&lt;/p&gt;
&lt;p&gt;markItUp! has already provided some tangible benefits to my work flow and I am looking forward to doing some further customization to make it even more useful.  In a future article I plan to cover any useful bits I come across.  markItUp! may not be for everyone.  In particular there are some known issues with how Safari handles events on Ctrl and Shift keys.  Also, this is still beta software so use at your own risk.  As I mentioned, the documentation could benefit from a little more detail and some more code examples.&lt;br /&gt;

&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/apr/02/integrate-markitup-django-admin/</guid><feedburner:origLink>http://unbracketed.org/2008/apr/02/integrate-markitup-django-admin/</feedburner:origLink></item><item><title>DjangoGears: Django and TurboGears to Merge</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/261977504/</link><description>&lt;p&gt;&lt;strong&gt;Please note that this entry was created for April Fool's Day (April 1).  It is not a factual story.  Thanks for visiting :)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;The core developers for both &lt;strong&gt;Django&lt;/strong&gt; and &lt;strong&gt;TurboGears&lt;/strong&gt; have been holding discussions on the IRC channel &lt;em&gt;#railsenvy&lt;/em&gt; for the past several weeks about plans to merge Django and TurboGears into a single code base.  Everyone is in agreement that having too much choice in the community for web frameworks is dangerous for users and detracts from the Python community.  The main cause for concern is the continuing growth of Rails and the worry that &lt;strong&gt;Erlang&lt;/strong&gt; and/or &lt;strong&gt;Smalltalk&lt;/strong&gt; frameworks will hypnotize developers into dropping Python altogether. Not to mention that &lt;strong&gt;Perl 6&lt;/strong&gt; is due to ship anytime in the next five years.  Coincidentally, &lt;strong&gt;Larry Wall&lt;/strong&gt; also joined into the discussions during the final phases and practically begged the group to get the new uber-framework standardized on the &lt;strong&gt;Parrot&lt;/strong&gt; virtual machine, which they agreed to.
&lt;/p&gt;
&lt;p&gt;They are still working out the final details but here is what is known so far:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     Much of the core functionality will be transfered to the client-side in order to alleviate performance problems. They are still debating over whether any of the current AJAX libraries will be up to the task or if they should just roll their own.&lt;br /&gt;

 &lt;/li&gt;

 &lt;li&gt;
     The ORM will be redesigned from the ground up.  Neither Django's ORM nor SQLAlchemy represent the quality of what developers will want going forward.  The queryset-refactor branch has always had a hush-hush underlying motive of being a practice round for this work.  One thing that was learned is that ORMs are just too difficult to write and even more difficult to use.  This is largely due to inherent flaws in the expressiveness of SQL and the group has already worked out a new and improved way for dealing with databases that should send shockwaves through the industry. The new language is sytantically based on COBOL and in fact they have found that much of the COBOL implementation provides the majority of what is needed. 
 &lt;/li&gt;

 &lt;li&gt;
     The current template system in Django falls far short of being usable. The Django developers have long admitted that not having access to the full Python interpreter from the scope of the template is a serious deficiency.  PHP developers assigned to Django projects have been known to suddenly become afflicted with all sorts of medical problems when they discover this weakness. TurboGears has already solved this problem by utilizing up to 6 or 7 independent templating engines simultaneously.  However, none of these other engines will match the innovation of the custom engine they are creating just for this project.  The syntax resembles Lisp and will consequently be heavily functional based.  One of the coolest features in my opinion is that you can also create blocks of LOGO code (the turtle style) for drawing boxes, lines, and other shapes on your page.  This should be a tremendous benefit since doing styling with CSS is difficult and non-intuitive.
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all seriously exciting news.  They should be making a formal announcement soon but they are waiting until the announcement page can be built on the working version of the new framework.
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/apr/01/djangogears-django-and-turbogears-merge/</guid><feedburner:origLink>http://unbracketed.org/2008/apr/01/djangogears-django-and-turbogears-merge/</feedburner:origLink></item><item><title>Two New Django Community Sites</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/260454886/</link><description>&lt;p&gt;Two new Django-powered sites entered &lt;a href="http://en.wikipedia.org/wiki/Series_of_tubes"&gt;the tubes&lt;/a&gt; this week that should be beneficial to the Django community: &lt;span class="keyword green"&gt;&lt;a href="http://djangofriendly.com/hosts/"&gt;DjangoFriendly&lt;/a&gt;&lt;/span&gt; and &lt;span class="keyword green"&gt;&lt;a href="http://www.djangopost.com/"&gt;DjangoPost&lt;/a&gt;&lt;/span&gt;. 
&lt;/p&gt;

&lt;h3&gt;DjangoFriendly&lt;/h3&gt;
&lt;p&gt;&lt;span class="keyword green"&gt;&lt;a href="http://djangofriendly.com/hosts/"&gt;DjangoFriendly&lt;/a&gt;&lt;/span&gt; is a site that provides a list of web hosts that provide explicit Django hosting. A simple voting interface common to Web 2.0 applications allows users to show their indicate their support or dismay for the quality of service provided by the various hosting companies.  Built by  &lt;span class="keyword green"&gt;&lt;a href="http://ryanberg.net/about/"&gt;Ryan Berg&lt;/a&gt;&lt;/span&gt;, the site has a slick design capturing the green shades that we all know and love from the official Django sites (home and book).&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;At this time the site does not accept submissions for new web hosts. Ryan generated the current set by mining the data on the Django wiki.  A tremendously valuable feature is user-submitted reviews.  I'm both pleased and surprised to see that  &lt;span class="keyword blue"&gt;&lt;a href="http://webfaction.com/"&gt;WebFaction&lt;/a&gt;&lt;/span&gt; is (currently) at the top of the list.  I've been with them for a while and have always been well pleased with the quality of support and the service in general.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;In true Django fashion, Ryan took advantage of a few exisiting apps to provide the bulk of functionality:  &lt;span class="keyword green"&gt;&lt;a href="http://insin.webfactional.com/weblog/"&gt;Jonathan Buchanan's&lt;/a&gt;&lt;/span&gt;  &lt;span class="keyword green"&gt;&lt;a href="http://code.google.com/p/django-voting/"&gt;django-voting&lt;/a&gt;&lt;/span&gt; and  &lt;span class="keyword green"&gt;&lt;a href="http://code.google.com/p/django-tagging/"&gt;django-tagging&lt;/a&gt;&lt;/span&gt;, and  &lt;span class="keyword green"&gt;&lt;a href="http://b-list.org/"&gt;James Bennett's&lt;/a&gt; &lt;a href="http://code.google.com/p/django-registration/"&gt;django-registration&lt;/a&gt;&lt;/span&gt;.  Ryan, like  &lt;span class="keyword green"&gt;&lt;a href="http://jeffcroft.com/"&gt;Jeff Croft&lt;/a&gt;&lt;/span&gt;, is one of those self-professed non-programmer designers who are a testament to what can be done with dynamic languages like Python and frameworks like Django with a little desire.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ryanberg.net/blog/2008/mar/26/introducing-django-friendly-hosts/"&gt;See Ryan's announcement post&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;DjangoPost&lt;/h3&gt;
&lt;p&gt;&lt;span class="keyword green"&gt;&lt;a href="http://www.djangopost.com/"&gt;DjangoPost&lt;/a&gt;&lt;/span&gt; is a Digg-style site with a goal of focusing solely on Django-related news.  This should be a great resource both for Django fans looking to keep up with the latest news as well as writers targeting the Django community.  The site is created by &lt;a href="http://www.awarelabs.com/home/"&gt;Aware Labs&lt;/a&gt; who also created the &lt;a href="http://blog.awarelabs.com/?p=37"&gt;Arkayne portal system&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The design is bland but purposeful and categories have been set up to help differentiate the content.  In particular the styling of the voting controls and popularity counts seem a little out of place but that won't detract from the functionality of the site.  The site offers a widget that can be embedded in any site and they are also making a code available specifically for Wordpress sites.  In addition to filtering results from established sites like Delicious and Reddit, DjangoPost should provide a convenient central location for finding Django specific content.
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.awarelabs.com/?p=44"&gt;See the announcement on Aware Labs&lt;/a&gt;
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/mar/29/two-new-django-community-sites/</guid><feedburner:origLink>http://unbracketed.org/2008/mar/29/two-new-django-community-sites/</feedburner:origLink></item><item><title>PyCon 2008: Django Now Plays on the &amp;quot;Dark Side&amp;quot;</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/252726416/</link><description>&lt;p&gt;Today I witnessed Django running on something other than CPython ...and that something wasn't &lt;a href="http://jython.org/Project/index.html" title="Jython Home"&gt;Jython&lt;/a&gt;.  The virtual machine in this case was &lt;a href="http://lambda-the-ultimate.org/node/2221" title="Lambda the Ultimate"&gt;Microsoft's DLR&lt;/a&gt; running &lt;a href="http://www.codeplex.com/IronPython" title="IronPython"&gt;IronPython&lt;/a&gt;.  This is exciting stuff!  I attended the &amp;quot;&lt;a href="http://us.pycon.org/2008/conference/schedule/event/84/" title="IronPython talk at PyCon2008"&gt;IronPython: The Road Ahead&lt;/a&gt;&amp;quot; talk given by &lt;a href="http://www.microsoft.com/opensource/heroes/jim.mspx" title="Jim Hugunin"&gt;Jim Hugunin&lt;/a&gt; with some assistance by &lt;a href="http://blogs.msdn.com/dinoviehland/" title="Dino Viehland blog"&gt;Dino Viehland&lt;/a&gt; who is the lead developer for IronPython at Microsoft.  For me, this was actually one of my favorite talks of the conference and was a nice cap to the official portion of the conference.  Jim really brings a lot of energy and it was easy to see that the IronPython team is really excited about the work they are doing.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;For the demo, Dino showed us the &lt;a href="http://www.djangoproject.com/download/" title="Get Django"&gt;latest Django release&lt;/a&gt; (v0.96) running on &lt;a href="http://www.codeplex.com/IronPython/Release/ProjectReleases.aspx?ReleaseId=10266"&gt;IronPython 2.0 Beta 1&lt;/a&gt; (which was just released on Friday).  He did have to make a few patches to get the demo running.  Naturally they chose to use MS SQL Server for their database and Django does not support that database by default.  A handful of one or two line changes to the Django source got it working for IronPython.  Additionally, there was another one line change or two that had to do with handling unicode properly.  He noted that with the trunk of Django that may no longer be an issue since Django now supports unicode throughout.  I spoke to Dino following the talk and he hopes to get the diffs he made available ASAP.  They also would like to get IronPython working with Django trunk.
&lt;/p&gt;
&lt;p&gt;Dino demonstrated the simple poll application that we're all familiar with from the Django official tutorials. He started with the vanilla version as would result from following the tutorials and then followed it up with a spruced-up version that included some video and image backgrounds, nice UI effects, and rich-client dynamic updating of the voting results.  All of this was of course accomplished with a minimal amount of Python code. &lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;Jim also showed a number of demonstrations – all focused on Silverlight capabilities.  From what I've seen of Silverlight so far, it looks like very cool technology.  If you haven't taken it for a spin yet, you might not be aware that Silverlight is a cross-browser and cross-platform plugin.  It runs in Internet Explorer, Firefox and Safari and is supported on Mac.  Novell and the &lt;a href="http://www.mono-project.com/Main_Page" title="Mono Project"&gt;Mono Project&lt;/a&gt; are also making a port available for Linux called &lt;a href="http://www.mono-project.com/Moonlight" title="Moonlight Home"&gt;Moonlight&lt;/a&gt;.  While Microsoft does not officially support Moonlight, they have contributed some help to Novell and even more importantly have made some of the codecs available.  Licensing remains a huge stumbling block for media distribution on open source platforms and Microsoft is helping to ensure that their Silverlight technology will enable a similar experience in a variety of situations.  Silverlight will also be &lt;a href="http://www.nokia.com/A4136001?newsid=1197788" title="Silverlight on Nokia"&gt;available on Nokia&lt;/a&gt; but so far is notably absent from &lt;a href="http://apple.com/iphone/"&gt;another very popular mobile platform&lt;/a&gt;. This gave them a rare opportunity to criticize another company for promoting a closed platform.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;As I said, Silverlight looks like some very cool technology and should be a major player in evolving  the consumer computing experience.  Jim mentioned that he was not previously familiar with Django and was pleasantly surprised after seeing Dino's demo code about how easy it was to create a web service exposing some data as JSON.  It was merely the simple application of &lt;a href="http://www.djangoproject.com/documentation/serialization/#serialization-formats"&gt;Django's JSON serializer&lt;/a&gt; to a queryset that we Djangonauts are familiar with.  A word of caution for early adopters and bleeding-edge pioneers: I spoke with Dino after the talk and he said that data binding is not yet functional for IronPython in Silverlight.  If you're not familiar with .NET parlance, “data binding” is the terminology for what is analogous to template tags and variables in Django.  Simply put, data binding allows you to associate fields of a data set to controls (widgets/elements) on your page.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;OK, so the title to this article was a bit of a shot across the bow toward MSFT.  Personally, I'm neither a Windows fan boy nor am I a hater.  In my experience many who are entrenched in open source (or more generally non-MS) technologies view Microsoft with a wary eye at best.  Although a little late to the party, Microsoft is starting to change their tune.  They are definitely making efforts to play nicer in the general developer communities.  I expect that if I am inaccurate in my legalese here someone will kindly step up and correct me, but IronPython is released under the &lt;a href="http://www.opensource.org/licenses/ms-pl.html"&gt;Microsoft Public License&lt;/a&gt; which is now &lt;a href="http://www.gartner.com/DisplayDocument?id=533717"&gt;OSI certified&lt;/a&gt;.  The fact that they took some effort to get Django running on IronPython demonstrates that they are interested in making sure that IronPython is truly Python.  This is quite a departure from the past for a company that is well-known for starting with a piece of standards-based technology and mangling it just enough to break standards compatibility and achieve platform lock-in.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;One thing Jim mentioned that was a high point for him was when new Chief Software Architect &lt;a href="http://www.microsoft.com/presspass/exec/ozzie/default.mspx"&gt;Ray Ozzie&lt;/a&gt; took the stage at Mix and &lt;a href="http://visitmix.com/blogs/Joshua/Day-1-Keynote/"&gt;mentioned IronPython&lt;/a&gt; (about 47 seconds in) as an exciting new development for Microsoft.  Certainly as IronPython continues to mature it will open for the door for Python acceptance into organizations and businesses of all shapes and sizes who already have a significant investment in .NET.&lt;br /&gt;

&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/mar/16/pycon-2008-django-now-plays-dark-side/</guid><feedburner:origLink>http://unbracketed.org/2008/mar/16/pycon-2008-django-now-plays-dark-side/</feedburner:origLink></item><item><title>PyCon 2008: Django (Pre-) Announces Nonprofit Organization</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/252126512/</link><description>&lt;p&gt;&lt;span class="keyword green"&gt;Adrian Holovaty&lt;/span&gt; began &amp;quot;&lt;a href="http://unbracketed.org/2008/mar/15/pycon-2008-state-django-adrian-holovaty/"&gt;The State of Django&lt;/a&gt;&amp;quot; presentation by saying that at the conclusion there would be an announcement about Django.  &lt;span class="keyword green"&gt;&lt;a href="http://jacobian.org/"&gt;Jacob Kaplan-Moss&lt;/a&gt;&lt;/span&gt; informed the crowd that they were in the process of forming a Django non-profit organization.  This will be a great step forward for the project in many ways.
&lt;/p&gt;
&lt;p&gt;There were not a lot of concrete details since they are early in the process of getting this setup, but they wanted to let the conference attendees in on the great news.  The most obvious benefits are that there will now be a single legal entity to shepherd the source code.  They will be able to accept donations in order to help the project grow.  The existence of a legal entity will provide a single point for individuals, communities, and enterprises to go to get support.  Such an organization will also provide a central point for reaching out into the broader community and fostering mutually beneficial relationships.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;This is great news for fans of Django and for the larger Python community as well!
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/mar/15/django-pre-announces-nonprofit-organization/</guid><feedburner:origLink>http://unbracketed.org/2008/mar/15/django-pre-announces-nonprofit-organization/</feedburner:origLink></item><item><title>PyCon 2008: State of Django by Adrian Holovaty</title><link>http://feeds.unbracketed.org/~r/Unbracketed/~3/252115956/</link><description>&lt;p&gt;&lt;span class="keyword green"&gt;&lt;a href="http://www.holovaty.com/"&gt;Adrian Holovaty&lt;/a&gt;&lt;/span&gt; took the stage at &lt;span class="keyword blue"&gt;&lt;a href="http://us.pycon.org/2008/"&gt;PyCon 2008&lt;/a&gt;&lt;/span&gt; to give a summary of the current state of Django.  &lt;span class="keyword green"&gt;&lt;a href="http://jacobian.org/"&gt;Jacob Kaplan-Moss&lt;/a&gt;&lt;/span&gt; 
   also jumped in to answer a few questions.  Adrian recapped what major developments have been occurring in the world of 
   Django during the last year and gave brief overviews of the important developments that we can look forward to on 
   the march toward a 1.0 release.
&lt;/p&gt;
&lt;p&gt;To begin, Adrian touched on the unique role PyCon has played with respect to the realization of Django and the 
   popularity it has gained.  It was at PyCon that they originally started showing the code around and were encouraged 
   to make it available as open source.  They feel that they have a special connection with PyCon in that it is a great time to connect 
   with the community at large, generate new ideas, and advance the code base via sprints.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;It was noted that at last year's PyCon the current Django release was v0.96 and at this time it is still the 
   recent release.  In the Django community, it is not uncommon for developers to run the trunk or fairly recent versions - even in production.  He acknowledged that in 
   some development cultures, running trunk is frowned upon and that fact alone keeps some companies and developers 
   from adopting Django.  The Django developers do not have a hard scheduled date for releasing v1.0 and he apologized to those who 
   work at companies that refuse to adopt Django until it reaches that status.
&lt;/p&gt;

&lt;h3&gt;Reviewing the Last Year&lt;/h3&gt;
&lt;p&gt;Among the various features, tweaks, and fixes that have been tackled during the last year, three were notable:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     &lt;span class="keyword green"&gt;&lt;a href="http://www.djangoproject.com/documentation/unicode/"&gt;Unicode support throughout&lt;/a&gt;&lt;/span&gt;.  All text data within Django is handled as Unicode now.  If any part of the 
framework gives you text data back, it will be in Unicode format
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword green"&gt;&lt;a href="http://www.djangoproject.com/documentation/templates/#automatic-html-escaping"&gt;Auto-escaping in templates&lt;/a&gt;&lt;/span&gt;.  Data output in templates (ex. &lt;em&gt;{{ somevar }}&lt;/em&gt;) will be escaped to convert unsafe 
characters to HTML entities.  This is a safety feature and it alleviates developers from having to remember to 
explicity escape data that could have come from user input.  Of course, there is an option to indicate that a 
piece of data does not need to be escaped and you can also disable escaping across larger scopes. 
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword green"&gt;&lt;a href="http://www.djangoproject.com/documentation/databases/#oracle-notes"&gt;Oracle support&lt;/a&gt;&lt;/span&gt; was added a few months ago.  This should make Django more attractive to enterprise-y developers 
and obviously for those who use Oracle as their database of choice.
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="keyword green"&gt;&lt;a href="http://code.djangoproject.com/wiki/GeoDjango"&gt;GeoDjango&lt;/a&gt;&lt;/span&gt; got a nice plug.  It is a branch of the Django project that is able to make use of geospatial extensions 
   so that you can add location or distance based capabilities to your objects.  For example, find all objects within 
   a radius of a particular object or find the geographic distance between two objects.  The guys at GeoDjango have 
   done a great job keeping the branch up to date with trunk. One nice side effect of the great work of GeoDjango is 
   providing a compelling draw for GIS professionals to invest in both Django and Python.&lt;br /&gt;

&lt;/p&gt;
&lt;p&gt;There were two development sprints in the past year: Sept. 6 and Nov. 11. There will be another sprint at PyCon 
   2008 following the main conference and starting on Monday. The sprints have been greatly beneficial to the project 
   as a whole in terms of getting features implemented, bugs fixed, and new ideas fleshed out. As of morning, Friday 
   March 14, there had been 2432 checkins to trunk during the past year. Much of that was due to the wonderful 
   support provided by the community.
&lt;/p&gt;
&lt;p&gt;Some notable sites beneficial to the community were launched during the past year:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     &lt;span class="keyword blue"&gt;&lt;a href="http://djangosites.org/"&gt;djangosites.org&lt;/a&gt;&lt;/span&gt; - a directory for listing sites created with Django
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword blue"&gt;&lt;a href="http://djangosnippets.org/"&gt;djangosnippets.org&lt;/a&gt;&lt;/span&gt; - a collection of community contributed snippets, recipes, and patterns
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword blue"&gt;&lt;a href="http://djangogigs.com/"&gt;djangogigs.com&lt;/a&gt;&lt;/span&gt; - Django based job listings and a place for Djangonauts to list themselves 
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword blue"&gt;&lt;a href="http://djangopeople.net/"&gt;djangopeople.net&lt;/a&gt;&lt;/span&gt; - a site where you can list your location and connect with other Djangonauts in your area
 &lt;/li&gt;

 &lt;li&gt;
     &lt;span class="keyword blue"&gt;&lt;a href="http://djangobook.com/"&gt;djangobook.com&lt;/a&gt;&lt;/span&gt; - the online version of Adrian and Jacob's book. A tremendous learning and reference resource for 
the community
 &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Coming Soon to a Trunk Near You&lt;/h3&gt;

&lt;h4&gt;QuerySet-Refactor&lt;/h4&gt;
&lt;p&gt;The &lt;span class="keyword green"&gt;&lt;a href="http://code.djangoproject.com/wiki/QuerysetRefactorBranch"&gt;queryset-refactor branch&lt;/a&gt;&lt;/span&gt; represents a major refactoring of the database query logic. If you've ever poked 
   around in Django's internals, you may have come across query.py which is a behemoth of a file.  The main focus of 
   this branch is to clean up code, address some deficiencies in the current API and provide the &lt;a href="http://unbracketed.org/2008/feb/21/model-inheritance-hits-queryset-refactor-branch/"&gt;much requested model 
inheritance capabilities&lt;/a&gt;. 
&lt;/p&gt;

&lt;h4&gt;Newforms-Admin&lt;/h4&gt;
&lt;p&gt;The &lt;span class="keyword green"&gt;&lt;a href="http://code.djangoproject.com/wiki/NewformsAdminBranch"&gt;newforms-admin branch&lt;/a&gt;&lt;/span&gt; is a rewrite of the admin app to utilize newforms. A lot of effort is being made to 
   ensure that the admin provides more hooks for developers so that the admin is more easily customized.  Another 
   important aspect of this branch is the decoupling of admin metadata from models. This means the nested Admin class 
   will no longer be used and this will help to promote separation of concerns. One nice feature that will come with 
   this branch is the ability to declare different admin sites on a per model basis.  This will provide a lot more 
   flexibility from an administration perspective and make it easier to allow different users/groups to manage 
   various aspects of the site.
&lt;/p&gt;
&lt;p&gt;One feature on the table that the developers would like to get in for the 1.0 release is model validation. The 
   idea is that models that are instantiated from data should validate that data before attempting a save to the 
   database. Without this important step it is possible for the stored data to lose integrity and get your database 
   into a bad state. Adrian admitted that they don't yet know what the best implementation strategy for this is. 
   Newforms already has a validation layer so there are questions about how much if any of that code should be 
   utilized or if perhaps all validation logic should be refactored out into a cloud that can be utilized by the 
   various pieces of the core. They are counting on the upcoming sprint to help produce a roadmap.
&lt;/p&gt;
&lt;p&gt;Finally, they made a &lt;a href="http://unbracketed.org/2008/mar/15/django-pre-announces-nonprofit-organization/"&gt;surprise announcement&lt;/a&gt; at the conclusion of the presentation.
&lt;/p&gt;</description><guid isPermaLink="false">http://unbracketed.org/2008/mar/15/pycon-2008-state-django-adrian-holovaty/</guid><feedburner:origLink>http://unbracketed.org/2008/mar/15/pycon-2008-state-django-adrian-holovaty/</feedburner:origLink></item><feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=Unbracketed</feedburner:awareness></channel></rss>
