<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: cal-henderson</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/cal-henderson.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2010-08-23T09:47:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>PNGStore - Embedding compressed CSS &amp; JavaScript in PNGs</title><link href="https://simonwillison.net/2010/Aug/23/pngstore/#atom-tag" rel="alternate"/><published>2010-08-23T09:47:00+00:00</published><updated>2010-08-23T09:47:00+00:00</updated><id>https://simonwillison.net/2010/Aug/23/pngstore/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.iamcal.com/png-store/"&gt;PNGStore - Embedding compressed CSS &amp;amp; JavaScript in PNGs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Cal did some further analysis on the CSS/JS to PNG compression trick (including producing some interesting images of jQuery compressed using different image packing techniques) and found it to be slightly less effective than regular GZipping.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gzip"&gt;gzip&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/png"&gt;png&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="cal-henderson"/><category term="gzip"/><category term="png"/><category term="recovered"/></entry><entry><title>Understanding Bidirectional (BIDI) Text in Unicode</title><link href="https://simonwillison.net/2009/Mar/15/bidi/#atom-tag" rel="alternate"/><published>2009-03-15T04:37:27+00:00</published><updated>2009-03-15T04:37:27+00:00</updated><id>https://simonwillison.net/2009/Mar/15/bidi/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.iamcal.com/understanding-bidirectional-text/"&gt;Understanding Bidirectional (BIDI) Text in Unicode&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
It turns out you need to sanitise user input to ensure there are no unicode characters that switch your site’s regular text to RTL.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bidi"&gt;bidi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/filtering"&gt;filtering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/userinput"&gt;userinput&lt;/a&gt;&lt;/p&gt;



</summary><category term="bidi"/><category term="cal-henderson"/><category term="filtering"/><category term="security"/><category term="unicode"/><category term="userinput"/></entry><entry><title>DjangoCon and PyCon UK</title><link href="https://simonwillison.net/2008/Sep/15/conferences/#atom-tag" rel="alternate"/><published>2008-09-15T15:20:20+00:00</published><updated>2008-09-15T15:20:20+00:00</updated><id>https://simonwillison.net/2008/Sep/15/conferences/#atom-tag</id><summary type="html">
    &lt;p&gt;September is a big month for conferences. &lt;a href="http://djangocon.org/"&gt;DjangoCon&lt;/a&gt; was a weekend ago in Mountain View (forcing me to miss both &lt;a href="http://2008.dconstruct.org/"&gt;d.Construct&lt;/a&gt; and &lt;a href="http://barcamp.org/BarCampBrighton3"&gt;BarCamp Brighton&lt;/a&gt;), &lt;a href="http://pyconuk.org/"&gt;PyCon UK&lt;/a&gt; was this weekend in Birmingham, I'm writing this from &lt;a href="http://vivabit.com/atmediaAjax/"&gt;@media Ajax&lt;/a&gt; and &lt;a href="http://barcamp.org/BarCampLondon5"&gt;BarCamp London 5&lt;/a&gt; is coming up over another weekend at the end of this month. As always, I've been posting details of upcoming talks and notes and materials from previous ones on &lt;a href="http://simonwillison.net/2008/talks/"&gt;my talks page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;DjangoCon went really, really well. Huge thanks to conference chair &lt;a href="http://www.siudesign.co.uk/"&gt;Robert Lofthouse&lt;/a&gt; for pulling it all together in just two months and &lt;a href="http://www.hawthornlandings.org/"&gt;Leslie Hawthorne&lt;/a&gt; for making it all happen from Google's end. Google's facitilies were superb: the AV team were the best I've ever worked with and an army of Google volunteers made sure everything went smoothly. It's hard to see how it could have gone better; the principle complaint we got was that at only two days it was hard to justify the travel, something which future DjangoCons will definitely address.&lt;/p&gt;

&lt;p&gt;Every session was recorded and the videos &lt;del&gt;should be going up on YouTube shortly&lt;/del&gt; &lt;a href="http://www.youtube.com/view_play_list?p=D415FAF806EC47A1"&gt;are now up on YouTube&lt;/a&gt;. For the impatient, you can subscribe to an &lt;a href="http://gdata.youtube.com/feeds/api/videos?vq=DjangoCon"&gt;Atom feed of a YouTube search for "DjangoCon"&lt;/a&gt;. I recommend starting with Cal Henderson's keynote &lt;a href="http://www.youtube.com/watch?v=i6Fr65PFqfk"&gt;"Why I hate Django"&lt;/a&gt; which was both funny and insightful in equal parts. Malcolm's talk on &lt;a href="http://www.youtube.com/watch?v=zlhyp5Ve2qk"&gt;ORM internals&lt;/a&gt; was another personal favourite.&lt;/p&gt;

&lt;p&gt;PyCon UK was the second I've attended, but last year I only stayed for the first day. This time I stuck around and was enormously impressed by the grassroots feel of the conference and the enthusiastic atmosphere. I presented &lt;a href="http://simonwillison.net/2008/talks/pyconuk-admin/"&gt;a tutorial on extending the Django admin&lt;/a&gt; and &lt;a href="http://simonwillison.net/2008/talks/pyconuk-zeppelins/"&gt;a lightning talk on Zeppelins&lt;/a&gt;, prepared two hours in advance after Jacob mentioned that the lightning talks were tending too much towards the technical side. It went down very well; I'm tempted to extend it to a half hour session for BarCamp London.&lt;/p&gt;

