<?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"
	>

<channel>
	<title>A Contrario</title>
	<atom:link href="http://blog.martinaclausen.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.martinaclausen.com</link>
	<description>Python, Django and Web Applications</description>
	<pubDate>Mon, 18 Aug 2008 21:42:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Practical Django Projects w. django-trunk</title>
		<link>http://blog.martinaclausen.com/2008/08/18/practical-django-projects-w-django-trunk/</link>
		<comments>http://blog.martinaclausen.com/2008/08/18/practical-django-projects-w-django-trunk/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 21:42:45 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=46</guid>
		<description><![CDATA[This and the following few posts will document the changes needed to work through the excellent book Practical Django Projects by James Bennett using django-trunk (revision 8290).
Figuring out the necessary changes is actually a quite good exercise in getting to know Django, but if you get stuck or feel lazy feel free to consult below:
Chapter [...]]]></description>
			<content:encoded><![CDATA[<p>This and the following few posts will document the changes needed to work through the excellent book Practical Django Projects by James Bennett using django-trunk (revision 8290).</p>
<p>Figuring out the necessary changes is actually a quite good exercise in getting to know Django, but if you get stuck or feel lazy feel free to consult below:</p>
<p><span style="color: #ffff99;">Chapter 2 p. 13:</span></p>
<p>The lines to uncomment are:</p>
<pre class="syntax-highlight:python">
# from django.contrib import admin
# admin.autodiscover()
</pre>
<p>and</p>
<pre class="syntax-highlight:python">
# (r&#039;^admin/(.*)&#039;, admin.site.root),
</pre>
<p>You might want to uncomment the following line too, which will activate the documentation in the admin site:</p>
<pre class="syntax-highlight:python">
# (r&#039;^admin/doc/&#039;, include(&#039;django.contrib.admindocs.urls&#039;)),
</pre>
<p><span style="color: #ffff99;">Chapter 2 p. 15:</span></p>
<p>In addition to filling out the fields in the bulleted list you also need to select the &#8220;127.0.0.1:8000&#8243; entry  in the &#8220;Sites&#8221; list at the bottom of the form as this field is required.</p>
<p><span style="color: #ffff99;">Chapter 3. p.23:</span></p>
<p>Make sure to add the (r&#8217;^&#8230; line <em>before</em> the (r&#8221;&#8230; line you added on p. 16. Otherwise the first &#8220;catch all&#8221; pattern will match your attempt to load the tiny_mce.js script and the script will fail to load.</p>
<p><span style="color: #ffff99;">Chapter 3. p34:</span></p>
<p>Leave out the following lines:</p>
<pre class="syntax-highlight:python">
class Admin:
   pass
</pre>
<p>Instead do the following. In the search directory create a new fil admin.py with the followin contents:</p>
<pre class="syntax-highlight:python">
from cms.search.models import SearchKeyword
from django.contrib.flatpages.models import FlatPage
from django.contrib import admin

class SearchKeywordInline(admin.StackedInline):
   model = SearchKeyword

class FlatPageAdmin(admin.ModelAdmin):
   inlines = [SearchKeywordInline,]

admin.site.register(SearchKeyword)
admin.site.unregister(FlatPage)
admin.site.register(FlatPage, FlatPageAdmin)
</pre>
<p><span style="color: #ffff99;">Chapter 3. p36:</span></p>
<p>Don&#8217;t add the core=True, edit_inline=models.STACKED, min_num_in_admin=3 and num_extra_on_change=1 options. The features added by these options are all handled by the admin.py file introduced above.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2008/08/18/practical-django-projects-w-django-trunk/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PJ = Esr</title>
		<link>http://blog.martinaclausen.com/2008/06/30/pj-esr/</link>
		<comments>http://blog.martinaclausen.com/2008/06/30/pj-esr/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 18:06:18 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[sco esr]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/2008/06/30/pj-esr/</guid>
		<description><![CDATA[&#8221; As soon as a certain lawsuit now in court wraps up, I’ll even be able to explain it in detail.&#8221;
PJ = ESR ?
]]></description>
			<content:encoded><![CDATA[<p>&#8221; As soon as a certain lawsuit now in court wraps up, I’ll even be able to explain it in detail.&#8221;</p>
<p><a title="PJ" href="http://www.groklaw.net">PJ</a> = <a href="http://esr.ibiblio.org/?p=295">ESR</a> ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2008/06/30/pj-esr/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django on Jython</title>
		<link>http://blog.martinaclausen.com/2008/01/04/django-on-jython/</link>
		<comments>http://blog.martinaclausen.com/2008/01/04/django-on-jython/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 14:58:11 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[python django jython]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/2008/01/04/django-on-jython/</guid>
		<description><![CDATA[Jim Baker provides a status on the project to have Django run on Jython. I think this is an important effort. It will make it much easier to get Django/Python into - and of course eventually take over - the enterprise.
]]></description>
			<content:encoded><![CDATA[<p>Jim Baker provides a <a href="http://zyasoft.com/pythoneering/2008/01/django-on-jython-minding-gap.html">status</a> on the project to have Django run on Jython. I think this is an important effort. It will make it much easier to get Django/Python into - and of course eventually take over - the enterprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2008/01/04/django-on-jython/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gloria&#8217;s Thoughts on REST, client data and Python</title>
		<link>http://blog.martinaclausen.com/2008/01/01/glorias-thoughts-on-rest-client-data-and-python/</link>
		<comments>http://blog.martinaclausen.com/2008/01/01/glorias-thoughts-on-rest-client-data-and-python/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 00:04:13 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[REST cherrypy python]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/2008/01/01/glorias-thoughts-on-rest-client-data-and-python/</guid>
		<description><![CDATA[Very interesting (not new) post by gloriajw at devchix about REST, client data and Python. The post is based on her experience from a specific client assignment and she describes some of the fundamental considerations/decisions made during the project. I find that her juxtaposition of RESTful and non-RESTful communication between client and server very clearly [...]]]></description>
			<content:encoded><![CDATA[<p>Very interesting (not new) <a href="http://www.devchix.com/2007/08/16/restful-thoughts-on-a-web-20-python-project/">post</a> by <a href="http://www.devchix.com/author/gloriajw/">gloriajw</a> at <a href="http://www.devchix.com/">devchix</a> about <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a>, client data and Python. The post is based on her experience from a specific client assignment and she describes some of the fundamental considerations/decisions made during the project. I find that her juxtaposition of RESTful and non-RESTful communication between client and server very clearly illustrates how transactions and REST is a great fit:</p>
<blockquote><p> server’s current state: “My current state is fifty boxes of paper clips in inventory.”</p>
<p>client one: “Hi server. Last time I contacted you, you had seventy boxes of paper clips in inventory. I am placing an order for sixty. I will accept a smaller quantity if you have &gt;= forty in inventory. Bye!”</p>
<p>client two: “Hi server. I need twenty boxes of paper clips. I have no clue how many you had in inventory last time I contacted you, and I don’t really care. Fulfill this exact order or cancel it, no exceptions. Smell ya later.”</p>
<p>server: “Received client two’s request. Hi client two, you are properly authenticated, so I’ll look at your state. You want exactly twenty boxes of paper clips. You will make no exceptions. I currently have fifty boxes. I don’t care how many you have, I only care about how many you need. Your order is fulfilled, and I have thirty left. Bye.”</p>
<p>server: “Received client one’s request. Hi client one, you are properly authenticated, so I’ll look at your state. You want sixty boxes of paper clips. You will settle for a minimum of forty. My current state is only thirty in inventory. Your order is not fulfilled, and I have thirty left. Bye.”</p>
<p>Compare this to non-RESTful chatter between client and server:<br />
client two:”Hi server.”</p>
<p>server: “Hi client two. You are authenticated, so I’ll continue to talk to you.” (server stores the state of talking to client two, properly authenticated.)</p>
<p>client one:”Hi server.”</p>
<p>server :”Hi client one. You are authenticated, so I’ll continue to talk to you.” (server stores the state of talking to client one, properly authenticated.)</p>
<p>client one:*BOOM* (crashed, blue screen of death, user restarts session once machine reboots)</p>
<p>client two: “server, hook me up with twenty boxes of paper clips.”</p>
<p>client two: *WHOMP* (browser crashes, user restarts browser)</p>
<p>server: “done, server two….hey wait, I can’t respond to you. How strange.”</p>
<p>client one: “Hi server.”</p>
<p>server: “Client one, you just authenticated, and you’re trying to authenticate again? I have to reject your request. Bye.”</p>
<p>client two: “Hi server.”</p>
<p>server: “client two: you have an outstanding transaction, but now your session ID is different. Are you trying to trick me? Get out of here. Bye.”</p>
<p>client two: “Huh? I just loaded, and have no idea what you’re talking about.”</p>
<p>server: “You are in a messed up state. Your authentication is rejected. Call customer support at 1-800-….”<br />
client two: “????”</p></blockquote>
<p>The very helpful reply from the non-RESTful server is  an especially nice twist.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2008/01/01/glorias-thoughts-on-rest-client-data-and-python/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web application security paranoia style</title>
		<link>http://blog.martinaclausen.com/2007/12/30/web-application-security-paranoia-style/</link>
		<comments>http://blog.martinaclausen.com/2007/12/30/web-application-security-paranoia-style/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 23:49:44 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[cryptography]]></category>

		<category><![CDATA[securtiy]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/2007/12/30/web-application-security-paranoia-style/</guid>
		<description><![CDATA[Conceptual description of  using GPG for web application security (authentication). The solution sketched seems a bit cumbersome, but it might be useful for applications that deal with very sensitive data.
]]></description>
			<content:encoded><![CDATA[<p>Conceptual <a href="http://neverfear.org/blog/view/Secure_website_authentication_using_GPG_keys/">description</a> of  using <a href="http://www.gnupg.org/">GPG</a> for web application security (authentication). The solution sketched seems a bit cumbersome, but it might be useful for applications that deal with very sensitive data.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/30/web-application-security-paranoia-style/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AJAX validation with Django, newforms and MochiKit</title>
		<link>http://blog.martinaclausen.com/2007/12/28/7/</link>
		<comments>http://blog.martinaclausen.com/2007/12/28/7/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 23:52:48 +0000</pubDate>
		<dc:creator>mac</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[mochikit]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=7</guid>
		<description><![CDATA[Luke plant has written a excellent tutorial on how to do validation in your Django web application using newforms and MochiKit.
]]></description>
			<content:encoded><![CDATA[<p>Luke plant has written a excellent <a href="http://lukeplant.me.uk/blog.php?id=1107301681">tutorial</a> on how to do validation in your Django web application using newforms and MochiKit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/28/7/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django podcast - &#8220;This Week in Django&#8221;</title>
		<link>http://blog.martinaclausen.com/2007/12/27/django-podcast-this-week-in-django/</link>
		<comments>http://blog.martinaclausen.com/2007/12/27/django-podcast-this-week-in-django/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 15:43:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=6</guid>
		<description><![CDATA[Earlier today I wrote a (brief) rant about the state of Python PR compared to Ruby. On the bright side there is now a dedicated Django podcast. It is called &#8220;This Week in Django&#8221;(feeds: mp3, AAC,  iTunes mp3 and iTunes AAC). Michael Trier is the producer and he does a pretty good job in [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today I wrote a (brief) rant about the state of Python PR compared to Ruby. On the bright side there is now a dedicated Django podcast. It is called &#8220;This Week in Django&#8221;(feeds: <a href="http://media.djangonetcasts.com/twid_mp3.xml">mp3</a>, <a href="http://media.djangonetcasts.com/twid_aac.xml">AAC</a>,  <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=270540241">iTunes mp3</a> and<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=270540230"> iTunes AAC</a>). Michael Trier is the producer and he does a pretty good job in my opinion. The weekly podcast  is going into it&#8217;s 4th week and consists of the following regular segments: Big News, Tracing Trunk, Community Catchup, Tip of the Week and IRC Ad Nauseam. The  segments provides a good mix of overview and in-depth information. The only thing missing is some interviews. It would be interesting to hear from some of the commiters but I would love to see an interview with developers using Django on a daily basis for real-life solutions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/27/django-podcast-this-week-in-django/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Grok - new Python web application framework</title>
		<link>http://blog.martinaclausen.com/2007/12/27/grok-new-python-web-application-framework/</link>
		<comments>http://blog.martinaclausen.com/2007/12/27/grok-new-python-web-application-framework/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 15:23:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=5</guid>
		<description><![CDATA[New is maybe a slight overstatement - version 0.10.1 was released in October. Grok is based on Zope 3 but promises to hide the Zopeness from the developer. It relies on Zope Page Templates and the ZODB - Zope&#8217;s Obejct database. Last time I toyed around with Zope - just around the time Zope 3 [...]]]></description>
			<content:encoded><![CDATA[<p>New is maybe a slight overstatement - version 0.10.1 was released in October. Grok is based on Zope 3 but promises to hide the Zopeness from the developer. It relies on Zope Page Templates and the ZODB - Zope&#8217;s Obejct database. Last time I toyed around with Zope - just around the time Zope 3 was released - I recall with some agony. Grok seems to adopt an approach similar to Django/TurboGears in terms of usage pattern. I intend to give Grok a spin in the near future and will report back.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/27/grok-new-python-web-application-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django and Comet</title>
		<link>http://blog.martinaclausen.com/2007/12/27/django-and-comet/</link>
		<comments>http://blog.martinaclausen.com/2007/12/27/django-and-comet/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 14:37:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[comet]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=4</guid>
		<description><![CDATA[http://www.rkblog.rk.edu.pl/w/p/django-and-comet/
The Comet architecture is based on long-lived http connections and pushes data to the client without an explicit request.
The above example uses Orbited and Django to build a simple chat web application.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rkblog.rk.edu.pl/w/p/django-and-comet/">http://www.rkblog.rk.edu.pl/w/p/django-and-comet/</a></p>
<p>The <a href="http://en.wikipedia.org/wiki/Comet_(programming)">Comet</a> architecture is based on long-lived http connections and pushes data to the client without an explicit request.</p>
<p>The above example uses <a href="http://brbx.com/orbited/index.html">Orbited</a> and <a href="http://www.djangoproject.com/">Django</a> to build a simple chat web application.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/27/django-and-comet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The reason Ruby is kicking Python&#8217;s butt&#8230;</title>
		<link>http://blog.martinaclausen.com/2007/12/27/the-reason-ruby-is-kicking-pythons-butt/</link>
		<comments>http://blog.martinaclausen.com/2007/12/27/the-reason-ruby-is-kicking-pythons-butt/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 12:00:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.martinaclausen.com/?p=3</guid>
		<description><![CDATA[Compare the media available from Pycon and Rubyconf 2007:
http://advocacy.python.org/podcasts/
http://rubyconf2007.confreaks.com/
No contest. I love Python but we have a lot to learn in the PR department.
]]></description>
			<content:encoded><![CDATA[<p>Compare the media available from Pycon and Rubyconf 2007:</p>
<p><a href="http://advocacy.python.org/podcasts/">http://advocacy.python.org/podcasts/</a></p>
<p><a href="http://rubyconf2007.confreaks.com/">http://rubyconf2007.confreaks.com/</a></p>
<p>No contest. I love Python but we have a lot to learn in the PR department.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.martinaclausen.com/2007/12/27/the-reason-ruby-is-kicking-pythons-butt/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
