<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: me</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/me.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2013-07-19T12:54:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>What advice would Simon Willison give to a beginner Python/Django developer?</title><link href="https://simonwillison.net/2013/Jul/19/what-advice-would-simon/#atom-tag" rel="alternate"/><published>2013-07-19T12:54:00+00:00</published><updated>2013-07-19T12:54:00+00:00</updated><id>https://simonwillison.net/2013/Jul/19/what-advice-would-simon/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-advice-would-Simon-Willison-give-to-a-beginner-Python-Django-developer/answer/Simon-Willison"&gt;What advice would Simon Willison give to a beginner Python/Django developer?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Build something and put it on the internet. Make sure you have an easy way to deploy new versions (Heroku is a good bet if you don't want to figure out Fabric). Pick a project that's useful to you - a simple blogging engine is often a good bet, or maybe something that aggregates together your posts from Twitter and Instagram and so on. Or come up with something a bit more creative!&lt;/p&gt;

&lt;p&gt;The key thing is to have a real project that you can hack on, that solves your own problems.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="django"/><category term="me"/><category term="programming"/><category term="python"/><category term="web-development"/><category term="quora"/></entry><entry><title>How did Simon Willison learn programming?</title><link href="https://simonwillison.net/2012/Nov/20/how-did-simon-willison/#atom-tag" rel="alternate"/><published>2012-11-20T15:12:00+00:00</published><updated>2012-11-20T15:12:00+00:00</updated><id>https://simonwillison.net/2012/Nov/20/how-did-simon-willison/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/How-did-Simon-Willison-learn-programming/answer/Simon-Willison"&gt;How did Simon Willison learn programming?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My dad taught me to program at first on a Commodore 64 when I was about 7. I only found out many years later that he'd had the "how to program" manual on his left hand side, me sat on his right hand side and was only ever a couple of pages ahead of me in the book!&lt;/p&gt;

&lt;p&gt;I experimented with QBASIC on DOS, but then we upgraded to Windows and there weren't any development tools included. My parents bought me a copy of Borland C++ but the learning curve was basically impossible. That put me off programming for a few years until I discovered that JavaScript was built in to IE and Netscape and started tinkering with that (and learning HTML and so on).&lt;/p&gt;

&lt;p&gt;As a teenager, I got heavily in to online gaming. I ran a clan, news site and eventually a league for the Half-Life Team Fortress Classic mod, and had to pick up just enough Perl to customise some shareware scripts (like newspro - sadly no longer available). Through that I got my first tech job working for &lt;span&gt;&lt;a href="http://gameplay.com"&gt;http://gameplay.com&lt;/a&gt;&lt;/span&gt; - a classic 1998-2001 dot com boom company. I learnt more Perl, then PHP and MySQL there (my official job was "downloads editor" for the website but I ended up tinkering with plenty of other things as well).&lt;/p&gt;

&lt;p&gt;When gameplay laid everyone off, I went off to university and did a computer science degree (and taught myself Python, C and various other languages).&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/programming"&gt;programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="me"/><category term="programming"/><category term="quora"/></entry><entry><title>What is the history of the Django web framework? Why has it been described as "developed in a newsroom"?</title><link href="https://simonwillison.net/2010/Aug/24/what-is-the-history/#atom-tag" rel="alternate"/><published>2010-08-24T18:15:00+00:00</published><updated>2010-08-24T18:15:00+00:00</updated><id>https://simonwillison.net/2010/Aug/24/what-is-the-history/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-is-the-history-of-the-Django-web-framework-Why-has-it-been-described-as-developed-in-a-newsroom/answer/Simon-Willison"&gt;What is the history of the Django web framework? Why has it been described as &amp;quot;developed in a newsroom&amp;quot;?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I was there!&lt;/p&gt;

&lt;p&gt;Django started when Adrian Holovaty and I were working together for a year at the Lawrence Journal-World newspaper back in 2003-2004.&lt;/p&gt;

&lt;p&gt;I was there on a year long internship (my UK university offered the chance to work abroad). Adrian had already created &lt;span&gt;&lt;a href="http://Lawrence.com"&gt;Lawrence.com&lt;/a&gt;&lt;/span&gt; using PHP, and I had about 5 years of PHP experience. Both of us were fed up with trying to maintain large sites in PHP (this was before namespaces, PHP5 etc so it might be better now, but at the time it started to drag once you got above a certain size of codebase). We had both fallen in love with Python, probably thanks to Mark Pilgrim's Dive Into Python book.&lt;/p&gt;

&lt;p&gt;We wanted to switch to doing web development in Python, but we both had very strong opinions about how web development should work - &lt;span&gt;thinks &lt;/span&gt;&lt;span&gt;things &lt;/span&gt;like the importance of well designed URLs, and making good use of CSS (back in 2004 the Web Standards movement was still a relatively new thing).&lt;/p&gt;

&lt;p&gt;We looked at the existing set of Python tools for web development, but none of them fitted the way we wanted to work. We also looked in to Python deployment options and found that the best bet appeared to be mod_python.&lt;/p&gt;

