<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: history</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/history.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-07-13T18:47:13+00:00</updated><author><name>Simon Willison</name></author><entry><title>Happy 20th birthday Django! Here's my talk on Django Origins from Django's 10th</title><link href="https://simonwillison.net/2025/Jul/13/django-birthday/#atom-tag" rel="alternate"/><published>2025-07-13T18:47:13+00:00</published><updated>2025-07-13T18:47:13+00:00</updated><id>https://simonwillison.net/2025/Jul/13/django-birthday/#atom-tag</id><summary type="html">
    &lt;p&gt;Today is the &lt;a href="https://www.djangoproject.com/weblog/2025/jul/13/happy-20th-birthday-django/"&gt;20th anniversary&lt;/a&gt; of &lt;a href="https://github.com/django/django/commit/d6ded0e91bcdd2a8f7a221f6a5552a33fe545359"&gt;the first commit&lt;/a&gt; to the public Django repository!&lt;/p&gt;
&lt;p&gt;Ten years ago we threw a multi-day 10th birthday party for Django back in its birthtown of Lawrence, Kansas. As a personal celebration of the 20th, I'm revisiting the talk I gave at &lt;em&gt;that&lt;/em&gt; event and writing it up here.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://www.youtube.com/watch?v=wqii_iX0RTs"&gt;the YouTube video&lt;/a&gt;. Below is a full transcript, plus my slides and some present-day annotations.&lt;/p&gt;

&lt;p&gt;&lt;lite-youtube videoid="wqii_iX0RTs" js-api="js-api"
  title="Django Origins"
  playlabel="Play: Django Origins"
&gt; &lt;/lite-youtube&gt;&lt;/p&gt;

&lt;h4&gt;Django Origins (and some things I have built with Django)&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Presented 11th July 2015 at Django Birthday in Lawrence, Kansas&lt;/em&gt;&lt;/p&gt;

  &lt;p&gt;My original talk title, as you'll see on your programs, was "Some Things I've Built with Django." But then I realized that we're here in the birthplace of Django, celebrating the 10th birthday of the framework, and nobody's told the origin story yet. So, I've switched things around a little bit. I'm going to talk about the origin story of Django, and then if I have time, I'll do the self-indulgent bit and talk about some of the projects I've shipped since then.&lt;/p&gt;
&lt;p&gt;I think Jacob's introduction hit on something I've never really realized about myself. I do love shipping things. The follow-up and the long-term thing I'm not quite so strong on. And that came to focus when I was putting together this talk and realized that basically every project I'm going to show you, I had to dig out of the Internet Archive.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ten years on from writing this talk I'm proud that I've managed to overcome my weakness in following-up - I'm now actively maintaining a bewildering array of projects, having finally figured out how to &lt;a href="https://simonwillison.net/2022/Nov/26/productivity/"&gt;maintain things&lt;/a&gt; in addition to creating them!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;But that said, I will tell you the origin story of Django.&lt;/p&gt;

&lt;div class="slide" id="django-birthday02.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday02.jpg" alt="adrian holovaty blog post

May 31, 2003, 11:49 AM ET
Job opportunity: Web programmer/developer

I interrupt this blogging hiatus to announce a job opportunity.

World Online, my employer here in beautiful Lawrence, Kansas, is looking for another Web programmer to help build cool stuff for our three sites, ljworld.com, lawrence.com and kusports.com ...
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday02.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;For me, the story starts very much like Jacob's. I was reading RSS feeds back in 2003, and I saw &lt;a href="https://www.holovaty.com/writing/211/"&gt;this entry on Adrian's blog&lt;/a&gt;, talking about a job opportunity for a web programmer or developer in Lawrence, Kansas.&lt;/p&gt;
&lt;p&gt;Now, I was in England. I was at university. But my university had just given me the opportunity to take a year abroad, to take a year out to do an internship year in industry. My girlfriend at the time was off to Germany to do her year in industry. So I was like, well, you know, do I stay at university? And then this comes along.&lt;/p&gt;
&lt;p&gt;So I got in touch with Adrian and said, you know, could this work as a year-long internship instead? And he was reading my blog and I was reading his blog, and we knew that we aligned on a bunch of things. So we thought we'd give it a go.&lt;/p&gt;
&lt;p&gt;Now, if you look through this job ad, you'll see that this is all about expert knowledge of PHP and experience designing and maintaining databases, particularly MySQL. So this was a PHP and MySQL gig.&lt;/p&gt;
&lt;p&gt;But when I arrived in Kansas, we quickly realized that we were both kind of over PHP. You know, we'd both built substantial systems in PHP, and we were running up against the limits of what you can do in PHP and have your code still be clean and maintainable.&lt;/p&gt;
&lt;p&gt;And at the same time, we were both reading &lt;a href="https://web.archive.org/web/20020324174618/http://diveintomark.org/"&gt;Mark Pilgrim's blog&lt;/a&gt; (archive link). Mark Pilgrim had been publishing Dive into Python and making a really strong case for why Python was a great web language.&lt;/p&gt;
&lt;p&gt;So we decided that this was the thing we wanted to do. But we both had very strong opinions about how you should build websites. Things like URL design matters, and we care about the difference between get and post, and we want to use this new thing called CSS to lay out our web pages. And none of the existing Python web frameworks really seemed to let us do what we wanted to do.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday03.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday03.jpg" alt="Lawrence JOURNAL-WORLD
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday03.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;Now, before I talk more about that, I'll back up and talk about the organization we're working for, the &lt;a href="https://en.wikipedia.org/wiki/Lawrence_Journal-World"&gt;Lawrence Journal World&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;David &lt;a href="https://www.youtube.com/watch?v=FDsqFD4pDy4"&gt;gave a great introduction&lt;/a&gt; to why this is an interesting organization. Now, we're talking about a newspaper with a circulation of about 10,000, like a tiny newspaper, but with a world-class newsroom, huge amounts of money being funneled into it, and like employing full-time software developers to work at a local newspaper in Kansas.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday04.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday04.jpg" alt="Rob Curley (and a photo of Rob)" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday04.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And part of what was going on here was this guy. This is Rob Curley. He's been mentioned a few times before already.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday05.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday05.jpg" alt="Unofficial mission statement: “build cool shit”
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday05.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And yeah, Rob Curley set this unofficial mission statement that we "build cool shit". This is something that Adrian would certainly never say. It's not really something I'd say. But this is Rob through and through. He was a fantastic showman.&lt;/p&gt;
&lt;p&gt;And this was really the appeal of coming out to Lawrence, seeing the stuff they'd already built and the ambitions they had.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday06.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday06.jpg" alt="Screenshot of Lawrence.com - Focus on Kansas. Community blogs, calendars, merch, links to movies, video games, eating out and more." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday06.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;This is Lawrence.com. This is actually the Lawrence.com written in PHP that Adrian had built as the sole programmer at the Lawrence Journal World. And you should check this out. Like, even today, this is the best local entertainment website I have ever seen. This has everything that is happening in the town of Lawrence, Kansas population, 150,000 people. Every gig, every venue, all of the stuff that's going on.&lt;/p&gt;
&lt;p&gt;And it was all written in PHP. And it was a very clean PHP code base, but it was really stretching the limits of what it's sensible to do using PHP 4 back in 2003.&lt;/p&gt;
&lt;p&gt;So we had this goal when we started using Python. We wanted to eventually rebuild Lawrence.com using Python. But in order to get there, we had to first build -- we didn't even know it was a web framework. We called it the CMS.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday07.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday07.jpg" alt="6 Weather Lawrence. An image shows the Lawrence skyline with different conditions for the next 6 days." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday07.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And so when we started working on Django, the first thing that we shipped was actually this website. We had a lot of the six-news Lawrence. This is the six-news Lawrence -- six-news is the TV channel here -- six-news Lawrence weather page.&lt;/p&gt;
&lt;p&gt;And I think this is pretty cool. So Dan Cox, the designer, was a fantastic illustrator. We actually have this illustration of the famous Lawrence skyline with each panel could be displayed with different weather conditions depending on the weather.&lt;/p&gt;
&lt;p&gt;And in case you're not from Kansas, you might not have realized that the weather is a big deal here. You know, you have never seen more excited weathermen than when there's a tornado warning and they get to go on local news 24 hours a day giving people updates.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday08.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday08.jpg" alt="6 News Lawrence - 6 TV news anchor portrait photos in the heading." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday08.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So we put the site live first. This was the first ever Django website. We then did the rest of the 6 News Lawrence website.&lt;/p&gt;
&lt;p&gt;And this -- Adrian reminded me this morning -- the launch of this was actually delayed by a week because the most important feature on the website, which is clearly the photograph of the news people who are on TV, they didn't like their hairdos. They literally told us we couldn't launch the website until they'd had their hair redone, had the headshots retaken, had a new image put together. But, you know, image is important for these things.&lt;/p&gt;
&lt;p&gt;So anyway, we did that. We did six-news Lawrence. And by the end of my year in Kansas, Adrian had rewritten all of Lawrence.com as well.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday09.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday09.jpg" alt="Lawrence.com with a new design, it looks very cool." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday09.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So this is the Lawrence.com powered by Django. And one thing I think is interesting about this is when you talk to like David Heinemeier Hansson about Rails, he'll tell you that Rails is a framework that was extracted from Basecamp. They built Basecamp and then they pulled out the framework that they used and open sourced it.&lt;/p&gt;
&lt;p&gt;I see Django the other way around. Django is a framework that was built up to create Lawrence.com. Lawrence.com already existed. So we knew what the web framework needed to be able to do. And we just kept on iterating on Django or the CMS until it was ready to produce this site here.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday10.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday10.jpg" alt="LJWorld.com Game 2006 - photos of kids playing sports, stories about kid sports, links to photo galleries and playing locations and schedules and more." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday10.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And for me, the moment I realized that we were onto something special was actually when we built this thing. This is a classic Rob Curley project. So Rob was the boss. He had the crazy ideas and he didn't care how you implemented them. He just wanted this thing done.&lt;/p&gt;
&lt;p&gt;And he came to us one day and said, you know, the kids' little league season is about to start. Like kids playing softball or baseball. Whatever the American kids with bats thing is. So he said, kids' little league season is about to start. And we are going to go all out.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday11.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday11.jpg" alt="A Game page showing DCABA 10K Blue - a local team plus their schedule." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday11.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;I want to treat these kids like they're the New York Yankees. We're going to have player profiles and schedules and photos and results.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday12.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday12.jpg" alt="A form to sign up for cell phone updates for that team." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday12.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And, you know, we're going to have the ability for parents to get SMS notifications whenever their kid scores.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday13.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday13.jpg" alt="An index page showing 360 degree field photos for 12 different venues around town." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday13.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And we're going to have 360 degree, like, interactive photos of all of the pitches in Lawrence, Kansas, that these kids are playing games on.&lt;/p&gt;
&lt;p&gt;They actually did send a couple of interns out with a rig to take 360 degree virtual panoramas of Fenway Park and Lawrence High School and all of these different places.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday14.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday14.jpg" alt="... in three days
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday14.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And he said -- and it starts in three days. You've got three days to put this all together.&lt;/p&gt;
&lt;p&gt;And we pulled it off because Django, even at that very early stage, had all of the primitives you needed to build 360 degree interactives. That was all down to the interns. But we had all of the pieces we needed to pull this together.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday15.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday15.jpg" alt="&amp;quot;The CMS&amp;quot;" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday15.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So when we were working on it back then, we called it the CMS.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday16.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday16.jpg" alt="brazos
webbing
physique
anson
The Tornado Publishing System
private dancer
fizgig
lavalier
pythy

