<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Ross Poulton - django</title><link>https://www.rossp.org/</link><description></description><lastBuildDate>Tue, 23 Jan 2024 08:00:00 +1100</lastBuildDate><item><title>Farewell, Djangosites</title><link>https://www.rossp.org/blog/farewell-djangosites/</link><description>&lt;p&gt;The time has come for me to shut down Djangosites.org. This will happen in late January, 2024.&lt;/p&gt;
&lt;p&gt;When I started Djangosites back in 2007, Django was still a relatively young platform (having been an open-source project for only a few years) and besides the Lawrence Journal-World there were few …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 23 Jan 2024 08:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2024-01-23:/blog/farewell-djangosites/</guid><category>misc</category><category>django</category><category>djangosites</category></item><item><title>Self-Hosted Server Status Page with Uptime Robot, S3, and Upscuits</title><link>https://www.rossp.org/blog/uptime-robot-s3/</link><description>&lt;p&gt;For quite a while I've had a public "Status" page online for &lt;a href="http://pingdom.com/"&gt;WhisperGifts&lt;/a&gt; via Pingdom. It basically just shows uptime over the past few days, but given my site is relatively low-volume and not ovely critical to my customers, the $10/month for Pingdom was actually one of my largest …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 20 Jan 2015 21:01:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2015-01-20:/blog/uptime-robot-s3/</guid><category>misc</category><category>geeky</category><category>code</category><category>servers</category><category>django</category></item><item><title>What's New With WhisperGifts</title><link>https://www.rossp.org/blog/whispergifts-aug-2014/</link><description>&lt;p&gt;In the past couple of months I've done some fun and interesting stuff over at &lt;a href="https://www.whispergifts.com/"&gt;WhisperGifts&lt;/a&gt;, my side project that lets couples put their bridal gift registry online. It's all built with Django, so I thought I'd share a few neat things I've come across along the way.&lt;/p&gt;
&lt;h3&gt;Bookmarket and …&lt;/h3&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 24 Aug 2014 13:10:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2014-08-24:/blog/whispergifts-aug-2014/</guid><category>misc</category><category>django</category><category>whispergifts</category></item><item><title>Djangosites Open Sourced</title><link>https://www.rossp.org/blog/djangosites-code/</link><description>&lt;p&gt;Back in 2008 I started &lt;a href="http://www.djangosites.org/"&gt;djangosites.org&lt;/a&gt; as a listing of websites powered by Django. Prior to that, we relied on a wiki page to see who was using Django, so an image-based website felt like a big improvement.&lt;/p&gt;
&lt;p&gt;Since day one I've promised to release the source code that …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 04 Dec 2013 22:43:37 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-12-04:/blog/djangosites-code/</guid><category>misc</category><category>djangosites</category><category>programming</category><category>code</category><category>django</category><category>opensource</category></item><item><title>Tracking CPC Results in Django</title><link>https://www.rossp.org/blog/cpc/</link><description>&lt;p&gt;Like many startups, I use CPC ads to attract attention to WhisperGifts. I bid a set fee per click for particular search words on Google, and for ads shown to my target demographic on Facebook. I wanted to track an individual signup to their source CPC campaign, so put together …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 01 Aug 2013 08:52:52 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-08-01:/blog/cpc/</guid><category>misc</category><category>advertising</category><category>code</category><category>django</category><category>programming</category></item><item><title>New Podcast - Django Roundup</title><link>https://www.rossp.org/blog/roundup/</link><description>&lt;p&gt;&lt;a href="http://lincolnloop.com/"&gt;Lincoln Loop&lt;/a&gt; are one of the earlier Django-based development shops, and their various employees contribute in many ways to the open-source community. One new addition they've just made is the launch of &lt;a href="http://lincolnloop.github.io/round-up/"&gt;Django Round-Up&lt;/a&gt;, a podcast covering the news in the Django community.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a podcast hosted by &lt;a href="https://github.com/kennethlove"&gt;@kennethlove …&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 19 Jul 2013 21:17:19 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-07-19:/blog/roundup/</guid><category>misc</category><category>programming</category><category>django-readonly-site</category><category>code</category><category>flattery</category><category>django</category><category>podcasts</category></item><item><title>django-readonly-site</title><link>https://www.rossp.org/blog/django-readonly-site/</link><description>&lt;p&gt;Occasionally I need to take WhisperGifts offline, but still show some parts of the site to users. This has included some system changes that require the site to be non-functional for a little while (such as doing a deployment with a bunch of backwards-incompatible changes, or large database migrations) and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 02 Jul 2013 18:29:40 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-07-02:/blog/django-readonly-site/</guid><category>misc</category><category>django-readonly-site</category><category>code</category><category>django</category><category>programming</category></item><item><title>Getting Paid in Django with Pin Payments</title><link>https://www.rossp.org/blog/django-pinpayments/</link><description>&lt;p&gt;Payments in Australia are controlled by the &lt;a href="http://en.wikipedia.org/wiki/Big_Four_(banking)#Australia"&gt;so-called "big four" banks&lt;/a&gt;, and it's been difficult for a long time for startups to get merchant facilities to process credit cards online. Accounts cost hundreds of dollars per month, with high transaction costs and minimum transaction volumes thrown in.&lt;/p&gt;
&lt;p&gt;We watched with …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 18 Jun 2013 17:59:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-06-18:/blog/django-pinpayments/</guid><category>misc</category><category>code</category><category>django</category><category>programming</category></item><item><title>The Definitive Answer, Explained</title><link>https://www.rossp.org/blog/definitive-django-explained/</link><description>&lt;p&gt;Yesterday &lt;a href="http://www.rossp.org/blog/2013/jan/10/definitive-django/"&gt;I posted that Django was almost certainly suitable to use for your project&lt;/a&gt;. I've had some minor push-back, so I thought I'd explain a little.&lt;/p&gt;
&lt;p&gt;When beginning a project, many businesses appear to spend an inordinate amount of time making technical decisions that are often outside their area of …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 11 Jan 2013 07:01:31 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-01-11:/blog/definitive-django-explained/</guid><category>misc</category><category>technical decisions</category><category>business</category><category>django</category></item><item><title>The Definitive Answer To "Can I Use Django For This Project?"</title><link>https://www.rossp.org/blog/definitive-django/</link><description>&lt;p&gt;&lt;em&gt;Short&lt;/em&gt;: Yes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Longer&lt;/em&gt;: Almost certainly. If you don't know any technical reason &lt;em&gt;why&lt;/em&gt; Django isn't a good fit, then Django is probably a good fit.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 10 Jan 2013 21:11:09 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2013-01-10:/blog/definitive-django/</guid><category>misc</category><category>technical decisions</category><category>django</category><category>programming</category></item><item><title>WhisperGifts - The Tech That Let Me Launch</title><link>https://www.rossp.org/blog/whispergifts-tech/</link><description>&lt;p&gt;The &lt;a href="https://www.whispergifts.com/"&gt;WhisperGifts re-launch&lt;/a&gt; recently went very well! I promised a more technical follow-up with some details about what's new and what's changed, so if you want to know more about what makes WhisperGifts tick then you'll want to read on. Hint: It's a dash of Django, a pinch of Python …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 05 Jul 2012 08:42:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2012-07-05:/blog/whispergifts-tech/</guid><category>misc</category><category>django</category><category>whispergifts</category><category>tech</category></item><item><title>DjangoSites Move Complete</title><link>https://www.rossp.org/blog/djangosites-moved/</link><description>&lt;p&gt;For the past few years I've hosted all of my projects on a single RimuHosting VPS. It's old, running Debian 5.0, and maintenance and upgrades have become headachy. It isn't easy to run Python 2.7 on old Debian versions, and since I only started using &lt;code&gt;virtualenv&lt;/code&gt; relatively recently …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 15 Jun 2012 19:21:41 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2012-06-15:/blog/djangosites-moved/</guid><category>misc</category><category>djangosites</category><category>devops</category><category>servers</category><category>django</category><category>tech</category></item><item><title>DjangoSites Downtime - Server Move</title><link>https://www.rossp.org/blog/djangosites-move/</link><description>&lt;p&gt;Heads-up: DjangoSites.org will be down, at some point in the next week, while I move it to a new server. Expected downtime is approximately 1 hour to transfer files &amp;amp; database; if your ISP has DNS servers that don't observe TTL then you might not see updates for a while …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 11 Jun 2012 15:47:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2012-06-11:/blog/djangosites-move/</guid><category>misc</category><category>djangosites</category><category>django</category></item><item><title>Key-based cache expiration with Django</title><link>https://www.rossp.org/blog/fragment-caching/</link><description>&lt;p&gt;Last week, the team over at 37Signals wrote up an article on their newly implemented &lt;a href="http://37signals.com/svn/posts/3113-how-key-based-cache-expiration-works"&gt;Key-based cache expiration&lt;/a&gt; system and it hit me: It's such a simple idea with obvious benefits, why hadn't I implemented a similar caching mechanism before?  Being a Django user, the Rails code didn't make much …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 29 Feb 2012 22:05:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2012-02-29:/blog/fragment-caching/</guid><category>misc</category><category>django</category><category>caching</category></item><item><title>Small open-source release - django-menu</title><link>https://www.rossp.org/blog/django-menu/</link><description>&lt;p&gt;Many moons ago on this blog I wrote about a simple &lt;a href="/blog/2007/nov/27/menus/"&gt;menuing system for Django&lt;/a&gt;. For the sake of convenience, I've just packaged up that code (plus a few minor improvements) into a package named &lt;a href="https://github.com/RossP/django-menu"&gt;django-menu&lt;/a&gt; which is also available via PyPi with &lt;code&gt;pip install django-menu&lt;/code&gt;. Basic documentation is included …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 06 Nov 2011 10:50:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2011-11-06:/blog/django-menu/</guid><category>misc</category><category>menus</category><category>open-source</category><category>code</category><category>github</category><category>django</category></item><item><title>django-helpdesk</title><link>https://www.rossp.org/blog/django-helpdesk/</link><description>&lt;p&gt;A while ago I released a helpdesk tool that I use to manage support requests, under the name of Jutda Helpdesk (named after my &lt;a href="http://www.jutda.com.au/"&gt;small consulting company&lt;/a&gt;). The project has received a slow but steady stream of patches and bug fixes, however it's always been a little tricky to manage …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 27 Jan 2011 21:31:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2011-01-27:/blog/django-helpdesk/</guid><category>misc</category><category>jutda</category><category>django-helpdesk</category><category>open-source</category><category>django</category></item><item><title>DjangoSites Deployment Statistics</title><link>https://www.rossp.org/blog/stats/</link><description>&lt;p&gt;Every person that submits a site to &lt;a href="http://www.djangosites.org/"&gt;DjangoSites&lt;/a&gt; gets a chance to include details about how they deployed their website: what database they use, what version of Django they use, and so on.&lt;/p&gt;
&lt;p&gt;The aggregated statistics are now online for all to see. The deployment details for individual websites are …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 23 Jan 2011 15:39:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2011-01-23:/blog/stats/</guid><category>misc</category><category>djangosites</category><category>django</category><category>stats</category></item><item><title>Gracious E-Mail Bounce Handling in Django with Postmark</title><link>https://www.rossp.org/blog/django-bounces-postmark/</link><description>&lt;p&gt;Recently I've been on a quest to simplify the way I deliver my websites to my customers. Not that my customers know: the primary changes are relating to server monitoring, being proactive about a few things, and getting rid of elements that I don't understand.&lt;/p&gt;
&lt;p&gt;One of the things I …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 11 Jun 2010 18:25:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2010-06-11:/blog/django-bounces-postmark/</guid><category>misc</category><category>email</category><category>django</category><category>postmark</category></item><item><title>Update Your DjangoSites Screenshots When You Want</title><link>https://www.rossp.org/blog/djangosites-screenshots/</link><description>&lt;p&gt;You can now update your &lt;a href="http://www.djangosites.org/"&gt;DjangoSites&lt;/a&gt; website screenshot by simply editing your listing and ticking the box that says "Re-do Screenshot".&lt;/p&gt;
&lt;p&gt;To edit a website, first log in to DjangoSites using your username or OpenID. Once logged in, click 'My Sites' in the navigation bar, then click on the website …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 01 Jun 2009 19:24:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-06-01:/blog/djangosites-screenshots/</guid><category>misc</category><category>djangosites</category><category>django</category></item><item><title>Django Site of the Week - The A.V. Club</title><link>https://www.rossp.org/blog/sotw-av-club/</link><description>&lt;p&gt;For various reasons I haven't been able to post a Django Site of the Week for quite a while now, which is a little embarrassing. I've had this little interview sitting in my inbox for over a month, and I've only just been able to write it up and get …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 08 Apr 2009 19:04:03 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-04-08:/blog/sotw-av-club/</guid><category>misc</category><category>sotw</category><category>django</category></item><item><title>The Django Deployment Survey - How Are You Hosting Django Websites?</title><link>https://www.rossp.org/blog/django-deployment/</link><description>&lt;p&gt;According to the official Django Documentation, there are around a half-dozen documented and supported ways of deploying Django in production environments. The recommended way these days is with Apache and mod_wsgi, but there are still a whole bunch of decisions that one must make when it comes to making their …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 06 Apr 2009 19:27:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-04-06:/blog/django-deployment/</guid><category>misc</category><category>djangosites</category><category>deployment</category><category>survey</category><category>django</category></item><item><title>Django Site of the Week - Deskography</title><link>https://www.rossp.org/blog/sotw-deskography/</link><description>&lt;p&gt;Seeing how other people work is something that seems to be of interest to most developers. Whether it's because they want to become better workers themselves or because they're somewhat voyeuristic is open to debate - either way, Django-powered website &lt;a href="http://www.deskography.org/"&gt;Deskography&lt;/a&gt; is a well-designed social desk-sharing website. This week, I spoke …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 02 Feb 2009 20:02:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-02-02:/blog/sotw-deskography/</guid><category>misc</category><category>sotw</category><category>django</category></item><item><title>Full-text searching in Django with PostgreSQL and tsearch2</title><link>https://www.rossp.org/blog/django-postgresql-fulltext/</link><description>&lt;p&gt;Recently, I have wanted to improve the searching ability in a number of my projects. I've often added a search box that simply does an &lt;code&gt;icontains&lt;/code&gt; filter, which works fine for small sites but doesn't scale due to the inefficiency of matching text with basic SQL queries. The plus side …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 28 Jan 2009 19:01:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-28:/blog/django-postgresql-fulltext/</guid><category>misc</category><category>fulltext</category><category>searching</category><category>django</category><category>tutorial</category></item><item><title>Django Site of the Week - ForecastWatch</title><link>https://www.rossp.org/blog/sotw-forecastwatch/</link><description>&lt;p&gt;Eric Floehr is the man behind &lt;a href="http://forecastwatch.com/"&gt;ForecastWatch&lt;/a&gt; and &lt;a href="http://forecastadvisor/"&gt;ForecastAdvisor&lt;/a&gt;, two Django-powered weather websites that aggregate and analyse weather forecasts to compare their accuracy on an ongoing basis. This week, I spoke to Eric about the history behind his sites, how he handles massive data sets, and his conversion from Ruby …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 27 Jan 2009 21:24:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-27:/blog/sotw-forecastwatch/</guid><category>misc</category><category>sotw</category><category>djangosotw</category><category>django</category></item><item><title>Django Site of the Week - ShutterCal</title><link>https://www.rossp.org/blog/sotw-shuttercal/</link><description>&lt;p&gt;&lt;a href="http://shuttercal.com/"&gt;ShutterCal&lt;/a&gt; is a photo sharing site with a difference - it encourages contributors to upload one photo every day to help people reach a goal: whether that may be to improve their photography, watch themselves evolve over a year, or remember people and places they visit. ShutterCal started in 2007, and …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 19 Jan 2009 22:55:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-19:/blog/sotw-shuttercal/</guid><category>misc</category><category>sotw</category><category>django</category></item><item><title>Django SOTW Moving to Mondays</title><link>https://www.rossp.org/blog/sotw-monday/</link><description>&lt;p&gt;To better fit with both my own way of doing things and with general web browsing patterns of the Django SOTW public, I'm moving the SOTW to Mondays rather than Saturdays.&lt;/p&gt;
&lt;p&gt;You can expect new interviews to go live on Monday evenings (Australian EST) which means our US visitors should …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sat, 17 Jan 2009 11:46:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-17:/blog/sotw-monday/</guid><category>misc</category><category>sotw</category><category>twitter</category><category>django</category></item><item><title>Django Site of the Week - Represent</title><link>https://www.rossp.org/blog/sotw-represent/</link><description>&lt;p&gt;&lt;a href="http://prototype.nytimes.com/represent/"&gt;Represent&lt;/a&gt; is a new website prototype from the New York Times that provides New York residents with information about the whereabouts of their elected representatives. What's interesting about this website is that it's one of the first large-scale sites to implement &lt;a href="http://geodjango.org/"&gt;GeoDjango&lt;/a&gt; for spatially-aware applications. This week, &lt;a href="http://djangositeoftheweek.com/represent/"&gt;I spoke with …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sat, 10 Jan 2009 12:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-10:/blog/sotw-represent/</guid><category>misc</category><category>sotw</category><category>django</category></item><item><title>Django Site of the Week - EveryBlock</title><link>https://www.rossp.org/blog/sotw-everyblock/</link><description>&lt;p&gt;The &lt;a href="http://djangositeoftheweek.com/"&gt;Django Site of the Week&lt;/a&gt; is back after a Christmas-induced break with an interview with &lt;a href="http://holovaty.com/"&gt;Adrian Holovaty&lt;/a&gt;. Adrian is no stranger to Django, and his name is known throughout the community as one of the brains behind Django's birth and subsequent open-source release. His latest project &lt;a href="http://www.everyblock.com/"&gt;&lt;em&gt;EveryBlock&lt;/em&gt;&lt;/a&gt; is the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sat, 03 Jan 2009 12:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2009-01-03:/blog/sotw-everyblock/</guid><category>misc</category><category>sotw</category><category>djangosotw</category><category>django</category><category>community</category></item><item><title>Django Site of the Week - Ooh-Ga-Boo-Ga</title><link>https://www.rossp.org/blog/sotw-oohgabooga/</link><description>&lt;p&gt;For the second Django SOTW, I had a chat to Bruce Kroeze about one of his &lt;a href="http://www.satchmoproject.com/"&gt;Satchmo&lt;/a&gt; projects, &lt;a href="http://djangositeoftheweek.com/oohgabooga/"&gt;Ooh-Ga-Boo-Gah&lt;/a&gt;. It's a great match of cool design and technical wizardry.&lt;/p&gt;
&lt;p&gt;For the un-initiated, Satchmo is one of Django's 'killer apps', providing an e-commerce platform that enables Django-powered shopping sites to be …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sat, 20 Dec 2008 12:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-12-20:/blog/sotw-oohgabooga/</guid><category>misc</category><category>djangosites</category><category>djangosotw</category><category>satchmo</category><category>django</category></item><item><title>Dynamic ModelForms in Django</title><link>https://www.rossp.org/blog/modelforms/</link><description>&lt;p&gt;For an ongoing project I am implementing basic advertising functionality, where I define a number of positions in the page and advertisers can self-serve to create an advertisement to fit those positions.&lt;/p&gt;
&lt;p&gt;Each 'Position' can have different attributes turned on or off. For example, a 'sidebar' ad may permit an …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 15 Dec 2008 19:22:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-12-15:/blog/modelforms/</guid><category>misc</category><category>django</category><category>forms</category><category>modelform</category><category>newforms</category></item><item><title>Django Site of the Week</title><link>https://www.rossp.org/blog/djangosotw/</link><description>&lt;p&gt;Since I started DjangoSites over a year ago, the response has been fantastic. I used to approve a handful of websites a week, recently it's more like a half-dozen a day.&lt;/p&gt;
&lt;p&gt;I've decided that a bunch of those websites are just awesome, and I wanted to have a chat with …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 14 Dec 2008 11:15:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-12-14:/blog/djangosotw/</guid><category>misc</category><category>djangosites</category><category>djangosotw</category><category>django</category></item><item><title>Django Site of the Week - Suggestions Wanted</title><link>https://www.rossp.org/blog/django-sotw/</link><description>&lt;p&gt;Over at &lt;a href="http://www.djangosites.org/"&gt;DjangoSites&lt;/a&gt; there is a steady flow of new websites, with a handful showing up every single day. Something really cool is that a growing number of these are either commercial websites that are using Django to make money, or they are very serious in terms of code-base, development …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 28 Oct 2008 18:25:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-10-28:/blog/django-sotw/</guid><category>misc</category><category>djangosites</category><category>djangosotw</category><category>django</category></item><item><title>Jutda Helpdesk - A Django-Powered Ticket Tracker for Small Enterprise</title><link>https://www.rossp.org/blog/open-source-django-helpdesk/</link><description>&lt;p&gt;I'm a firm believer in providing a great customer support experience to your customers, so when I needed a way to manage customer requests for &lt;a href="http://www.whispergifts.com/"&gt;WhisperGifts&lt;/a&gt;, I began putting together an in-house solution.&lt;/p&gt;
&lt;p&gt;There are a number of great open-source helpdesk packages available, however most of them are written in …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 19 Oct 2008 13:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-10-19:/blog/open-source-django-helpdesk/</guid><category>misc</category><category>jutda</category><category>helpdesk</category><category>tickets</category><category>django</category></item><item><title>How I Moved My Commercial Projects to Newforms-Admin</title><link>https://www.rossp.org/blog/newforms/</link><description>&lt;p&gt;My projects were all running on an SVN checkout from late April 2007, after the Queryset-refactor branch was merged into trunk. This meant that I had to make a number of changes, on a public server, to incorporate modifications to file uploads, generic create/update views, and more.&lt;/p&gt;
&lt;p&gt;In this …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 23 Jul 2008 21:12:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-07-23:/blog/newforms/</guid><category>misc</category><category>django</category><category>programming</category><category>newforms</category></item><item><title>DjangoSites is 1337</title><link>https://www.rossp.org/blog/djangosites-1337/</link><description>&lt;p&gt;It's kind of nerdy and geeky, but we've just passed the 1337th approved site on &lt;a href="http://www.djangosites.org/"&gt;DjangoSites&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The lucky submission was &lt;a href="http://www.djangosites.org/s/www-mychinet-com/"&gt;Chinet&lt;/a&gt;, the website for a set of environmentally friendly disposable tableware.&lt;/p&gt;
&lt;p&gt;From glancing at the websites as they're approved, I'm noticing the quality of design of many websites improving compared …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 01 Jun 2008 12:07:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-06-01:/blog/djangosites-1337/</guid><category>misc</category><category>djangosites</category><category>django</category></item><item><title>DjangoSites Gets New Shoes</title><link>https://www.rossp.org/blog/djangosites-design/</link><description>&lt;p&gt;I &lt;a href="/blog/2007/jun/20/introducing-djangosites/"&gt;launched DjangoSites publicly&lt;/a&gt; last June, and since then we've had over 1,250 websites submitted to what has become the ultimate directory of Django-powered websites.&lt;/p&gt;
&lt;p&gt;The look and feel of the site didn't seem to have the same &lt;em&gt;zing&lt;/em&gt; that many of the listed sites had though, so after …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 30 Apr 2008 19:22:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-04-30:/blog/djangosites-design/</guid><category>misc</category><category>design</category><category>djangosites</category><category>hosting</category><category>django</category><category>openid</category></item><item><title>DjangoSites Gets OpenID Support</title><link>https://www.rossp.org/blog/djangosites-openid/</link><description>&lt;p&gt;OpenID is, in my opinion, critical in the success of an open web. It allows an individual to access websites without providing that website with a password, and it provides a single identity across non-homogeneous websites.&lt;/p&gt;
&lt;p&gt;Generally speaking, it also makes the signup process for a website much simpler. Rather …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 17 Apr 2008 17:44:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-04-17:/blog/djangosites-openid/</guid><category>misc</category><category>djangosites</category><category>django</category><category>openid</category></item><item><title>Weblog Updates</title><link>https://www.rossp.org/blog/tumblog/</link><description>&lt;p&gt;My previous blog was my first ever Django application. It worked well, but it was beginning to feel a little &lt;em&gt;clumsy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For example, I had to write posts in HTML. Markdown would be &lt;em&gt;much&lt;/em&gt; nicer. I also had separate applications to syndicate links, blog posts, photos, and more. It all …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 10 Apr 2008 17:25:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-04-10:/blog/tumblog/</guid><category>misc</category><category>tumblog</category><category>meta</category><category>django</category></item><item><title>WhisperGifts Sees the Light of Day</title><link>https://www.rossp.org/blog/whispergifts-launch/</link><description>&lt;p&gt;I got married in March 2007, within a few months of a number of friends. We all shared our trials and tribulations as we each prepared for our big events, and a number of common issues arose. One of these common points of confusion was the preparation of a bridal …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 16 Mar 2008 22:10:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-03-16:/blog/whispergifts-launch/</guid><category>misc</category><category>jutda</category><category>django</category><category>wedding</category><category>whispergifts</category></item><item><title>Jutda - Django-powered Solution Provider</title><link>https://www.rossp.org/blog/jutda/</link><description>&lt;p&gt;In my recent &lt;a href="/blog/2008/feb/11/catchup/"&gt;catchup blog post&lt;/a&gt; I mentioned in passing a few projects including Jutda and WhisperGifts. Now, I'd like to formally introduce the former of these (with the latter coming &lt;em&gt;very soon now&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;When I'm not 'at work', I spend a significant amount of time working on other projects …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 16 Mar 2008 14:59:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-03-16:/blog/jutda/</guid><category>misc</category><category>jutda</category><category>geeky</category><category>programming</category><category>personal</category><category>django</category></item><item><title>Overdue Catchup</title><link>https://www.rossp.org/blog/catchup/</link><description>&lt;p&gt;I've had a very busy few months in every way conceivable - everything from my Django projects, to my day job, to life as a whole has been running in fast-forward. Here's a quick summary of the &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.djangosites.org/"&gt;DjangoSites&lt;/a&gt;&lt;/strong&gt; is coming along very well, with 1040 sites listed as of this evening …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 11 Feb 2008 20:49:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2008-02-11:/blog/catchup/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>whispergifts</category><category>programming</category><category>django</category><category>openid</category></item><item><title>Django Menuing System</title><link>https://www.rossp.org/blog/menus/</link><description>&lt;p&gt;On most of the websites that I've built with Django, I have had a desire to be able to manage little elements of the website from the Django administration screen without having to touch my templates. My intent is for the templates to become the presentation vehicle, with anything that …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 27 Nov 2007 21:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-11-27:/blog/menus/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Wanted - Engaged Djangonauts</title><link>https://www.rossp.org/blog/wanted-engaged-djangonauts/</link><description>&lt;p&gt;I've spent the last year or so building a Django-powered bridal gift registry service. It allows you to easily list desired gifts in a simple online format, for your guests to select and purchase for you.&lt;/p&gt;
&lt;p&gt;It works pretty well - my wife let me use it for our own wedding …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 04 Nov 2007 23:27:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-11-04:/blog/wanted-engaged-djangonauts/</guid><category>misc</category><category>django</category><category>wedding</category></item><item><title>DjangoPoweredSites Grows Up</title><link>https://www.rossp.org/blog/djangopoweredsites-grows-up/</link><description>&lt;p&gt;After some e-mail discussions with &lt;a href="http://www.jacobian.org/"&gt;Jacob Kaplan-Moss&lt;/a&gt; from the &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; team, I've moved all of the sites listed on the old DjangoPoweredSites wiki page to &lt;a href="http://www.djangosites.org/"&gt;Djangosites.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It took a fair bit of time to weed out some not-working pages and expired domains (which have, of course, been purchased by …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sun, 04 Nov 2007 19:37:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-11-04:/blog/djangopoweredsites-grows-up/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Easy Multi-Part E-Mails with Django</title><link>https://www.rossp.org/blog/easy-multi-part-e-mails-django/</link><description>&lt;p&gt;Every time I send e-mail with Django I seem to do it slightly differently, especially when it comes to sending HTML-based emails.&lt;/p&gt;
&lt;p&gt;So, I did what any good Djangonaut does and wrote a quick function that wraps up sending of a multi-part HTML / Text e-mail from templates you create.&lt;/p&gt;
&lt;p&gt;Firstly …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 25 Oct 2007 15:30:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-10-25:/blog/easy-multi-part-e-mails-django/</guid><category>misc</category><category>geeky</category><category>email</category><category>django</category><category>programming</category></item><item><title>Django - Multiple Aliases for a Single Website</title><link>https://www.rossp.org/blog/django-multiple-aliases-single-website/</link><description>&lt;p&gt;In these days of cheap domains, it's often desirable to own multiple domains for a single website. You've probably got each of the .com, .net and .org domain names, along with a country-specific domain. You want each of these to present exactly the same website to the world, but good …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 03 Oct 2007 07:00:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-10-03:/blog/django-multiple-aliases-single-website/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Django - A Diverse Community</title><link>https://www.rossp.org/blog/django-diverse-community/</link><description>&lt;p&gt;Scott Barnham, one of the guys behind the recently-launched &lt;a href="http://www.djangogigs.com/"&gt;Django Gigs&lt;/a&gt; website, has posted some &lt;a href="http://scottbarnham.com/blog/2007/09/29/django-developers-we-are-the-world/"&gt;statistics from visitors to the Gigs website&lt;/a&gt; over the past few days. I've put together some similar stats for the &lt;a href="http://www.djangosites.org/latest/"&gt;Django Sites&lt;/a&gt; website, which has been online for a few months now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; All figures …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 01 Oct 2007 11:49:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-10-01:/blog/django-diverse-community/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>django</category></item><item><title>Mixing OpenID into Django's authentication system</title><link>https://www.rossp.org/blog/mixing-openid-django-auth/</link><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: This code is now outdated, and it's certainly not the best way to do OpenID in Django. I recommend you take a look at &lt;a href="http://code.google.com/p/django-authopenid"&gt;django-authopenid&lt;/a&gt;, a fantastic registration system that combines Django's authentication framework with OpenID sign-in. &lt;em&gt;Ross, 17th April 2008&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;According to the &lt;a href="http://www.openid.net/"&gt;OpenID website&lt;/a&gt;, from a consumers …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 20 Aug 2007 07:30:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-08-20:/blog/mixing-openid-django-auth/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category><category>openid</category></item><item><title>Validating a Username via jQuery with Ajax</title><link>https://www.rossp.org/blog/django-ajax-username-validation/</link><description>&lt;p&gt;It all starts when John hits your website and clicks the big 'Register' link. John types his name, '&lt;em&gt;John&lt;/em&gt;' into the username box, and hands over his e-mail address and password (unless you're cool and hip, and you let him &lt;a href="/blog/2007/aug/20/mixing-openid-django-auth/"&gt;sign up using his OpenID&lt;/a&gt;) and hit 'Submit', just like …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 20 Aug 2007 07:00:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-08-20:/blog/django-ajax-username-validation/</guid><category>misc</category><category>design</category><category>geeky</category><category>ajax</category><category>programming</category><category>javascript</category><category>django</category><category>jquery</category></item><item><title>DjangoSites - We Want YOU!</title><link>https://www.rossp.org/blog/djangosites-we-want-you/</link><description>&lt;p&gt;I've just approved another batch of sites bringing the total to &lt;strong&gt;260&lt;/strong&gt;. I've also had to delete a few sites that were submitted due to a number of reasons: A handful were submitted that are obviously not Django (providing your link as /index.php is a give away) and a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 13 Aug 2007 10:04:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-08-13:/blog/djangosites-we-want-you/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Djangosites Updates</title><link>https://www.rossp.org/blog/djangosites-updates/</link><description>&lt;p&gt;Last week I &lt;a href="http://www.rossp.org/blog/2007/jun/20/introducing-djangosites/"&gt;launched djangosites.org&lt;/a&gt;, a new website to show off other websites built with &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;. Uptake has been great (as I write this there are 125 websites listed) and feedback has been even better.&lt;/p&gt;
&lt;p&gt;Firstly there are more RSS feeds. You can view RSS feeds for &lt;a href="http://www.djangosites.org/rss/latest/"&gt;latest entries …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 26 Jun 2007 12:11:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-06-26:/blog/djangosites-updates/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Introducing Djangosites.org</title><link>https://www.rossp.org/blog/introducing-djangosites/</link><description>&lt;p&gt;Until now, if you wanted to see a few sites that were built with Django you had to wade through a list of a few hundred links on a &lt;a href="http://code.djangoproject.com/wiki/DjangoPoweredSites"&gt;wiki page&lt;/a&gt;. The links were somewhat organised into categories, but no matter who you ask that's a boring job.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.djangosites.org/"&gt;Djangosites.org …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 20 Jun 2007 20:05:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-06-20:/blog/introducing-djangosites/</guid><category>misc</category><category>djangosites</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Using The WebThumb API with Python</title><link>https://www.rossp.org/blog/using-webthumb-api-python/</link><description>&lt;p&gt;First things first: Get an API key from &lt;a href="http://bluga.net/webthumb/"&gt;bluga.net&lt;/a&gt; by signing up for an account.&lt;/p&gt;
&lt;p&gt;Next, drop the following code into webthumb.py and enter your API key.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;Python interface to Webthumb API (see http://bluga.net/webthumb/)&lt;/span&gt;

&lt;span class="sd"&gt;By Ross Poulton - www.rossp.org&lt;/span&gt;

&lt;span class="sd"&gt;License: Use this how you …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 13 Jun 2007 09:00:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-06-13:/blog/using-webthumb-api-python/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Helping Sort Django's Error Emails</title><link>https://www.rossp.org/blog/helping-sort-djangos-error-emails/</link><description>&lt;p&gt;When you run a &lt;a href="http://www.djangoproject.com/"&gt;Django powered website&lt;/a&gt; with debugging turned off, whenever a condition happens that would cause a HTTP 500 Error (such as an uncaught exception), the administrators receive an e-mail with a traceback and other relevant details to help debug the issue. These e-mails are really, &lt;strong&gt;really&lt;/strong&gt; handy …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 28 Feb 2007 19:43:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-02-28:/blog/helping-sort-djangos-error-emails/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Blog Spam Protection</title><link>https://www.rossp.org/blog/blog-spam-protection/</link><description>&lt;p&gt;I currently manually review and delete comment spam every few days. It doesn't take long, it's just frustrating.&lt;/p&gt;
&lt;p&gt;When you regularly repeat an action over a long period of time, you begin to notice patterns of action. What I've noticed is that most comment spam is being posted to older …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Sat, 13 Jan 2007 14:38:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2007-01-13:/blog/blog-spam-protection/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>The Pareto principle (Or, why the 80/20 rule always bites us in the ass)</title><link>https://www.rossp.org/blog/pareto-principle-or-why-8020-rule-always-bites-us-/</link><description>&lt;p&gt;&lt;em&gt;This rant bought to you by yet another unfinished project.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As hard as you work to avoid it, there seems to be no way to avoid the good old 80/20 rule. It seems that no matter what you're working on, 80% of the work takes 20% of the time …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 13 Nov 2006 11:57:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-11-13:/blog/pareto-principle-or-why-8020-rule-always-bites-us-/</guid><category>misc</category><category>rants</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>ChangeManipulators on only part of a model</title><link>https://www.rossp.org/blog/changemanipulators-only-part-model/</link><description>&lt;p&gt;Django has some cool &lt;a href="http://www.djangoproject.com/documentation/forms/"&gt;forms management&lt;/a&gt; functionality that takes the hard work out of displaying forms and managing the users input. Unfortunately, the ChangeManipulator expects that &lt;strong&gt;all&lt;/strong&gt; fields in a model will be updated by the ChangeManipulator, and cries about any required/not-null fields that you don't display to the …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Wed, 23 Aug 2006 13:02:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-08-23:/blog/changemanipulators-only-part-model/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Sending E-Mails via Templates</title><link>https://www.rossp.org/blog/sending-e-mails-templates/</link><description>&lt;p&gt;So you've got an application written in Django that needs to send large bodies of e-mail, but you don't want the e-mail message itself to be in your Python code. Fair enough, I'd say - you should be separating form from function, and in this case, the e-mail output is still …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 11 Jul 2006 08:30:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-07-11:/blog/sending-e-mails-templates/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Using Django's TemplateTags</title><link>https://www.rossp.org/blog/building-blog-django-4/</link><description>&lt;p&gt;I've had a number of e-mails about how I include the listing of blog tags and archives by month on the side of my website from people who have obviously built up a blog and now want further integration with their website.&lt;/p&gt;
&lt;p&gt;Well, it's ultra-simple thanks to a nifty &lt;a href="http://www.djangoproject.com/"&gt;Django …&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 23 Jun 2006 07:30:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-06-23:/blog/building-blog-django-4/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>A Django Blog - Redux</title><link>https://www.rossp.org/blog/django-blog-redux/</link><description>&lt;p&gt;At the start of May, the Django &lt;a href="http://code.djangoproject.com/wiki/RemovingTheMagic"&gt;magic-removal&lt;/a&gt; branch &lt;a href="http://www.djangoproject.com/weblog/2006/may/01/magicremoval/"&gt;was merged with 'trunk'&lt;/a&gt; - the mainstream Django code base. While this branch isn't yet available for download by the lay user, it's there in svn ready to be checked out and used, and it seems quite stable - the djangoproject.com website …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 08 Jun 2006 10:28:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-06-08:/blog/django-blog-redux/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>XSS Vulnerability</title><link>https://www.rossp.org/blog/xss-vulnerability/</link><description>&lt;p&gt;A week or so ago I received an e-mail from a nice new zealander, &lt;a href="http://simon.net.nz"&gt;Simon Greenhill&lt;/a&gt;, alerting me to a cross-site scripting vulnerability in the comments portion of my blog. The vulnerability will actually probably be of concern to anybody using the comments module from Django - I haven't dug far …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 08 Jun 2006 10:13:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-06-08:/blog/xss-vulnerability/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Django - Magic-Removal Upgrade</title><link>https://www.rossp.org/blog/django-magic-removal-upgrade/</link><description>&lt;p&gt;I've just upgraded &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; to the new &lt;a href="http://code.djangoproject.com/wiki/RemovingTheMagic"&gt;Magic-Removal code base&lt;/a&gt; which is now a part of the core Django distribution.&lt;/p&gt;
&lt;p&gt;I broke a few things (such as the &lt;a href="/gallery/"&gt;Photo Gallery&lt;/a&gt;) for a few days while I ironed out a few little bugs, but all seems OK now.&lt;/p&gt;
&lt;p&gt;Soon enough I'll …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 15 May 2006 07:55:00 +1000</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-05-15:/blog/django-magic-removal-upgrade/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Building A Blog with Django #3</title><link>https://www.rossp.org/blog/building-blog-django-3/</link><description>&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The Python code in this tutorial no longer works with Django! Please read my new article, &lt;a href="http://www.rossp.org/blog/2006/jun/08/django-blog-redux/"&gt;a Django Blog Redux&lt;/a&gt;, for code that works on newer versions of Django. The rest of this article, such as the theory, is still very much applicable and should be read alongside my …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Fri, 17 Feb 2006 10:28:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-02-17:/blog/building-blog-django-3/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Building a Blog with Django #2</title><link>https://www.rossp.org/blog/building-blog-django-2/</link><description>&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; The Python code in this tutorial no longer works with Django! Please read my new article, &lt;a href="http://www.rossp.org/blog/2006/jun/08/django-blog-redux/"&gt;a Django Blog Redux&lt;/a&gt;, for code that works on newer versions of Django. The rest of this article, such as the theory, is still very much applicable and should be read alongside my …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Thu, 02 Feb 2006 12:21:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-02-02:/blog/building-blog-django-2/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Building a Blog with Django</title><link>https://www.rossp.org/blog/building-blog-django-1/</link><description>&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt; The Python code in this tutorial no longer works with Django! Please read my new article, &lt;a href="http://www.rossp.org/blog/2006/jun/08/django-blog-redux/"&gt;a Django Blog Redux&lt;/a&gt;, for code that works on newer versions of Django. The rest of this article, such as the theory, is still very much applicable and should be read alongside my …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 23 Jan 2006 15:31:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-01-23:/blog/building-blog-django-1/</guid><category>misc</category><category>geeky</category><category>django</category></item><item><title>Django - My First Impressions</title><link>https://www.rossp.org/blog/django-my-first-impressions/</link><description>&lt;p&gt;Until last week I had never heard of &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt;, a web framework written in &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;. I'd seen python before, but had never really tried it out - I could do everything I wanted to do in &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;, and having libraries such as &lt;a href="http://smarty.php.net/"&gt;Smarty&lt;/a&gt; available to me solved all my problems.&lt;/p&gt;
&lt;p&gt;Or …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Tue, 10 Jan 2006 09:00:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-01-10:/blog/django-my-first-impressions/</guid><category>misc</category><category>geeky</category><category>django</category><category>programming</category></item><item><title>Getting Started With Django</title><link>https://www.rossp.org/blog/getting-started-django/</link><description>&lt;p&gt;I've just written this quick weblog app using &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt; - a new(ish) web framework written in Python.&lt;/p&gt;
&lt;p&gt;So far it seems pretty damn good - I've also written an article management system for a new website I'm starting, and it only took a lunchbreak to get going. Amazing. I'll post some …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ross Poulton</dc:creator><pubDate>Mon, 09 Jan 2006 13:11:00 +1100</pubDate><guid isPermaLink="false">tag:www.rossp.org,2006-01-09:/blog/getting-started-django/</guid><category>misc</category><category>geeky</category><category>django</category></item></channel></rss>