<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: mike-malone</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/mike-malone.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2010-02-26T19:22:47+00:00</updated><author><name>Simon Willison</name></author><entry><title>Django Advent: Scaling Django</title><link href="https://simonwillison.net/2010/Feb/26/django/#atom-tag" rel="alternate"/><published>2010-02-26T19:22:47+00:00</published><updated>2010-02-26T19:22:47+00:00</updated><id>https://simonwillison.net/2010/Feb/26/django/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://djangoadvent.com/1.2/scaling-django/"&gt;Django Advent: Scaling Django&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mike Malone’s advice on scaling Django applications, including taking advantage of new features in 1.2.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mike-malone"&gt;mike-malone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;&lt;/p&gt;



</summary><category term="django"/><category term="mike-malone"/><category term="scaling"/></entry><entry><title>uuidd.py</title><link href="https://simonwillison.net/2009/May/25/uuid/#atom-tag" rel="alternate"/><published>2009-05-25T21:34:18+00:00</published><updated>2009-05-25T21:34:18+00:00</updated><id>https://simonwillison.net/2009/May/25/uuid/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://gist.github.com/117292"&gt;uuidd.py&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat implementation of an ID server from Mike Malone—it serves up incrementing integers over a socket (using Python’s asyncore for fast IO) and records state to a file only after every 10,000 IDs served, so most of the time it’s not reading or writing to disk at all. If the server crashes it doesn’t matter because it can start up again at an integer it’s sure hasn’t been used before.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/asyncore"&gt;asyncore&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/idserver"&gt;idserver&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mike-malone"&gt;mike-malone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/uuid"&gt;uuid&lt;/a&gt;&lt;/p&gt;



</summary><category term="asyncore"/><category term="idserver"/><category term="mike-malone"/><category term="python"/><category term="scaling"/><category term="uuid"/></entry><entry><title>mmalone's django-caching</title><link href="https://simonwillison.net/2009/May/7/mmalones/#atom-tag" rel="alternate"/><published>2009-05-07T07:36:48+00:00</published><updated>2009-05-07T07:36:48+00:00</updated><id>https://simonwillison.net/2009/May/7/mmalones/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://github.com/mmalone/django-caching"&gt;mmalone&amp;#x27;s django-caching&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mike Malone shares code used by Pownce to add QuerySet level caching to Django. It’s a smart implementation—a CachingQuerySet class inspects the arguments passed to get(), and if they’re just a straight forward exact PK lookup hits memcache for the object before hitting the database. Signals are used to invalidate the cache.


    &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/mike-malone"&gt;mike-malone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pownce"&gt;pownce&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/querysets"&gt;querysets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/signals"&gt;signals&lt;/a&gt;&lt;/p&gt;



</summary><category term="caching"/><category term="django"/><category term="mike-malone"/><category term="pownce"/><category term="querysets"/><category term="signals"/></entry><entry><title>OAuth on the iPhone</title><link href="https://simonwillison.net/2008/Sep/12/oauth/#atom-tag" rel="alternate"/><published>2008-09-12T21:47:17+00:00</published><updated>2008-09-12T21:47:17+00:00</updated><id>https://simonwillison.net/2008/Sep/12/oauth/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://immike.net/blog/2008/09/08/oauth-on-the-iphone/"&gt;OAuth on the iPhone&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Mike from Pownce explains their superbly implemented OAuth flow for the Pownce iPhone app, and how much push-back they got on it from regular users. One interesting point is that an iPhone application could “fake” a transition to mobile safari using core animation as part of a sophisticated phishing attack. This is a flaw in the iPhone OS itself—it does not offer a phishing-proof chrome as part of the OS.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/iphone"&gt;iphone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mike-malone"&gt;mike-malone&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oauth"&gt;oauth&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/phishing"&gt;phishing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pownce"&gt;pownce&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;



</summary><category term="iphone"/><category term="mike-malone"/><category term="oauth"/><category term="phishing"/><category term="pownce"/><category term="security"/></entry></feed>