https://jacobian.org/writing/private_dancer/
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday16.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;A few years ago, &lt;a href="https://jacobian.org/2005/sep/9/private_dancer/"&gt;Jacob found a wiki page&lt;/a&gt; with some of the names that were being brainstormed for the open source release. And some of these are great. There's Brazos -- I don't know where that came from -- Webbing, Physique, Anson.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday17.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday17.jpg" alt="Highlighted: The Tornado Publishing System" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday17.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;This is my favorite name. I think this is what I proposed -- is the Tornado Publishing System.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday18.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday18.jpg" alt="Screenshot from Office Space. Lumbergh says &amp;quot;Yeah, if you could go ahead and get those TPS reprots to me as soon as possible... that&amp;#39;d be great&amp;quot;." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday18.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And the reason is that I was a really big fan of &lt;a href="https://en.wikipedia.org/wiki/Office_Space"&gt;Office Space&lt;/a&gt;. And if we had the Tornado, we could produce TPS reports, which I thought would be amazing.&lt;/p&gt;
&lt;p&gt;But unfortunately, this being Kansas, the association of Tornadoes isn't actually a positive one.&lt;/p&gt;
&lt;p&gt;Private Dancer, Physgig, Lavalia, Pithy -- yeah. I'm very, very pleased that they picked the name that they did.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday19.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday19.jpg" alt="“Wouldn&amp;#39;t It be cool If...”
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday19.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So one of our philosophies was build cool shit. The other philosophy we had was what we called "Wouldn't it be cool if?"&lt;/p&gt;
&lt;p&gt;So there were no user stories or careful specs or anything. We'd all sit around in the basement and then somebody would go "Wouldn't it be cool if...", and they'd say something. And if we thought it was a cool idea, we'd build it and we'd ship it that day.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday20.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday20.jpg" alt="Lawrence.com featured audio page - a list of bands each with links to their music and information about where they are playing in town this week." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday20.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And my favorite example of "Wouldn't it be cool if?" -- this is a classic Adrian one -- is "Wouldn't it be cool if the downloads page on Lawrence.com featured MP3s you could download of local bands?" And seeing as we've also got the schedule of when the bands are playing, why don't we feature the audio from bands who you can go and see that week?&lt;/p&gt;
&lt;p&gt;So this page will say, "OK Jones are playing on Thursday at the Bottleneck. Get their MP3. Listen to the radio station." We had a little MP3 widget in there. Go and look at their band profile. All of this stuff.&lt;/p&gt;
&lt;p&gt;Really, these kinds of features are what you get when you take 1970s relational database technology and use it to power websites, which -- back in 2003, in the news industry -- still felt incredibly cutting edge. But, you know, it worked.&lt;/p&gt;
&lt;p&gt;And that philosophy followed me through the rest of my career, which is sometimes a good idea and often means that you're left maintaining features that seemed like a good idea at the time and quickly become a massive pain!&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday21.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday21.jpg" alt="YAHOO!
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday21.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;After I finished my internship, I finished my degree in England and then ended up joining up with Yahoo. I was actually working out of the Yahoo UK office but for a R&amp;amp;D team in the States. I was there for about a year and a half.&lt;/p&gt;
&lt;p&gt;One of the things I learned is that you should never go and work for an R&amp;amp;D team, because the problem with R&amp;amp;D teams is you never ship. I was there for a year and a half and I basically have nothing to show for it in terms of actual shipped features.&lt;/p&gt;
&lt;p&gt;We built some very cool prototypes. And actually, after I left, one of the projects I worked on, &lt;a href="https://en.wikipedia.org/wiki/Fire_Eagle"&gt;Yahoo FireEagle&lt;/a&gt;, did end up getting spun out and turned into a real product.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday22.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday22.jpg" alt="YAHOO! ASTRONEWSOLOGY

Dick Cheneey (age 65)

Compare their horoscope with our recent news stories!

A very close friend or a member of your current peer group -- who means a great deal to you -- has recently found it necessary to go out of their way to tick you off. At least, that&amp;#39;s the way it seems. It&amp;#39;s worked, too -- better than it should have. You&amp;#39;re not just angry, you&amp;#39;re furious. Before you let go and let them have it, be sure you&amp;#39;re right. Feeling righteous is far better than feeling guilty

Fox News wins battle for Cheney interview (Reuters) - 16th February, 12:13
Cheney Says He Has Power to Declassify Info (AP) - 16th February, 09:56
Cheney Mishap Takes Focus Off CIA Leak (AP) - 16th February, 09:13
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday22.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;But there is one project -- the first project I built at Yahoo using Django that I wanted to demonstrate. This was for Yahoo's internal hack day. And so Tom Coates and myself, who were working together, we decided that we were going to build a mashup, because it was 2005 and mashups were the cutting edge of computer science.&lt;/p&gt;
&lt;p&gt;So we figured, OK, let's take the two most unlikely Yahoo products and combine them together and see what happens. My original suggestion was that we take Yahoo Dating and Yahoo Pets. But I was told that actually there was this thing called Dogster and this other thing called Catster, which already existed and did exactly that.&lt;/p&gt;
&lt;p&gt;So the next best thing, we went for Yahoo News and Yahoo Horoscopes. And what we ended up building -- and again, this is the first Django application within Yahoo -- was Yahoo Astronewsology.&lt;/p&gt;
&lt;p&gt;And the idea was you take the news feed from Yahoo News, you pull out anything that looks like it's a celebrity's name, look up their birth date, use that to look up their horoscope, and then combine them on the page.
And in a massive stroke of luck, we built this the week that Dick Cheney &lt;a href="https://en.wikipedia.org/wiki/Dick_Cheney_hunting_accident"&gt;shot his friend in the face&lt;/a&gt; while out hunting.&lt;/p&gt;
&lt;p&gt;Dick Cheney's horoscope for that week says, "A very close friend who means a great deal to you has found it necessary to go out of their way to tick you off. You're not just angry, you're furious. Before you let go and let them have it, be sure you're right. Feeling righteous is far better than feeling guilty."&lt;/p&gt;
&lt;p&gt;And so if Dick Cheney had only had only been reading his horoscopes, maybe that whole situation would have ended very differently.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday23.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday23.jpg" alt="The Guardian" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday23.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So after Yahoo, I spent a while doing consulting and things, mainly &lt;a href="https://simonwillison.net/tags/openid/"&gt;around OpenID&lt;/a&gt; because I was determined to make OpenID work. I was absolutely convinced that if OpenID didn't take off, just one company would end up owning single sign-on for the entire internet, and that would be a total disaster.&lt;/p&gt;
&lt;p&gt;And with hindsight, it didn't quite happen. Facebook login looked like it was going to do that a few years ago, but these days there's enough variety out there that I don't feel like we all have to submit to our Facebook masters.&lt;/p&gt;
&lt;p&gt;But, you know, I was enjoying freelancing and consulting and so on. And then I ended up going for coffee with somebody who worked for &lt;a href="https://www.theguardian.com/"&gt;The Guardian&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm sure you've all heard of The Guardian. It's one of England's most internationally focused newspapers. It's a very fine publication. And I realized that I really missed working in a newsroom environment. And I was incredibly jealous of people like Adrian, who'd gone off to the Washington Post and was doing data journalism there, and Derek Willis as well, who bounced from the Post and The New York Times. There was all of this cool data journalism stuff going on.&lt;/p&gt;
&lt;p&gt;And The Guardian's pitch was basically, we've been building a CMS from scratch in Java with a giant team of engineers, and we've built it and it's really cool, but we're not shipping things quickly. We want to start exploring this idea of building things much faster to fit in with the news cycle.&lt;/p&gt;
&lt;p&gt;And that was a very, very tempting thing for me to get involved with. So I went to work for The Guardian.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday24.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday24.jpg" alt="Photo of Simon Rogers, looking like a man who can find you the right data." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday24.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And The Guardian have a really interesting way of doing onboarding of new staff. The way they do it is they set you up on coffee dates with people from all over the organization. So one day you'll be having coffee with somebody who sells ads, and the next day it'll be the deputy editor of the newsroom, and the next day it'll be a journalist somewhere. And each of these people will talk to you and then they'll suggest other people for you to meet up with. So over the first few weeks that you're there, you meet a huge variety of people.&lt;/p&gt;
&lt;p&gt;And time and time again, as I was talking to people, they were saying, "You know what? You should go and talk to Simon Rogers, this journalist in the newsroom."&lt;/p&gt;
&lt;p&gt;This is Simon Rogers. I went down to talk to him, and we had this fascinating conversation. So Simon is a journalist. He worked in the newsroom, and his speciality was gathering data for The Guardian's infographics. Because they are in the paper. They post, they have graphs and charts and all sorts of things like that that they publish.&lt;/p&gt;
&lt;p&gt;It turns out that Simon was the journalist who knew how to get that data out of basically any source you can imagine. If you wanted data, he would make some phone calls, dig into some government contacts and things, and he'd get those raw numbers. And all of the other journalists thought he was a bit weird, because he liked hanging out and editing Excel spreadsheets and stuff.&lt;/p&gt;
&lt;p&gt;So I said to him halfway through this conversation, "Just out of interest, what do you do with those Excel spreadsheets?" And he's like, "Oh, I keep them all on my hard drive." And showed me this folder with hundreds and hundreds of meticulously researched, properly citable news quality spreadsheets full of data about everything you could imagine. And they lived on his hard drive and nowhere else.&lt;/p&gt;
&lt;p&gt;And I was like, "Have you ever talked to anyone in the engineering department upstairs?" And we made this connection.&lt;/p&gt;
&lt;p&gt;And so from then on, we had this collaboration going where he would get data and he'd funnel it to me and see if we could, see if I or someone else in the engineering department at Guardian could do something fun with it.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday25.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday25.jpg" alt="Guardian website screenshot.

BNP members: the far right map of Britain

A court injunction prevents the distribution of the names on the
BNP membership leaked online. This map shows you which
constituencies have the most BNP members