&lt;p&gt;Unlike most conferences I attend, PyCon tickets included a sit-down dinner for all attendees complete with a "dramatic lecture" on &lt;a href="http://en.wikipedia.org/wiki/Lunar_Society"&gt;the Lunar Society&lt;/a&gt; presented by &lt;a href="http://www.odyssey.dial.pipex.com/"&gt;Andrew Lound&lt;/a&gt;. This was a great fit for the conference, both for the Birmingham connection and the many analogies to the modern open source community - loose collaboration, patent concerns and what you might call an 18th century equivalent of the modern hacker ethic.&lt;/p&gt;

&lt;p&gt;Next year the PyCon UK team will be hosting EuroPython, and I'm certain they'll do an excellent job of it. Meanwhile, Rob has already started making plans for a Euro DjangoCon in around six months time, probably taking place in Prague.&lt;/p&gt;

    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/barcamplondon5"&gt;barcamplondon5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/conferences"&gt;conferences&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangocon"&gt;djangocon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangocon08"&gt;djangocon08&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/leslie-hawthorne"&gt;leslie-hawthorne&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyconuk"&gt;pyconuk&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pyconuk08"&gt;pyconuk08&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/robert-lofthouse"&gt;robert-lofthouse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speaking"&gt;speaking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/my-talks"&gt;my-talks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeppelins"&gt;zeppelins&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/andrew-lound"&gt;andrew-lound&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="barcamplondon5"/><category term="cal-henderson"/><category term="conferences"/><category term="djangocon"/><category term="djangocon08"/><category term="leslie-hawthorne"/><category term="google"/><category term="pyconuk"/><category term="pyconuk08"/><category term="robert-lofthouse"/><category term="speaking"/><category term="my-talks"/><category term="zeppelins"/><category term="python"/><category term="django"/><category term="andrew-lound"/></entry><entry><title>The web framework for ponies</title><link href="https://simonwillison.net/2008/Sep/9/ponies/#atom-tag" rel="alternate"/><published>2008-09-09T23:59:57+00:00</published><updated>2008-09-09T23:59:57+00:00</updated><id>https://simonwillison.net/2008/Sep/9/ponies/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://avalonstar.com/blog/2008/sep/9/web-framework-ponies/"&gt;The web framework for ponies&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
At DjangoCon Cal Henderson suggested that Django should get a mascot with “magical powers”. Brian Veloso obliges.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/brian-veloso"&gt;brian-veloso&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/djangocon"&gt;djangocon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ponies"&gt;ponies&lt;/a&gt;&lt;/p&gt;



</summary><category term="brian-veloso"/><category term="cal-henderson"/><category term="django"/><category term="djangocon"/><category term="ponies"/></entry><entry><title>Quoting Cal Henderson</title><link href="https://simonwillison.net/2007/Nov/2/cal/#atom-tag" rel="alternate"/><published>2007-11-02T06:23:05+00:00</published><updated>2007-11-02T06:23:05+00:00</updated><id>https://simonwillison.net/2007/Nov/2/cal/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://poorbuthappy.com/ease/archives/2007/11/01/3930/the-web-application-scale-of-stupidity"&gt;&lt;p&gt;The Web Application Scale of Stupidity goes from OGF (One Giant Function) to OOP (Object Oriented Programming), like this: OGF ——– sanity ——— OOP&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://poorbuthappy.com/ease/archives/2007/11/01/3930/the-web-application-scale-of-stupidity"&gt;Cal Henderson&lt;/a&gt;, paraphrased&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ogf"&gt;ogf&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/onegiantfunction"&gt;onegiantfunction&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/object-oriented-programming"&gt;object-oriented-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/peter-van-dijck"&gt;peter-van-dijck&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;&lt;/p&gt;



</summary><category term="cal-henderson"/><category term="ogf"/><category term="onegiantfunction"/><category term="object-oriented-programming"/><category term="peter-van-dijck"/><category term="php"/><category term="programming"/></entry><entry><title>Webistrano</title><link href="https://simonwillison.net/2007/Aug/31/blogfish/#atom-tag" rel="alternate"/><published>2007-08-31T23:05:54+00:00</published><updated>2007-08-31T23:05:54+00:00</updated><id>https://simonwillison.net/2007/Aug/31/blogfish/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.innerewut.de/webistrano/"&gt;Webistrano&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Web based interface for managing Capistrano deployments. Cal recommends having a “deploy to live site” button in his book; this looks like an easy way to build that.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/capistrano"&gt;capistrano&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deployment"&gt;deployment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webistrano"&gt;webistrano&lt;/a&gt;&lt;/p&gt;



</summary><category term="cal-henderson"/><category term="capistrano"/><category term="deployment"/><category term="webistrano"/></entry><entry><title>High Scalability</title><link href="https://simonwillison.net/2007/Jul/26/high/#atom-tag" rel="alternate"/><published>2007-07-26T20:15:56+00:00</published><updated>2007-07-26T20:15:56+00:00</updated><id>https://simonwillison.net/2007/Jul/26/high/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://highscalability.com/"&gt;High Scalability&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New blog about building scalable, reliable sites.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.iamcal.com/linklog/1185468883/"&gt;Cal Henderson&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cal-henderson"&gt;cal-henderson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highscalability"&gt;highscalability&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;&lt;/p&gt;



</summary><category term="cal-henderson"/><category term="highscalability"/><category term="scaling"/></entry></feed>