&lt;p&gt;The original reason for creating Django was that we weren't convinced that mod_python would scale, so we wanted to have our own thin abstraction layer between it and our code just in case we needed to ditch mod_python for something else. That's where the Django HttpRequest / HttpResponse objects came from. (WSGI didn't exist yet - in fact, we got involved on the initial Python Web-SIG mailing list to talk about what became WSGI based on what we were learning while building Django, but that process took several years and the eventual spec didn't look much like our request/response objects).&lt;/p&gt;

&lt;p&gt;We never really intended to build a web framework - for the longest time, the code that became Django was referred to as "the CMS". We pair programmed some of the core aspects of Django - the Request/Response objects, the URL resolving and the template language in particular.&lt;/p&gt;

&lt;p&gt;The ORM started life as some very unpleasant repetitive classes that we kept on having to copy-and-paste for each of our persistent models. We were sure there was a better way of doing it, but we didn't know quite what it was.&lt;/p&gt;

&lt;p&gt;Then I went away to SxSW 2004 for a week, and when I came back Adrian had written a code generator that spat out all of our model classes for us - I think he might even have had it spitting out simple versions of the admin pages as well!&lt;/p&gt;

&lt;p&gt;The aim with Django was always to port &lt;span&gt;&lt;a href="http://lawrence.com"&gt;lawrence.com&lt;/a&gt;&lt;/span&gt; to it - so you could say that while Rails was extracted out of BaseCamp, Django was built up to fit the functionality of &lt;span&gt;&lt;a href="http://lawrence.com"&gt;lawrence.com&lt;/a&gt;&lt;/span&gt;. We also built several new sites on Django - the first ever Django site to go live was &lt;code&gt;6newslawrence.com&lt;/code&gt; (now &lt;a href="https://en.wikipedia.org/wiki/6News_Lawrence"&gt;no longer available&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;My internship only lasted a year, and a month before we left we hired Jacob Kaplan-Moss as my replacement. Jacob and Adrian continued to develop Django, and about a year later convinced the World Company (the owners of the newspaper) to open source it - the successful story of Ruby on Rails was a useful argument there, but I understand the World Company were also convinced by the amount of free software the company had benefited from previously, and the desire to give something back to that community.&lt;/p&gt;

&lt;p&gt;Adrian named it after his favourite guitarist, Django Reinhardt. At some point before then the code generator had been replaced with a much smarter system based on metaclasses - I think Adrian's conversations with Ian Bicking may have influenced that.&lt;/p&gt;

&lt;p&gt;After that, everything is pretty much on the public record.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/adrian-holovaty"&gt;adrian-holovaty&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frameworks"&gt;frameworks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="adrian-holovaty"/><category term="django"/><category term="frameworks"/><category term="me"/><category term="quora"/></entry><entry><title>Simon Willison (simonw) on Twitter</title><link href="https://simonwillison.net/2009/Sep/29/twitter/#atom-tag" rel="alternate"/><published>2009-09-29T21:49:05+00:00</published><updated>2009-09-29T21:49:05+00:00</updated><id>https://simonwillison.net/2009/Sep/29/twitter/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://twitter.com/simonw"&gt;Simon Willison (simonw) on Twitter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I just realised I’ve never actually linked to my Twitter account on my blog. This is mainly an experiment to see if doing so makes my follower count go up...


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/experiment"&gt;experiment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/simonw"&gt;simonw&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;&lt;/p&gt;



</summary><category term="experiment"/><category term="me"/><category term="simonw"/><category term="twitter"/></entry><entry><title>Quoting Me</title><link href="https://simonwillison.net/2009/Mar/8/twitter/#atom-tag" rel="alternate"/><published>2009-03-08T14:59:34+00:00</published><updated>2009-03-08T14:59:34+00:00</updated><id>https://simonwillison.net/2009/Mar/8/twitter/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://twitter.com/simonw/status/1296514801"&gt;&lt;p&gt;The Internet Archive should actively partner with bit.ly / tinyurl.com / icanhaz.com etc. and maintain a mirror database of their redirects&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://twitter.com/simonw/status/1296514801"&gt;Me&lt;/a&gt;, on Twitter&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bitly"&gt;bitly&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/icanhaz"&gt;icanhaz&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-archive"&gt;internet-archive&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tinyurl"&gt;tinyurl&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/urlshorteners"&gt;urlshorteners&lt;/a&gt;&lt;/p&gt;



</summary><category term="bitly"/><category term="icanhaz"/><category term="internet-archive"/><category term="me"/><category term="tinyurl"/><category term="twitter"/><category term="urlshorteners"/></entry><entry><title>Quoting Me</title><link href="https://simonwillison.net/2008/May/13/twitter/#atom-tag" rel="alternate"/><published>2008-05-13T13:49:29+00:00</published><updated>2008-05-13T13:49:29+00:00</updated><id>https://simonwillison.net/2008/May/13/twitter/#atom-tag</id><summary type="html">
    &lt;blockquote cite="http://twitter.com/simonw/statuses/810128884"&gt;&lt;p&gt;Hey Google: any chance we can all build the social web together without requiring JavaScript?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="http://twitter.com/simonw/statuses/810128884"&gt;Me&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/me"&gt;me&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;&lt;/p&gt;



</summary><category term="google"/><category term="javascript"/><category term="me"/><category term="twitter"/></entry></feed>