Then a BNP membership by constituency colourful map.
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday25.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And so that was some of the most rewarding work of my career, because it's journalism, you know, it's news, it's stuff that matters. The deadlines are ridiculous. If a news story breaks and it takes you three weeks to turn around a piece of data journalism around it, why did you even bother? And it's perfect for applying Django to.&lt;/p&gt;
&lt;p&gt;So the first story I got to work on at the Guardian was actually one of the early WikiLeaks things. This is before WikiLeaks was like massively high profile. But quite early on, WikiLeaks leaked a list of all of the members of the British National Party, basically the British Nazis. They leaked a list of all of their names and addresses.&lt;/p&gt;
&lt;p&gt;And the Guardian is an ethical newspaper, so we're not going to just publish 18,000 people's names and addresses. But we wanted to figure out if there was something we could do that would make use of that data but wouldn't be violating anyone's individual privacy.&lt;/p&gt;
&lt;p&gt;And so what we did is we took all of the addresses, geocoded them, figured out which parliamentary constituency they lived in, and used that to generate a heat map that's actually called a choropleth map, I think, of the UK showing where the hotspots of BNP activity were.&lt;/p&gt;
&lt;p&gt;And this works because in the UK a parliamentary constituency is, they're designed to all have around about the same population. So if you just like make the color denser for the larger numbers of BNP members, you get this really interesting heat map of the country.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday26.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday26.jpg" alt="A photo of that same map shown in a paper newspaper" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday26.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And what was really cool about this is that I did this using SVG, because we have an infographics department with Illustrator who are good at working with SVG. And it's very easy with an SVG file with the right class names on things to set colors on different regions.&lt;/p&gt;
&lt;p&gt;And because we produced it in SVG, we could then hand it over to the print department, and the next day it was out in the paper. It was like a printed thing on paper, on like dead trees distributed all over the country, which I thought was super cool.&lt;/p&gt;
&lt;p&gt;So that was the first data journalism project that we did at The Guardian. And it really helped prove that given the right data sets and like the right tools and a bit of freedom, you can do some really cool things.&lt;/p&gt;
&lt;p&gt;The first few times I did this, I did it by hand. Then we had The Guardian's first hack day and I was like, well okay, I'm going to build a little self-service tool for our infographics journalists to like dump in a bunch of CSV numbers and get one of these maps out of it.&lt;/p&gt;
&lt;p&gt;So I built this tool. I didn't have anywhere official to deploy it, so I just ran it on my Linux desktop underneath my desk. And they started using it and putting things in the paper and I kind of forgot about it. And every now and then I get a little feature request.&lt;/p&gt;
&lt;p&gt;A few years after I left The Guardian, I ran into someone who worked there. And he was like, yeah, you know that thing that you built? So we had to keep your desktop running for six months after you left. And then we had to like convert it into a VMware instance. And as far as I know, my desktop is still running as a VMware instance somewhere in The Guardian.&lt;/p&gt;
&lt;p&gt;Which ties into the Simon database, I guess. The hard thing is building stuff is easy. Keeping it going it turns out is surprisingly difficult.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday27.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday27.jpg" alt="Website:  Investigate your MP&amp;#39;s expenses
mps-expenses.guaraian.co.uk

Join us in digging through the documents of MPs&amp;#39; expenses to identify individual claims, or documents that you think merit further investigation. You can work through your own MP&amp;#39;s expenses, or just hit the button below to start reviewing. 

A progress bar shows 28,801 of you have reviewed 221,220 of them, only 237o612 to go..." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday27.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;This was my favorite project at The Guardian. There was &lt;a href="https://en.wikipedia.org/wiki/United_Kingdom_parliamentary_expenses_scandal"&gt;a scandal in the UK a few years ago&lt;/a&gt; where it turned out that UK members of parliament had all been fiddling their expenses.&lt;/p&gt;
&lt;p&gt;And actually the background on this is that they're the lowest paid MPs anywhere in Europe. And it seems like the culture had become that you become an MP and on your first day somebody takes you aside and goes, look, I know the salary is terrible. But here's how to fill your expenses and make up for it.&lt;/p&gt;
&lt;p&gt;This was a scandal that was brewing for several years. The Guardian had actually filed freedom of information requests to try and get these expense reports. Because they were pretty sure something dodgy was going on. The government had dragged their heels in releasing the documents.&lt;/p&gt;
&lt;p&gt;And then just when they were a month before they finally released the documents, a rival newspaper, the Telegraph, managed to get hold of a leaked copy of all of these expenses. And so the Telegraph had 30 days lead on all of the other newspapers to dig through and try and find the dirt.&lt;/p&gt;
&lt;p&gt;So when they did release the expenses 30 days later, we had a race on our hands because we needed to analyze 20,000 odd pages of documents. Actually, here it says 450,000 pages of documents in order to try and find anything left that was newsworthy.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday28.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday28.jpg" alt="Page 34 of Janet Dean&amp;#39;s Incidental Expenses Provision 2007/08

Much of the page is redacted. 

What kind of page is this? Buttons for:
Claim, Proof, Blank, Other

Is this page interesting? Should we investigate it further?" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday28.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And so we tackled this with crowdsourcing. We stuck up a website. We told people, we told Guardian readers, come to this website, hit the button, we'll show you a random page from someone's expenses. And then you can tell us if you think it's not interesting, interesting, or we should seek an investigative reporter on it.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday29.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday29.jpg" alt="Hywel Francis MP&amp;#39;s expenses

Labour MP for Aberavon. A photo of him smiling. Below is a table of documents each showing progress through reviewing each one." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday29.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And one of the smartest things we did with this is we added a feature where you could put in your postcode, we'd figure out who your MP was, and then we would show you their smug press photo. You know, their smug face next to all of their expense claims that they'd filed.&lt;/p&gt;
&lt;p&gt;And this was incredibly effective. People were like, "Ooh, you look so smug. I'm going to get you." And once we put this up, and within 18 hours, our community had burned through hundreds of thousands of pages of expense documents trying to find this stuff.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday30.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday30.jpg" alt="Screenshot showing thumbnails of a document that is being processed." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday30.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And again, this was built in Django. We had, I think, five days warning that these documents are coming out. And so it was a total, like, I think I built a proof of concept on day one. That was enough to show that it was possible. So I got a team with a designer and a couple of other people to help out. And we had it ready to go when the document dump came out on that Friday.&lt;/p&gt;
&lt;p&gt;And it was pretty successful. We dug up some pretty interesting stories from it. And it was also just a fantastic interactive way of engaging our community. And, you know, the whole crowdsourcing side of it was super fun.&lt;/p&gt;
&lt;p&gt;So I guess the thing I've learned from that is that, oh, my goodness, it's fun working for newspapers. And actually, if you -- the Lawrence Journal world, sadly, no longer has its own technology team. But there was a period a few years ago where they were doing some cracking data journalism work. Things like tracking what the University of Kansas had been using its private jet for, and letting people explore the data around that and so on.&lt;/p&gt;
&lt;p&gt;The other thing we did at the Guardian, this is going back to Simon Rogers, is he had all of these spreadsheets on his hard drive. And we're like, okay, we should really try and publish this stuff as raw data. Because living on your hard drive under your head is a crying shame.&lt;/p&gt;
&lt;p&gt;And the idea we came up with was essentially to start something we called &lt;a href="https://www.theguardian.com/news/datablog/2009/mar/10/blogpost1"&gt;the Data blog&lt;/a&gt; and publish them as Google spreadsheets. You know, we spent a while thinking, well, you know, what's the best format to publish these things in? And we're like, well, they're in Excel. Google spreadsheets exists and it's pretty good. Let's just put a few of them up as Google sheets and see what people do with them.&lt;/p&gt;
&lt;p&gt;And it turns out that was enough to build this really fun community of data nerds around the Guardian's data blog who would build their own visualizations. They'd dig into the data. And it meant that we could get all sorts of -- like, we could get so much extra value from the work that we were already doing to gather these numbers for the newspaper. That stuff was super fun.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday31.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday31.jpg" alt="Side projects
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday31.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;Now, while I was working at the Guardian, I also got into the habit of building some projects with my girlfriend at the time, now my wife Natalie. So Natalie and I have skill sets that fit together very nicely. She's a front-end web developer. I do back-end Django stuff. I do just enough ops to be dangerous. And so between the two of us, we can build websites.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday32.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday32.jpg" alt="Django People

A map of the world with green markers, plus a table of the countries with the most registered Django community members." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday32.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;The first things we worked on together is a site which I think some people here should be familiar with, called Django People. The idea was just, you know, the Django community appears to be quite big now. Let's try and get people to stick a pin on a map and tell us where they are.&lt;/p&gt;
&lt;p&gt;Django People still exists today. It's online thanks to a large number of people constantly bugging me at Django Cons and saying, look, just give us the code and the data and we'll get it set up somewhere so it can continue to work. And that's great. I'm really glad I did that because this is the one project that I'm showing you today which is still available on the web somewhere. (&lt;em&gt;2025 update: the site is no longer online.&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;But Django People was really fun. And the thing we learned from this, my wife and I, is that we can work together really well on things.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday33.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday33.jpg" alt="/dev/fort

A photo of a very cool looking sea fortress." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday33.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;The other side project we did was much more of a collaborative effort. Again, this no longer exists, or at least it's no longer up on the web. And I'm deeply sad about this because it's my favorite thing I'm going to show you.&lt;/p&gt;
&lt;p&gt;But before I show you the project, I'll show you how we built it. We were at a BarCamp in London with a bunch of our new friends and somebody was showing photographs of this Napoleonic sea fortress that they had rented out for the weekend from an organization in the UK called &lt;a href="https://www.landmarktrust.org.uk/"&gt;the Landmark Trust&lt;/a&gt;, who basically take historic buildings and turn them into vacation rentals as part of the work to restore them.&lt;/p&gt;
&lt;p&gt;And we were like, "Oh, wouldn't it be funny if we rented a castle for a week and all of us went out there and we built stuff together?" And then we were like, "That wouldn't be funny. That would be freaking amazing."&lt;/p&gt;
&lt;p&gt;So we rented this place. This is called &lt;a href="https://en.wikipedia.org/wiki/Fort_Clonque"&gt;Fort Clonque&lt;/a&gt;. It's in the Channel Islands, halfway between England and France. And I think it cost something like $2,000 for the week, but you split that between a dozen people and it's like youth hostel prices to stay in a freaking fortress.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday34.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday34.jpg" alt="Group photos of people hanging out on the fort with their laptops." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday34.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So we got a bunch of people together and we went out there and we just spent a week. We called it &lt;a href="https://devfort.com/"&gt;/dev/fort&lt;/a&gt;. We spent a week just building something together.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday35.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday35.jpg" alt="Where&amp;#39;s my nearest llama?" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday35.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And the thing we ended up building was called Wildlife Near You. And what Wildlife Near You does is it solves the eternal question, "Where is my nearest llama?"&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday36.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday36.jpg" alt="WildlifeNearYou.com

Seen any more animals? Why not add another trip 
or import some photos from Flickr. Or you could
help people identify the animals in their photos!" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday36.jpg"&gt;#&lt;/a&gt;
  
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday37.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday37.jpg" alt="My family trip to Gigrin Farm r-ed Kite Feeding station on 15th April 2008 

