<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: malcolm-tredinnick</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/malcolm-tredinnick.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2008-12-13T09:49:42+00:00</updated><author><name>Simon Willison</name></author><entry><title>ETags And Modification Times In Django</title><link href="https://simonwillison.net/2008/Dec/13/etags/#atom-tag" rel="alternate"/><published>2008-12-13T09:49:42+00:00</published><updated>2008-12-13T09:49:42+00:00</updated><id>https://simonwillison.net/2008/Dec/13/etags/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.pointy-stick.com/blog/2008/12/13/etags-and-modification-times-django/"&gt;ETags And Modification Times In Django&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Part of Malcolm’s series of tutorials on implementing advanced HTTP concepts in Django.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/caching"&gt;caching&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/etags"&gt;etags&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;&lt;/p&gt;



</summary><category term="caching"/><category term="django"/><category term="etags"/><category term="http"/><category term="malcolm-tredinnick"/></entry><entry><title>Queryset-refactor branch has been merged into trunk</title><link href="https://simonwillison.net/2008/Apr/27/qsrf/#atom-tag" rel="alternate"/><published>2008-04-27T07:21:13+00:00</published><updated>2008-04-27T07:21:13+00:00</updated><id>https://simonwillison.net/2008/Apr/27/qsrf/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://groups.google.com/group/django-users/browse_thread/thread/f4cd02d8d9389669"&gt;Queryset-refactor branch has been merged into trunk&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Malcolm’s latest Django masterpiece is complete.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/branch"&gt;branch&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/orm"&gt;orm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/qsrf"&gt;qsrf&lt;/a&gt;&lt;/p&gt;



</summary><category term="branch"/><category term="django"/><category term="malcolm-tredinnick"/><category term="orm"/><category term="python"/><category term="qsrf"/></entry><entry><title>Queryset Implementation</title><link href="https://simonwillison.net/2008/Mar/19/defying/#atom-tag" rel="alternate"/><published>2008-03-19T09:43:08+00:00</published><updated>2008-03-19T09:43:08+00:00</updated><id>https://simonwillison.net/2008/Mar/19/defying/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.pointy-stick.com/blog/2008/03/11/queryset-implementation/"&gt;Queryset Implementation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Malcolm explains the work that has gone in to the queryset-refactor branch. Executive summary: Python’s ORM is probably a lot better at SQL than you are.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/orm"&gt;orm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/querysetrefactor"&gt;querysetrefactor&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="malcolm-tredinnick"/><category term="orm"/><category term="python"/><category term="querysetrefactor"/><category term="sql"/></entry><entry><title>Django Tip: Complex Forms</title><link href="https://simonwillison.net/2008/Jan/6/defying/#atom-tag" rel="alternate"/><published>2008-01-06T22:14:47+00:00</published><updated>2008-01-06T22:14:47+00:00</updated><id>https://simonwillison.net/2008/Jan/6/defying/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.pointy-stick.com/blog/2008/01/06/django-tip-complex-forms/"&gt;Django Tip: Complex Forms&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Malcolm demonstrates some advanced tricks with newforms.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/newforms"&gt;newforms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="malcolm-tredinnick"/><category term="newforms"/><category term="python"/></entry><entry><title>OpenID and Google's Blogger</title><link href="https://simonwillison.net/2007/Dec/30/defying/#atom-tag" rel="alternate"/><published>2007-12-30T10:35:08+00:00</published><updated>2007-12-30T10:35:08+00:00</updated><id>https://simonwillison.net/2007/Dec/30/defying/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.pointy-stick.com/blog/2007/12/27/openid-and-googles-blogger/"&gt;OpenID and Google&amp;#x27;s Blogger&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Blogger gets it wrong by displaying a nickname derived from the OpenID URL (in Malcolm’s case, “blog”) instead of the user entered nickname.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/blogger"&gt;blogger&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/usability"&gt;usability&lt;/a&gt;&lt;/p&gt;



</summary><category term="blogger"/><category term="google"/><category term="malcolm-tredinnick"/><category term="openid"/><category term="usability"/></entry><entry><title>Django Changeset 6671</title><link href="https://simonwillison.net/2007/Nov/14/changeset/#atom-tag" rel="alternate"/><published>2007-11-14T17:05:55+00:00</published><updated>2007-11-14T17:05:55+00:00</updated><id>https://simonwillison.net/2007/Nov/14/changeset/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.djangoproject.com/changeset/6671"&gt;Django Changeset 6671&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Malcolm Tredinnick: “Implemented auto-escaping of variable output in templates”. Fantastic—Django now has protection against accidental XSS holes, turned on by default.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/autoescaping"&gt;autoescaping&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/templating"&gt;templating&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xss"&gt;xss&lt;/a&gt;&lt;/p&gt;



</summary><category term="autoescaping"/><category term="django"/><category term="malcolm-tredinnick"/><category term="python"/><category term="security"/><category term="templating"/><category term="xss"/></entry><entry><title>Django changeset 5609</title><link href="https://simonwillison.net/2007/Jul/4/changeset/#atom-tag" rel="alternate"/><published>2007-07-04T14:22:02+00:00</published><updated>2007-07-04T14:22:02+00:00</updated><id>https://simonwillison.net/2007/Jul/4/changeset/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.djangoproject.com/changeset/5609"&gt;Django changeset 5609&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Merged Unicode branch into trunk. This should be fully backwards compatible for all practical purposes.”


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="malcolm-tredinnick"/><category term="unicode"/></entry><entry><title>Translations of My hovercraft is full of eels in many languages</title><link href="https://simonwillison.net/2007/Apr/27/translations/#atom-tag" rel="alternate"/><published>2007-04-27T11:14:29+00:00</published><updated>2007-04-27T11:14:29+00:00</updated><id>https://simonwillison.net/2007/Apr/27/translations/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.omniglot.com/language/phrases/hovercraft.htm"&gt;Translations of My hovercraft is full of eels in many languages&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Great for unicode testing.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.pointy-stick.com/blog/2007/04/27/best-foreign-language-test-phrase-ever/"&gt;Malcolm Tredinnick&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/language"&gt;language&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/malcolm-tredinnick"&gt;malcolm-tredinnick&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;&lt;/p&gt;



</summary><category term="language"/><category term="malcolm-tredinnick"/><category term="unicode"/></entry></feed>