Sightings: Common Raven, Common Buzzard, Red Kite" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday37.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;Once again, this is a crowdsourcing system. The idea is that you go to wildlifenearyou.com and you've just been on a trip to like a nature park or a zoo or something. And so you create a trip report saying, "I went to the Red Kite feeding station and I saw a common raven and a common buzzard and a red kite." And you import any of your photos from Flickr and so forth.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday38.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday38.jpg" alt="WildlifeNearYou: cookieyum - list of recent trips for this user" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday38.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And you build up this profile saying, "Here are all the places I've been and my favorite animals and things I've seen."&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday39.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday39.jpg" alt="Search &amp;quot;llamas&amp;quot; near &amp;quot;brighton&amp;quot; - shows Ashdown Forest Llama Farm." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday39.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And then once we've got that data set, we can solve the problem. You can say, "Search for llamas near Brighton." And it'll say, "Your nearest llama is 18 miles away and it'll show you pictures of llamas and all of the llama things."&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday40.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday40.jpg" alt="Red Panda: 17 people love this animal. Link to Wikipedia. Your nearest Red Panda is at Marwell Zoo, 51 miles away from Brighton and Hove UK." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday40.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And we have species pages. So here's the red panda page. 17 people love red pandas. You can see them at Taronga Zoo.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday41.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday41.jpg" alt="Which Marmot photo is better?

Two marmot photos - you can select one or the other or click &amp;quot;skip&amp;quot;." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday41.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And then our most viral feature was we had all of these photos of red pandas, but how do we know which is the best photo of a red panda that we should highlight on the red panda page? So we basically built Hot or Not for photographs of wildlife.&lt;/p&gt;
&lt;p&gt;So it's like, "Which marmot photo is better?" And you say, "Well, clearly the one on the right." And it's like, "Okay, which skunk photo is better?"&lt;/p&gt;
&lt;p&gt;I was looking at the logs and people would go through hundreds and hundreds of photos. And you'd get scores and you can see, "Oh, wow, my marmot photo is the second best marmot photo on the whole website."&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday42.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday42.jpg" alt="Find owls near you!
owlsnearyou.com
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday42.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So that was really fun. And then we eventually took it a step further and said, "Okay, well, this is really fun, but this is a website that you have to type on, right?" And meanwhile, mobile phones are now getting HTML5 geolocation and stuff. So can we go a step further?&lt;/p&gt;
&lt;p&gt;So we built owlsnearyou.com. And what owlsnearyou.com does is you type in the location, and it says, "Your nearest owl is 49 miles away." It's a spectacle owl at London Zoo. It was spotted one year ago by Natalie.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday43.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday43.jpg" alt="Owls near 2-3 Kensington St,
Brighton, Brighton and Hove

49.1 miles away
We think your nearest owl is a Spectacled Owl at London Zoo! Spotted
twice, most recently by natbat 1 year ago.
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday43.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And if you went here on a mobile phone-- If you went here on a device that supported geolocation, it doesn't even ask you where you live. It's just like, "Oh, okay, here's your nearest owl."&lt;/p&gt;
&lt;p&gt;And I think we shipped lions near you and monkeys near you and a couple of other domains, but owlsnearyou.com was always my favorite.&lt;/p&gt;
&lt;p&gt;So looking at this now, we should really get this stuff up and running again. It was freaking amazing. Like, this for me is the killer app of all killer apps.&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;We did eventually bring this idea back as &lt;a href="https://www.owlsnearme.com/"&gt;www.owlsnearme.com&lt;/a&gt;, using data from &lt;a href="https://www.inaturalist.org/"&gt;iNaturalist&lt;/a&gt; - that's online today.&lt;/em&gt;)&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday44.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday44.jpg" alt="‘Bugle is a Twitter-like
application for groups of
hackers collaborating in a
castle (or fort, or other
defensive structure) with no
internet connection”
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday44.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So there have actually been a bunch of Devforts since then. One of the things we learned from Devfort is that building applications-- If you want to do a side project, doing one with user accounts and logins and so on, it's a freaking nightmare. It actually took us almost a year after we finished on the fort to finally ship Wildlife Near You because there were so many complexities. And then we had to moderate it and keep an eye on it and so on.&lt;/p&gt;
&lt;p&gt;So if you look at the more recent Devforts, they've taken that to heart. And now they try and ship things which just work and don't require ongoing users logging in and all of that kind of rubbish.&lt;/p&gt;
&lt;p&gt;But one of the other projects I wanted to show you that came out of a Devfort was something called Bugle. And the idea of Bugle is Bugle is a Twitter-like application for groups of hackers collaborating in a castle, fort, or other defensive structure who don't have an internet connection.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday45.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday45.jpg" alt="Screenshot of Bugle - it looks like Twitter, has a &amp;quot;blast! button, various messages include todo list items and git commits and messages and at-mentions" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday45.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;This was basically to deal with Twitter withdrawal when we were all on the fort together and we had an internal network. So Bugle, looking at it now, we could have been Slack! We could have been valued at $2 billion.&lt;/p&gt;
&lt;p&gt;Yeah, Bugle is like an internal Twitter clone with a bunch of extra features like it's got a paste bin and to-do lists and all sorts of stuff like that.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday46.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday46.jpg" alt="So I said to Ben Firshman...
“Wouldn&amp;#39;t it be cool if Twitter
apps on the network could
talk to Bugle instead?”
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday46.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And does anyone here know Ben Firshman? I think quite a few people do. Excellent. So Ben Firshman was out on a Devfort and I did a "Wouldn't it be cool if" on him. I said, "Wouldn't it be cool if all of our Twitter apps and our phones talked to Bugle instead on the network?"&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday47.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday47.jpg" alt="Magic Twitter support

To make Twitter clients magically work with Bugle on a network, we need to mess with BIND.

Shows BIND settings" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday47.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And so if you &lt;a href="https://github.com/simonw/bugle_project/blob/master/README.md#magic-twitter-support"&gt;go and look on GitHub&lt;/a&gt;, I bet this doesn't work anymore. But he did add magic Twitter support where you could run a local DNS server, redirect Twitter to Bugle and we cloned, he cloned enough of the Twitter API that like Twitter apps would work and it would be able to Bugle instead.&lt;/p&gt;
&lt;p&gt;We wanted to do a Devfort in America. You don't really have castles and forts that you can rent for the most part. If anyone knows of one, please come and talk to me because there's a distinct lack of defensible structures at least of the kind that we are used to back in Europe.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday48.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday48.jpg" alt="Lanyrd.com
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday48.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So I'm running out of time, but that's OK because the most recent project, Lanyrd, is something which most people here have probably encountered.&lt;/p&gt;
&lt;p&gt;I will tell a little bit of the backstory of Lanyrd because it's kind of fun.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday49.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday49.jpg" alt="A photo of Natalie and myself in wedding attire with a Golden Eagle perched on a glove on my hand." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday49.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;Lanyrd was a honeymoon project. &lt;/p&gt;
&lt;p&gt;Natalie and I got married.  The wildlife near you influence affected our wedding - it was a freaking awesome wedding! You know, in England, you can get a man with a golden eagle and a barn owl and various other birds to show up for about $400 for the day. And then you get to take photos like this.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday50.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday50.jpg" alt="Natalie and I riding a camel on a beach" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday50.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So anyway, we got married, we quit our jobs, I had to leave the Guardian because we wanted to spend the next year or two of our lives just traveling around the world, doing freelancing work on our laptops and so on.&lt;/p&gt;
&lt;p&gt;We got as far as Morocco, we were six months in, when we contracted food poisoning in Casablanca and we were too sick to keep on travelling, so we figured we needed to like, you know, and it was also Ramadan, so it was really hard to get food and stuff. So we rented an apartment for two weeks and said, "Okay, well, since we're stuck for two weeks, let's like finish that side project we've been talking about and ship it and see if anyone's interested."&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday51.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday51.jpg" alt="Lanyrd screenshot: Your contacts&amp;#39; calendar. Shows 303 conferences your Twitter contacts are interested in." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday51.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So we shipped Lanyrd, which was built around the idea of helping people who use Twitter find conferences and events to go to. What we hadn't realised is that if you build something around Twitter, especially back in 2010, it instantly goes viral amongst people who use Twitter.&lt;/p&gt;
&lt;p&gt;So that ended up cutting our honeymoon short, and we actually applied for Y Combinator from Egypt and ended up spending three years building a startup and like hiring people and doing that whole thing.&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;Natalie wrote more about our startup in &lt;a href="https://blog.natbat.net/post/61658401806/lanyrd-from-idea-to-exit-the-story-of-our"&gt;Lanyrd: from idea to exit - the story of our startup&lt;/a&gt;.&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;The only thing I'll say about that is everything in the... Startups have to give the impression that everything's super easy and fun and cool all the time, because people say, "How's your startup going?" And the only correct answer is, "Oh man, it's amazing. It's doing so well." Because everyone has to lie about the misery, pain, anguish and stress that's happening behind the scenes.&lt;/p&gt;
&lt;p&gt;So it was a very interesting three years, and we built some cool stuff and we learnt a lot, and I don't regret it, but do not take startups lightly.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday52.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday52.jpg" alt="Eventbrite
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday52.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;So a year and a half ago, we ended up selling Lanyrd to Eventbrite and moving out to San Francisco. And at Eventbrite, I've been mostly on the management team building side of things, but occasionally managing to sneak some code out as well.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday53.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday53.jpg" alt="Screenshot of the My Events page on Eventbrite - at the top is an orange bar showing SQL render time and number of templates and log lines and requests." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday53.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;The one thing I want to show you from Eventbrite, because I really want to open source this thing, is again at Hack Day, we built a tool called the Tikibar, which is essentially like the Django debug toolbar, but it's designed to be run in production. Because the really tough things to debug don't happen in your dev environment. They happen in production when you're hitting a hundred million row database or whatever.&lt;/p&gt;
&lt;p&gt;And so the Tikibar is designed to add as little overhead as possible, but to still give you detailed timelines of SQL queries that are executing and service calls and all of that kind of stuff. It's called the Tikibar because I really like Tikibars.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday54.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday54.jpg" alt="The orange bar is now expanded, it shows a line for each SQL query with a timeline indicating how long each one took." style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday54.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;And the best feature is if a page takes over 500 milliseconds to load, the eyes on the Tiki God glow red in disapproval at you.&lt;/p&gt;
&lt;p&gt;If anyone wants a demo of that, come and talk to me. I would love to get a few more instrumentation hooks into Django to make this stuff easier.&lt;/p&gt;
&lt;p&gt;(&lt;em&gt;The Tikibar was eventually open sourced as &lt;a href="https://github.com/eventbrite/tikibar"&gt;eventbrite/tikibar&lt;/a&gt; on GitHub.&lt;/em&gt;)&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="slide" id="django-birthday55.jpg"&gt;
  &lt;img loading="lazy" src="https://static.simonwillison.net/static/2025/django-birthday/django-birthday55.jpg" alt="“build cool shit”
(thanks, Rob)
" style="max-width: 100%" /&gt;
  &lt;div&gt;&lt;a style="float: right; text-decoration: none; border-bottom: none; padding-left: 1em;" href="https://simonwillison.net/2025/Jul/13/django-birthday/#django-birthday55.jpg"&gt;#&lt;/a&gt;
  &lt;p&gt;This has been a whistle-stop tour of the highlights of my career working with Django.&lt;/p&gt;
&lt;p&gt;And actually, in putting this presentation together, I realized that really it's that Rob Curley influence from all the way back in 2003. The reason I love Django is it makes it really easy to build cool shit and to ship it. And, you know, swearing aside, I think that's a reasonable moral to take away from this.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id="colophon"&gt;Colophon&lt;/h4&gt;
&lt;p&gt;I put this annotated version of my 10 year old talk together using a few different tools.&lt;/p&gt;
&lt;p&gt;I fetched the audio from YouTube using &lt;a href="https://github.com/yt-dlp/yt-dlp"&gt;yt-dlp&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;yt-dlp -x --audio-format mp3 \
  "https://youtube.com/watch?v=wqii_iX0RTs"
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I then ran &lt;a href="https://static.simonwillison.net/static/2025/django-birthday.mp3"&gt;the mp3&lt;/a&gt; through &lt;a href="https://goodsnooze.gumroad.com/l/macwhisper"&gt;MacWhisper&lt;/a&gt; to generate an initial transcript. I cleaned that up by &lt;a href="https://claude.ai/share/5fc8a371-7000-4373-afd6-91f1347680cc"&gt;pasting it into Claude Opus 4&lt;/a&gt; with this prompt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Take this audio transcript of a talk and clean it up very slightly - I want paragraph breaks and tiny edits like removing ums or "sort of" or things like that, but other than that the content should be exactly as presented.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I converted &lt;a href="https://static.simonwillison.net/static/2025/django-birthday.pdf"&gt;a PDF of the slides&lt;/a&gt; into a JPEG per page using this command (found with the &lt;a href="https://github.com/simonw/llm-cmd"&gt;llm-cmd&lt;/a&gt; plugin):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pdftoppm -jpeg -jpegopt quality=70 django-birthday.pdf django-birthday
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I used my &lt;a href="https://tools.simonwillison.net/annotated-presentations"&gt;annotated presentations tool&lt;/a&gt; (&lt;a href="https://simonwillison.net/2023/Aug/6/annotated-presentations/"&gt;described here&lt;/a&gt;) to combine the slides and transcript, making minor edits and adding links using Markdown in that interface.&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/devfort"&gt;devfort&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jacob-kaplan-moss"&gt;jacob-kaplan-moss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lawrence"&gt;lawrence&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lawrence-com"&gt;lawrence-com&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lawrence-journal-world"&gt;lawrence-journal-world&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&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/the-guardian"&gt;the-guardian&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/annotated-talks"&gt;annotated-talks&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="adrian-holovaty"/><category term="devfort"/><category term="django"/><category term="history"/><category term="jacob-kaplan-moss"/><category term="lawrence"/><category term="lawrence-com"/><category term="lawrence-journal-world"/><category term="python"/><category term="my-talks"/><category term="the-guardian"/><category term="annotated-talks"/></entry><entry><title>Breakwater Barbecue in the El Granada station for the Ocean Shore Railroad</title><link href="https://simonwillison.net/2025/May/4/breakwater/#atom-tag" rel="alternate"/><published>2025-05-04T17:09:08+00:00</published><updated>2025-05-04T17:09:08+00:00</updated><id>https://simonwillison.net/2025/May/4/breakwater/#atom-tag</id><summary type="html">
    &lt;p&gt;Our local BBQ spot here in El Granada - &lt;a href="https://www.breakwaterbbq.com/"&gt;Breakwater Barbecue&lt;/a&gt; - had a soft opening this weekend in their &lt;a href="https://maps.app.goo.gl/f9JSpUWaFH8Hevj3A"&gt;new location&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's the new building. They're still working on replacing the sign from the previous restaurant occupant:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Exterior photo of a restaurant with a faded sign reading &amp;quot;MONSTER CHEF Fine Japanese Restaurant&amp;quot; the building is cream-colored with red tile roofs and large windows. It has a little bit of a railway station vibe to it if you squint at it just the right way." src="https://static.simonwillison.net/static/2025/breakwater-today.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;It's actually our old railway station! From 1905 to 1920 the &lt;a href="https://en.wikipedia.org/wiki/Ocean_Shore_Railroad"&gt;Ocean Shore Railroad&lt;/a&gt; ran steam trains from San Francisco down through Half Moon Bay most of the way to Santa Cruz, though they never quite connected the two cities.&lt;/p&gt;
&lt;p&gt;The restaurant has some photos on the wall of the old railroad. Here's what that same building looked like &amp;gt;100 years ago.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Historical black and white photograph showing a train station with a steam train on the left and a Spanish-style station building with arched entrances on the right. It's clearly the same building, though the modern one has had a bunch of extra extensions added to it and doesn't look nearly as much like a train station." src="https://static.simonwillison.net/static/2025/breakwater-train.jpg" /&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/photos"&gt;photos&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/half-moon-bay"&gt;half-moon-bay&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="photos"/><category term="half-moon-bay"/></entry><entry><title>A computer can never be held accountable</title><link href="https://simonwillison.net/2025/Feb/3/a-computer-can-never-be-held-accountable/#atom-tag" rel="alternate"/><published>2025-02-03T13:17:44+00:00</published><updated>2025-02-03T13:17:44+00:00</updated><id>https://simonwillison.net/2025/Feb/3/a-computer-can-never-be-held-accountable/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/bumblebike/status/832394003492564993"&gt;A computer can never be held accountable&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This legendary page from an internal IBM training in 1979 could not be more appropriate for our new age of AI.&lt;/p&gt;
&lt;p&gt;&lt;img alt="A COMPUTER CAN NEVER BE HELD ACCOUNTABLE. THEREFORE A COMPUTER MUST NEVER MAKE A MANAGEMENT DECISION" src="https://static.simonwillison.net/static/2025/a-computer-can-never-be-held-accountable.jpg" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A computer can never be held accountable&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Therefore a computer must never make a management decision&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Back in June 2024 I &lt;a href="https://twitter.com/simonw/status/1798168995373498524"&gt;asked on Twitter&lt;/a&gt; if anyone had more information on the original source.&lt;/p&gt;
&lt;p&gt;Jonty Wareing &lt;a href="https://twitter.com/jonty/status/1798170111058264280"&gt;replied&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It was found by someone going through their father's work documents, and subsequently destroyed in a flood.&lt;/p&gt;
&lt;p&gt;I spent some time corresponding with the IBM archives but they can't locate it. Apparently it was common for branch offices to produce things that were not archived.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://twitter.com/jonty/status/1727344374370222264"&gt;the reply&lt;/a&gt; Jonty got back from IBM:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Dear Jonty Wareing, This is Max Campbell from the IBM Corporate Archives responding to your request. Unfortunately, I've searched the collection several times for this presentation and I am unable to find it. I will take another look today and see if I can find it, but since there is so little information to go on, l'm not sure I will be successful. Sincerely, Max Campbell, Reference Desk, IBM Corporate Archives, 2455 South Rd, Bldg 04-02 Room CSC12, Poughkeepsie, NY 12601" src="https://static.simonwillison.net/static/2025/jonty-reply.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;I believe the image was first shared online in &lt;a href="https://twitter.com/bumblebike/status/832394003492564993"&gt;this tweet&lt;/a&gt; by @bumblebike in February 2017. Here's where they confirm &lt;a href="https://twitter.com/bumblebike/status/1385690727330451457"&gt;it was from 1979 internal training&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://twitter.com/bumblebike/status/1468346709994582020"&gt;another tweet from @bumblebike&lt;/a&gt; from December 2021 about the flood:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unfortunately destroyed by flood in 2019 with most of my things.  Inquired at the retirees club zoom last week, but there’s almost no one the right age left. Not sure where else to ask.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-history"&gt;computer-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ethics"&gt;ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ibm"&gt;ibm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="computer-history"/><category term="ethics"/><category term="history"/><category term="ibm"/><category term="ai"/><category term="ai-agents"/><category term="ai-ethics"/></entry><entry><title>The leading AI models are now very good historians</title><link href="https://simonwillison.net/2025/Jan/26/ai-models-are-now-very-good-historians/#atom-tag" rel="alternate"/><published>2025-01-26T22:36:09+00:00</published><updated>2025-01-26T22:36:09+00:00</updated><id>https://simonwillison.net/2025/Jan/26/ai-models-are-now-very-good-historians/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://resobscura.substack.com/p/the-leading-ai-models-are-now-very"&gt;The leading AI models are now very good historians&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
UC Santa Cruz's Benjamin Breen (&lt;a href="https://simonwillison.net/tags/benjamin-breen/"&gt;previously&lt;/a&gt;) explores how the current crop of top tier LLMs - GPT-4o, o1, and Claude Sonnet 3.5 - are proving themselves competent at a variety of different tasks relevant to academic historians.&lt;/p&gt;
&lt;p&gt;The vision models are now capable of transcribing and translating scans of historical documents - in this case 16th century Italian cursive handwriting and medical recipes from 1770s Mexico.&lt;/p&gt;
&lt;p&gt;Even more interestingly, the o1 reasoning model was able to produce genuinely useful suggestions for historical interpretations against prompts &lt;a href="https://chatgpt.com/share/679175f3-2264-8004-8ce0-78cc7f23db36"&gt;like this one&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Here are some quotes from William James’ complete works, referencing Francis galton and Karl Pearson. What are some ways we can generate new historical knowledge or interpretations on the basis of this? I want a creative, exploratory, freewheeling analysis which explores the topic from a range of different angles and which performs metacognitive reflection on research paths forward based on this, especially from a history of science and history of technology perspectives. end your response with some further self-reflection and self-critique, including fact checking. then provide a summary and ideas for paths forward. What further reading should I do on this topic? And what else jumps out at you as interesting from the perspective of a professional historian?&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;How good? He followed-up by asking for "&lt;code&gt;the most creative, boundary-pushing, or innovative historical arguments or analyses you can formulate based on the sources I provided&lt;/code&gt;" and described the resulting output like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The supposedly “boundary-pushing” ideas it generated were all pretty much what a class of grad students would come up with — high level and well-informed, but predictable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As Benjamin points out, this is somewhat expected: LLMs "are exquisitely well-tuned machines for finding the median viewpoint on a given issue" - something that's already being illustrated by the &lt;em&gt;sameness&lt;/em&gt; of work from his undergraduates who are clearly getting assistance from ChatGPT.&lt;/p&gt;
&lt;p&gt;I'd be fascinated to hear more from academics outside of the computer science field who are exploring these new tools in a similar level of depth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Something that's worth emphasizing about this article: all of the use-cases Benjamin describes here involve feeding original source documents to the LLM as part of their input context. I've seen some criticism of this article that assumes he's asking LLMs to answer questions baked into their weights (as &lt;a href="https://nips.cc/virtual/2024/poster/97439"&gt;this NeurIPS poster&lt;/a&gt; demonstrates, even the best models don't have perfect recall of a wide range of historical facts). That's not what he's doing here.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=42798649"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vision-llms"&gt;vision-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/o1"&gt;o1&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-reasoning"&gt;llm-reasoning&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/benjamin-breen"&gt;benjamin-breen&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="vision-llms"/><category term="o1"/><category term="llm-reasoning"/><category term="benjamin-breen"/></entry><entry><title>I Live My Life a Quarter Century at a Time</title><link href="https://simonwillison.net/2025/Jan/4/i-live-my-life-a-quarter-century-at-a-time/#atom-tag" rel="alternate"/><published>2025-01-04T23:00:36+00:00</published><updated>2025-01-04T23:00:36+00:00</updated><id>https://simonwillison.net/2025/Jan/4/i-live-my-life-a-quarter-century-at-a-time/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://tla.systems/blog/2025/01/04/i-live-my-life-a-quarter-century-at-a-time/"&gt;I Live My Life a Quarter Century at a Time&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Delightful Steve Jobs era Apple story from James Thomson, who built the first working prototype of the macOS Dock.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/wraaxu/i_live_my_life_quarter_century_at_time"&gt;lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apple"&gt;apple&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-jobs"&gt;steve-jobs&lt;/a&gt;&lt;/p&gt;



</summary><category term="apple"/><category term="history"/><category term="steve-jobs"/></entry><entry><title>What happened to the world's largest tube TV?</title><link href="https://simonwillison.net/2024/Dec/22/worlds-largest-tube-tv/#atom-tag" rel="alternate"/><published>2024-12-22T21:41:45+00:00</published><updated>2024-12-22T21:41:45+00:00</updated><id>https://simonwillison.net/2024/Dec/22/worlds-largest-tube-tv/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=JfZxOuc9Qwk"&gt;What happened to the world&amp;#x27;s largest tube TV?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This YouTube video is an absolute delight.&lt;/p&gt;
&lt;p&gt;&lt;lite-youtube videoid="JfZxOuc9Qwk"
  title="What happened to the world's largest tube TV?"
  playlabel="Play: What happened to the world's largest tube TV?"
&gt; &lt;/lite-youtube&gt;&lt;/p&gt;

&lt;p&gt;Shank Mods describes the legendary &lt;a href="https://consolemods.org/wiki/CRT:PVM-4300"&gt;Sony PVM-4300&lt;/a&gt; - the largest CRT television ever made, released by Sony in 1989 and weighing  over 400lb. CRT enthusiasts had long debated its very existence, given the lack of known specimens outside of Sony's old marketing materials. Then Shank tracked a working one down... on the second floor of a 300 year old Soba noodle restaurant in Osaka, Japan.&lt;/p&gt;
&lt;p&gt;This story of how they raced to rescue the TV before the restaurant was demolished, given the immense difficulty of moving a 400lb television (and then shipping it to the USA), is a fantastic ride.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://bsky.app/profile/andy.baio.net/post/3ldvzb5ogfk2a"&gt;Andy Baio&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/youtube"&gt;youtube&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/japan"&gt;japan&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="youtube"/><category term="japan"/></entry><entry><title>1991-WWW-NeXT-Implementation on GitHub</title><link href="https://simonwillison.net/2024/Aug/1/www-next-implementation-on-github/#atom-tag" rel="alternate"/><published>2024-08-01T21:15:29+00:00</published><updated>2024-08-01T21:15:29+00:00</updated><id>https://simonwillison.net/2024/Aug/1/www-next-implementation-on-github/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/simonw/1991-WWW-NeXT-Implementation"&gt;1991-WWW-NeXT-Implementation on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I fell down a bit of a rabbit hole today trying to answer &lt;a href="https://simonwillison.net/2024/Aug/1/august-1st-world-wide-web-day/"&gt;that question about when World Wide Web Day was first celebrated&lt;/a&gt;. I found my way to &lt;a href="https://www.w3.org/History/1991-WWW-NeXT/Implementation/"&gt;www.w3.org/History/1991-WWW-NeXT/Implementation/&lt;/a&gt; - an Apache directory listing of the source code for Tim Berners-Lee's original WorldWideWeb application for NeXT!&lt;/p&gt;
&lt;p&gt;The code wasn't particularly easy to browse: clicking a &lt;code&gt;.m&lt;/code&gt; file would trigger a download rather than showing the code in the browser, and there were no niceties like syntax highlighting.&lt;/p&gt;
&lt;p&gt;So I decided to mirror that code to a &lt;a href="https://github.com/simonw/1991-WWW-NeXT-Implementation"&gt;new repository on GitHub&lt;/a&gt;. I grabbed the code using &lt;code&gt;wget -r&lt;/code&gt; and was delighted to find that the last modified dates (from the early 1990s) were preserved ... which made me want to preserve them in the GitHub repo too.&lt;/p&gt;
&lt;p&gt;I used Claude to write a Python script to back-date those commits, and wrote up what I learned in this new TIL: &lt;a href="https://til.simonwillison.net/git/backdate-git-commits"&gt;Back-dating Git commits based on file modification dates&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;End result: I now have a repo with Tim's original code, plus commit dates that reflect when that code was last modified.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Three commits credited to Tim Berners-Lee, in 1995, 1994 and 1993" src="https://static.simonwillison.net/static/2024/tbl-commits.jpg" /&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/git"&gt;git&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tim-berners-lee"&gt;tim-berners-lee&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/w3c"&gt;w3c&lt;/a&gt;&lt;/p&gt;



</summary><category term="git"/><category term="github"/><category term="history"/><category term="tim-berners-lee"/><category term="w3c"/></entry><entry><title>Today's research challenge: why is August 1st "World Wide Web Day"?</title><link href="https://simonwillison.net/2024/Aug/1/august-1st-world-wide-web-day/#atom-tag" rel="alternate"/><published>2024-08-01T17:34:29+00:00</published><updated>2024-08-01T17:34:29+00:00</updated><id>https://simonwillison.net/2024/Aug/1/august-1st-world-wide-web-day/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://fedi.simonwillison.net/@simon/112887537705995720"&gt;Today&amp;#x27;s research challenge: why is August 1st &amp;quot;World Wide Web Day&amp;quot;?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Here's a fun mystery. A bunch of publications will tell you that today, August 1st, is "World Wide Web Day"... but where did that idea come from?&lt;/p&gt;
&lt;p&gt;It's not an official day marked by any national or international organization. It's not celebrated by CERN or the W3C.&lt;/p&gt;
&lt;p&gt;The date August 1st doesn't appear to hold any specific significance in the history of the web. The first website &lt;a href="https://www.npr.org/2021/08/06/1025554426/a-look-back-at-the-very-first-website-ever-launched-30-years-later"&gt;was launched on August 6th 1991&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I posed the following three questions this morning on Mastodon:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Who first decided that August 1st should be "World Wide Web Day"?&lt;/li&gt;
&lt;li&gt;Why did they pick that date?&lt;/li&gt;
&lt;li&gt;When was the first World Wide Web Day celebrated?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Finding answers to these questions has proven stubbornly difficult. Searches on Google have proven futile, and illustrate the growing impact of LLM-generated slop on the web: they turn up dozens of articles celebrating the day, many from news publications playing the "write about what people might search for" game and many others that have distinctive ChatGPT vibes to them.&lt;/p&gt;
&lt;p&gt;One early hint we've found is in the "Bylines 2010 Writer's Desk Calendar" by Snowflake Press, published in January 2009. Jessamyn West &lt;a href="https://glammr.us/@jessamyn/112887883859701567"&gt;spotted that&lt;/a&gt; on the &lt;a href="https://archive.org/details/isbn_9781933509068/mode/2up?q=%22World+Wide+Web+Day%22"&gt;book's page in the Internet Archive&lt;/a&gt;, but it merely lists "World Wide Web Day" at the bottom of the July calendar page (clearly a printing mistake, the heading is meant to align with August 1st on the next page) without any hint as to the origin:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of a section of the calendar showing July 30 (Friday) and 31st (Saturday) - at the very bottom of the Saturday block is the text World Wide Web Day" src="https://static.simonwillison.net/static/2024/www-day-calendar.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I found two earlier mentions from August 1st 2008 on Twitter, from &lt;a href="https://twitter.com/GabeMcCauley/status/874683727"&gt;@GabeMcCauley&lt;/a&gt; and from &lt;a href="https://twitter.com/iJess/status/874964457"&gt;@iJess&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Our earliest news media reference, spotted &lt;a href="https://mastodon.social/@hugovk/112888079773787541"&gt;by Hugo van Kemenade&lt;/a&gt;, is also from August 1st 2008: &lt;a href="https://www.thesunchronicle.com/opinion/unseen-eclipse-opens-summer-countdown/article_7ee3234d-f1e2-54c6-a688-a29bd542e3e3.html"&gt;this opinion piece in the Attleboro Massachusetts Sun Chronicle&lt;/a&gt;, which has no byline so presumably was written by the paper's editorial board:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Today is World Wide Web Day, but who cares? We'd rather nap than surf. How about you? Better relax while you can: August presages the start of school, a new season of public meetings, worries about fuel costs, the rundown to the presidential election and local races.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So the mystery remains! Who decided that August 1st should be "World Wide Web Day", why that date and how did it spread so widely without leaving a clear origin story?&lt;/p&gt;
&lt;p&gt;If your research skills are up to the challenge, &lt;a href="https://fedi.simonwillison.net/@simon/112887537705995720"&gt;join the challenge&lt;/a&gt;!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&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/w3c"&gt;w3c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web"&gt;web&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mastodon"&gt;mastodon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slop"&gt;slop&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="internet-archive"/><category term="w3c"/><category term="web"/><category term="mastodon"/><category term="slop"/></entry><entry><title>Ralph Sheldon’s Portrait of Henry VIII Reidentified</title><link href="https://simonwillison.net/2024/Jul/30/ralph-sheldons-portrait-of-henry-viii/#atom-tag" rel="alternate"/><published>2024-07-30T23:12:53+00:00</published><updated>2024-07-30T23:12:53+00:00</updated><id>https://simonwillison.net/2024/Jul/30/ralph-sheldons-portrait-of-henry-viii/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://adamfineart.wordpress.com/2024/07/04/ralph-sheldons-portrait-of-henry-viii-reidentified/#ce0dfb5f-afa3-4e5c-aa0b-2358c1854c13"&gt;Ralph Sheldon’s Portrait of Henry VIII Reidentified&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Here's a delightful two part story on art historian Adam Busiakiewicz's blog. Adam was browsing Twitter when he spotted &lt;a href="https://twitter.com/Warkslieutenant/status/1808884139585610231"&gt;this tweet&lt;/a&gt; by Tim Cox, Lord Lieutenant of Warwickshire, celebrating a reception.&lt;/p&gt;
&lt;p&gt;He noticed a curve-framed painting mounted on a wall in the top left of the photo:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Truncated photograph, showing a slightly blurry curved frame painting up on the wall among other paintings" src="https://static.simonwillison.net/static/2024/art-history.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Adam had previously researched a similar painting while working at Sotheby's:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Seeing this round topped portrait immediately reminded me of a famous set of likenesses commissioned by the local politician and tapestry maker &lt;a href="https://artuk.org/discover/artworks/ralph-sheldon-15371613-55576"&gt;Ralph Sheldon (c. 1537--1613)&lt;/a&gt; for his home Weston House, Warwickshire, during the 1590s. Consisting of twenty-two portraits, mostly images of Kings, Queens and significant contemporary international figures, only a handful are known today.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Adam contacted Warwickshire County Council and was invited to Shire Hall. In &lt;a href="https://adamfineart.wordpress.com/2024/07/22/further-observations-of-ralph-sheldons-portrait-of-henry-viii/"&gt;his follow-up post&lt;/a&gt; he describes his first-hand observations from the visit.&lt;/p&gt;
&lt;p&gt;It turns out the painting really was one of those 22 portraits made for tapestry maker Ralph Sheldon in the 1590s, long thought lost. The discovery has now made international news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BBC News: &lt;a href="https://www.bbc.com/news/articles/ckdgp7r5y11o"&gt;Missing Henry VIII portrait found after random X post&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Smithsonian Magazine: &lt;a href="https://www.smithsonianmag.com/smart-news/art-historian-discovers-long-lost-portrait-of-henry-viii-in-background-of-social-media-post-180984803/"&gt;Art Historian Discovers Long-Lost Portrait of Henry VIII in Background of Social Media Post&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=41105229"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/art"&gt;art&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/twitter"&gt;twitter&lt;/a&gt;&lt;/p&gt;



</summary><category term="art"/><category term="history"/><category term="twitter"/></entry><entry><title>Strachey love letter algorithm</title><link href="https://simonwillison.net/2024/Mar/23/strachey-love-letter-algorithm/#atom-tag" rel="alternate"/><published>2024-03-23T21:55:59+00:00</published><updated>2024-03-23T21:55:59+00:00</updated><id>https://simonwillison.net/2024/Mar/23/strachey-love-letter-algorithm/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Strachey_love_letter_algorithm"&gt;Strachey love letter algorithm&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
This is a beautiful piece of computer history. In 1952, Christopher Strachey—a contemporary of Alan Turing—wrote a love letter generation program for a Manchester Mark 1 computer. It produced output like this:&lt;/p&gt;

&lt;p&gt;"Darling Sweetheart,&lt;/p&gt;

&lt;p&gt;You are my avid fellow feeling. My affection curiously clings to your passionate wish. My liking yearns for your heart. You are my wistful sympathy: my tender liking.&lt;/p&gt;

&lt;p&gt;Yours beautifully&lt;/p&gt;

&lt;p&gt;M. U. C."&lt;/p&gt;

&lt;p&gt;The algorithm simply combined a small set of predefined sentence structures, filled in with random adjectives.&lt;/p&gt;

&lt;p&gt;Wikipedia notes that "Strachey wrote about his interest in how “a rather simple trick” can produce an illusion that the computer is thinking, and that “these tricks can lead to quite unexpected and interesting results”.&lt;/p&gt;

&lt;p&gt;LLMs, 1952 edition!

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/grady_booch/status/1771625974322356260"&gt;Grady Booch&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-history"&gt;computer-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="computer-history"/><category term="history"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>The original WWW proposal is a Word for Macintosh 4.0 file from 1990, can we open it?</title><link href="https://simonwillison.net/2024/Feb/13/the-original-www-proposal/#atom-tag" rel="alternate"/><published>2024-02-13T16:06:51+00:00</published><updated>2024-02-13T16:06:51+00:00</updated><id>https://simonwillison.net/2024/Feb/13/the-original-www-proposal/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.jgc.org/2024/02/the-original-www-proposal-is-word-for.html"&gt;The original WWW proposal is a Word for Macintosh 4.0 file from 1990, can we open it?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
In which John Graham-Cumming attempts to open the original WWW proposal by Tim Berners-Lee, a 68,608 bytes Microsoft Word for Macintosh 4.0 file.&lt;/p&gt;

&lt;p&gt;Microsoft Word and Apple Pages fail. OpenOffice gets the text but not the formatting. LibreOffice gets the diagrams too, but the best results come from the Infinite Mac WebAssembly emulator.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=39357709"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/john-graham-cumming"&gt;john-graham-cumming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mac"&gt;mac&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tim-berners-lee"&gt;tim-berners-lee&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webassembly"&gt;webassembly&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="john-graham-cumming"/><category term="mac"/><category term="tim-berners-lee"/><category term="webassembly"/></entry><entry><title>Quoting Sebastian Majstorovic</title><link href="https://simonwillison.net/2023/Dec/8/sebastian-majstorovic/#atom-tag" rel="alternate"/><published>2023-12-08T01:34:12+00:00</published><updated>2023-12-08T01:34:12+00:00</updated><id>https://simonwillison.net/2023/Dec/8/sebastian-majstorovic/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/storytracer/status/1732927668725645522"&gt;&lt;p&gt;We like to assume that automation technology will maintain or increase wage levels for a few skilled supervisors. But in the long-term skilled automation supervisors also tend to earn less.&lt;/p&gt;
&lt;p&gt;Here's an example: In 1801 the Jacquard loom was invented, which automated silkweaving with punchcards. Around 1800, a manual weaver could earn 30 shillings/week. By the 1830s the same weaver would only earn around 5s/week. A Jacquard operator earned 15s/week, but he was also 12x more productive.&lt;/p&gt;
&lt;p&gt;The Jacquard operator upskilled and became an automation supervisor, but their wage still dropped. For manual weavers the wages dropped even more. If we believe assistive AI will deliver unseen productivity gains, we can assume that wage erosion will also be unprecedented.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/storytracer/status/1732927668725645522"&gt;Sebastian Majstorovic&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ethics"&gt;ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="ethics"/><category term="history"/><category term="ai"/><category term="ai-ethics"/></entry><entry><title>DAK and the Golden Age of Gadget Catalogs</title><link href="https://simonwillison.net/2023/Nov/13/dak-and-the-golden-age-of-gadget-catalogs/#atom-tag" rel="alternate"/><published>2023-11-13T04:57:45+00:00</published><updated>2023-11-13T04:57:45+00:00</updated><id>https://simonwillison.net/2023/Nov/13/dak-and-the-golden-age-of-gadget-catalogs/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://cabel.com/2023/11/06/dak-and-the-golden-age-of-gadget-catalogs/"&gt;DAK and the Golden Age of Gadget Catalogs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A must-read from Cabel Sasser, describing his ten year project to collect and digitize copies of the DAK gadget catalog, from 1972 to 1994.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://daringfireball.net/linked/2023/11/11/cabel-sasser-dak"&gt;Daring Fireball&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/cabel-sasser"&gt;cabel-sasser&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gadgets"&gt;gadgets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;&lt;/p&gt;



</summary><category term="cabel-sasser"/><category term="gadgets"/><category term="history"/></entry><entry><title>Translating Latin demonology manuals with GPT-4 and Claude</title><link href="https://simonwillison.net/2023/Oct/4/translating-latin-demonology-manuals/#atom-tag" rel="alternate"/><published>2023-10-04T01:49:20+00:00</published><updated>2023-10-04T01:49:20+00:00</updated><id>https://simonwillison.net/2023/Oct/4/translating-latin-demonology-manuals/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://resobscura.substack.com/p/translating-latin-demonology-manuals"&gt;Translating Latin demonology manuals with GPT-4 and Claude&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
UC Santa Cruz history professor Benjamin Breen puts LLMs to work on historical texts. They do an impressive job of translating flaky OCRd text from 1599 Latin and 1707 Portuguese.&lt;/p&gt;

&lt;p&gt;“It’s not about getting the AI to replace you. Instead, it’s asking the AI to act as a kind of polymathic research assistant to supply you with leads.”

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=37752272"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-4"&gt;gpt-4&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/benjamin-breen"&gt;benjamin-breen&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="ai"/><category term="generative-ai"/><category term="gpt-4"/><category term="llms"/><category term="claude"/><category term="benjamin-breen"/></entry><entry><title>Leicester balloon riot</title><link href="https://simonwillison.net/2023/Mar/26/leicester-balloon-riot/#atom-tag" rel="alternate"/><published>2023-03-26T18:29:01+00:00</published><updated>2023-03-26T18:29:01+00:00</updated><id>https://simonwillison.net/2023/Mar/26/leicester-balloon-riot/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Leicester_balloon_riot"&gt;Leicester balloon riot&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
In 1864 a test flight of a new hydrogen balloon in Leicester’s Victoria Park attracted 50,000 spectators, and ended in a riot that destroyed the balloon. “Early in the afternoon there was a disturbance when a gentleman, claiming to be an aeronaut, announced that Britannia was not Coxwell’s newest and biggest balloon but an older model. This enraged the crowd who, shortly after 2pm, broke down the barrier and demanded that Coxwell take off immediately.”

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/flglmn/status/1391074552675962888"&gt;@flglmn&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/></entry><entry><title>[history] When I tried this in 1996</title><link href="https://simonwillison.net/2022/Feb/21/histor/#atom-tag" rel="alternate"/><published>2022-02-21T22:43:55+00:00</published><updated>2022-02-21T22:43:55+00:00</updated><id>https://simonwillison.net/2022/Feb/21/histor/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/colesbury/nogil/issues/8"&gt;[history] When I tried this in 1996&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“I removed the GIL back in 1996 from Python 1.4...” is the start of a fascinating (supportive) comment by Greg Stein on the promising nogil Python fork that Sam Gross has been putting together. Greg provides some historical context that I’d never heard before, relating to an embedded Python for Microsoft IIS.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/simonw/status/1495891968291139584"&gt;@simonw&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/gil"&gt;gil&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="gil"/><category term="history"/><category term="python"/></entry><entry><title>The Tyranny of Spreadsheets</title><link href="https://simonwillison.net/2021/Jul/23/the-tyranny-of-spreadsheets/#atom-tag" rel="alternate"/><published>2021-07-23T03:57:50+00:00</published><updated>2021-07-23T03:57:50+00:00</updated><id>https://simonwillison.net/2021/Jul/23/the-tyranny-of-spreadsheets/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://timharford.com/2021/07/the-tyranny-of-spreadsheets/"&gt;The Tyranny of Spreadsheets&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
In discussing the notorious Excel incident last year when the UK lost track of 16,000 Covid cases due to a .xls row limit, Tim Harford presents a history of the spreadsheet, dating all the way back to Francesco di Marco Datini and double-entry bookkeeping in 1396. A delightful piece of writing.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=27923998"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/spreadsheets"&gt;spreadsheets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/covid19"&gt;covid19&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="spreadsheets"/><category term="covid19"/></entry><entry><title>The Digital Antiquarian: Sam and Max Hit the Road</title><link href="https://simonwillison.net/2021/Jul/17/sam-and-max/#atom-tag" rel="alternate"/><published>2021-07-17T03:12:22+00:00</published><updated>2021-07-17T03:12:22+00:00</updated><id>https://simonwillison.net/2021/Jul/17/sam-and-max/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.filfre.net/2019/06/sam-and-max-hit-the-road/"&gt;The Digital Antiquarian: Sam and Max Hit the Road&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Delightful history and retrospective review of 1993’s Sam and Max Hit the Road. I didn’t know Sam and Max happened because the independent comic’s creator worked for LucasArts and the duo had embedded themselves in LucasArts culture through their use in the internal educational materials prepared for SCUMM University.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/game-design"&gt;game-design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/games"&gt;games&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;&lt;/p&gt;



</summary><category term="game-design"/><category term="games"/><category term="history"/></entry><entry><title>Elaborate Halloween Costume Tips from a 19th-Century Guide to Fancy Dress</title><link href="https://simonwillison.net/2017/Oct/26/gilded-age/#atom-tag" rel="alternate"/><published>2017-10-26T14:01:40+00:00</published><updated>2017-10-26T14:01:40+00:00</updated><id>https://simonwillison.net/2017/Oct/26/gilded-age/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://hyperallergic.com/406549/halloween-costume-tips/"&gt;Elaborate Halloween Costume Tips from a 19th-Century Guide to Fancy Dress&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The gilded age had some ridiculous parties. Here are highlights of the most popular costume guide of the era, now available on the Internet Archive.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.metafilter.com/170211/But-what-are-we-to-wear"&gt;But, what are we to wear? | MetaFilter&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-archive"&gt;internet-archive&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="internet-archive"/></entry><entry><title>Desk Depot</title><link href="https://simonwillison.net/2011/Jan/13/desk/#atom-tag" rel="alternate"/><published>2011-01-13T03:50:00+00:00</published><updated>2011-01-13T03:50:00+00:00</updated><id>https://simonwillison.net/2011/Jan/13/desk/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.deskdepot.net/"&gt;Desk Depot&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
We picked up some chairs from here the other day—it’s a fascinating place, essentially an entire history of Silicon Valley told through second-hand furniture.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/furniture"&gt;furniture&lt;/a&gt;&lt;/p&gt;



</summary><category term="history"/><category term="recovered"/><category term="furniture"/></entry><entry><title>What is the history of Django?</title><link href="https://simonwillison.net/2010/Aug/24/quora/#atom-tag" rel="alternate"/><published>2010-08-24T17:31:00+00:00</published><updated>2010-08-24T17:31:00+00:00</updated><id>https://simonwillison.net/2010/Aug/24/quora/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.quora.com/What-is-the-history-of-Python-Django"&gt;What is the history of Django?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I’ve been playing with Quora—it’s a really neat twist on the question-and-answer format, which makes great use of friends, followers and topics and has some very neat live update stuff going on (using Comet on top of Tornado). I just posted quite a long answer to a question about the history of Django.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/comet"&gt;comet&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tornado"&gt;tornado&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/qna"&gt;qna&lt;/a&gt;&lt;/p&gt;



</summary><category term="comet"/><category term="django"/><category term="history"/><category term="tornado"/><category term="quora"/><category term="recovered"/><category term="qna"/></entry><entry><title>Plugging the CSS History Leak</title><link href="https://simonwillison.net/2010/Mar/31/history/#atom-tag" rel="alternate"/><published>2010-03-31T20:01:17+00:00</published><updated>2010-03-31T20:01:17+00:00</updated><id>https://simonwillison.net/2010/Mar/31/history/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history-leak/"&gt;Plugging the CSS History Leak&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Firefox is fixing the nefarious CSS visited link colour history leak flaw, which currently affects all browsers and allows a malicious site to determine if you have visited a specific site by checking getComputedStyle against a link to that page. It’s an obtrusive but necessary fix—visited link styles will be restricted to colour and border styles (no background images and hence no more checkbox effects since the image request could leak information) and those colours will not be reported via getComputedStyle. I hope other browser vendors follow suit.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://news.ycombinator.com/item?id=1231841"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mozilla"&gt;mozilla&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="firefox"/><category term="history"/><category term="mozilla"/><category term="security"/></entry><entry><title>Vintage Ad Browser</title><link href="https://simonwillison.net/2010/Jan/6/vintage/#atom-tag" rel="alternate"/><published>2010-01-06T09:04:33+00:00</published><updated>2010-01-06T09:04:33+00:00</updated><id>https://simonwillison.net/2010/Jan/6/vintage/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.vintageadbrowser.com/"&gt;Vintage Ad Browser&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Fantastic. 100,000+ vintage advertisements scanned and organised by date and topic, going all the way back to the 1840s and covering every decade in between. An absolute gold mine.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ads"&gt;ads&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/advertising"&gt;advertising&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/archive"&gt;archive&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/design"&gt;design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;&lt;/p&gt;



</summary><category term="ads"/><category term="advertising"/><category term="archive"/><category term="design"/><category term="history"/></entry><entry><title>Notes from the No Lone Zone</title><link href="https://simonwillison.net/2009/Dec/16/titans/#atom-tag" rel="alternate"/><published>2009-12-16T10:02:38+00:00</published><updated>2009-12-16T10:02:38+00:00</updated><id>https://simonwillison.net/2009/Dec/16/titans/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.crypto.com/blog/titans/"&gt;Notes from the No Lone Zone&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A computer scientist with a background in cryptography visits a Titan II ICBM launch complex.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/coldwar"&gt;coldwar&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cryptography"&gt;cryptography&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/icbm"&gt;icbm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;&lt;/p&gt;



</summary><category term="coldwar"/><category term="cryptography"/><category term="history"/><category term="icbm"/><category term="security"/></entry><entry><title>"I made the first animated under construction icon"</title><link href="https://simonwillison.net/2009/Oct/15/twoleftfeet/#atom-tag" rel="alternate"/><published>2009-10-15T14:11:53+00:00</published><updated>2009-10-15T14:11:53+00:00</updated><id>https://simonwillison.net/2009/Oct/15/twoleftfeet/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.metafilter.com/85695/Please-Be-Patient-This-Page-is-Under-Construction#2774563"&gt;&amp;quot;I made the first animated under construction icon&amp;quot;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
twoleftfeet on MetaFilter describes how he created the first ever Under Construction animation in 1995, after discovering his server-push animations could be replaced by the exciting new animated GIF.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/animation"&gt;animation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gifs"&gt;gifs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-history"&gt;internet-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/metafilter"&gt;metafilter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/underconstruction"&gt;underconstruction&lt;/a&gt;&lt;/p&gt;



</summary><category term="animation"/><category term="gifs"/><category term="history"/><category term="internet-history"/><category term="metafilter"/><category term="underconstruction"/></entry><entry><title>Micro Men</title><link href="https://simonwillison.net/2009/Oct/9/micromen/#atom-tag" rel="alternate"/><published>2009-10-09T00:47:41+00:00</published><updated>2009-10-09T00:47:41+00:00</updated><id>https://simonwillison.net/2009/Oct/9/micromen/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.bbc.co.uk/programmes/b00n5b92"&gt;Micro Men&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“Affectionately comic drama about the British home computer boom of the early 1980s.”—aired last night, and on BBC iPlayer for the next week. I thought it was absolutely charming, as well as being a thought provoking history of the rise and fall of the British computer industry in the early 80s.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bbc"&gt;bbc&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/computer-history"&gt;computer-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/computing"&gt;computing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/iplayer"&gt;iplayer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/micromen"&gt;micromen&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tv"&gt;tv&lt;/a&gt;&lt;/p&gt;



</summary><category term="bbc"/><category term="computer-history"/><category term="computing"/><category term="history"/><category term="iplayer"/><category term="micromen"/><category term="tv"/></entry><entry><title>History of Django's popularity</title><link href="https://simonwillison.net/2009/Oct/4/history/#atom-tag" rel="alternate"/><published>2009-10-04T10:29:15+00:00</published><updated>2009-10-04T10:29:15+00:00</updated><id>https://simonwillison.net/2009/Oct/4/history/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://stackoverflow.com/questions/1515324/history-of-djangos-popularity/1515370?#1515370"&gt;History of Django&amp;#x27;s popularity&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
“What sequence of events made Django the most popular Python web framework?”—insightful answers from Alex Martelli and James Bennett.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/alex-martelli"&gt;alex-martelli&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/django"&gt;django&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/james-bennett"&gt;james-bennett&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="alex-martelli"/><category term="django"/><category term="history"/><category term="james-bennett"/><category term="python"/></entry><entry><title>Slouching towards Bethlehem</title><link href="https://simonwillison.net/2009/Jul/15/slouching/#atom-tag" rel="alternate"/><published>2009-07-15T10:19:25+00:00</published><updated>2009-07-15T10:19:25+00:00</updated><id>https://simonwillison.net/2009/Jul/15/slouching/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.photographyserved.com/Gallery/Slouching-towards-Bethlehem-___/56780"&gt;Slouching towards Bethlehem&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Photos of the various installations that contributed to the construction of the first atom bomb.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/atombomb"&gt;atombomb&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/nuclear"&gt;nuclear&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/photos"&gt;photos&lt;/a&gt;&lt;/p&gt;



</summary><category term="atombomb"/><category term="history"/><category term="nuclear"/><category term="photos"/></entry><entry><title>Making the HTML5 time element safe for historians</title><link href="https://simonwillison.net/2009/Apr/6/quirksblog/#atom-tag" rel="alternate"/><published>2009-04-06T14:01:37+00:00</published><updated>2009-04-06T14:01:37+00:00</updated><id>https://simonwillison.net/2009/Apr/6/quirksblog/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.quirksmode.org/blog/archives/2009/04/making_time_saf.html"&gt;Making the HTML5 time element safe for historians&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
PPK presents a detailed history of dates and calendars and points out that the HTML5 time element is ill prepared to faithfully represent the kind of dates historians are interested in.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/calendars"&gt;calendars&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/dates"&gt;dates&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datetime"&gt;datetime&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/historians"&gt;historians&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ppk"&gt;ppk&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/time"&gt;time&lt;/a&gt;&lt;/p&gt;



</summary><category term="calendars"/><category term="dates"/><category term="datetime"/><category term="historians"/><category term="history"/><category term="html5"/><category term="ppk"/><category term="standards"/><category term="time"/></entry><entry><title>Almost Perfect</title><link href="https://simonwillison.net/2009/Apr/5/almostperfect/#atom-tag" rel="alternate"/><published>2009-04-05T19:30:44+00:00</published><updated>2009-04-05T19:30:44+00:00</updated><id>https://simonwillison.net/2009/Apr/5/almostperfect/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.wordplace.com/ap/index.shtml"&gt;Almost Perfect&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
W. E. Peterson’s book on the rise and fall of WordPerfect Corporation, originally published in 1994 and now available for free online.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://www.codinghorror.com/blog/archives/001252.html"&gt;Jeff Atwood&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/books"&gt;books&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/history"&gt;history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wepeterson"&gt;wepeterson&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wordperfect"&gt;wordperfect&lt;/a&gt;&lt;/p&gt;



</summary><category term="books"/><category term="history"/><category term="wepeterson"/><category term="wordperfect"/></entry></feed>