← Back to Show Notes

Transcript: Django Co-Creator - Simon Willison (Ep 21 Replay)

hi and welcome to another episode of django chat i'm carl gibson i'm joined as ever by

will vincent hi carlton and today we've got a very special guest simon willison with us hi simon

hi great to be talking to you you know thanks for coming on um simon you well you're you you're one

of the three hands that created django right that's that's your sort of opening in the django

community that's your so for us we're just like wow amazing you've you created can you tell us

something about let's start tell us about the birth of jane come on let's see sure yeah i can

do that so this is what nearly 15 years ago now um this was um back when i was i was at university

and in england and my university course had an option of a year in industry so you can go out

and spend a year working for someone and then go back and finish your degree and it means you can

get student visas for things and so forth and um i had a blog i was writing about web development

there weren't that many of us doing this back in what 2002 um adrian holovaty also had a blog and

he was writing about web development for this little newspaper in kansas and he posted a job

ad saying hey i need somebody to come and help me build newspapers and newspaper websites and it

coincided with this opportunity for a year in industry so i thought well that could be kind

of fun you know i could i could go to kansas and spend a year there and and work with this guy who

I'd been been following online for a while and so I got in touch and said hey would this work as

essentially a sort of paid internship he said yeah absolutely we can do that and um I headed

out there and I spent um I spent most of the year out there in in Lawrence in the tiny little town

of Lawrence Kansas working on what turned out to be Django though at the time we just thought it

was called the CMS right it was like the code we were writing for the newspaper websites and you

were i we interviewed um frank wiles i believe he was in charge of the the web part at the time and

then you guys took over is that right what was that transition um yes so frank frank had built

frank had built um much of the website in pearl um i mean it was 2002 what else would you do

um and so adrian adrian had been building things in php i'd been using php for a few years we'd

both hit the limits of what we felt was productive to do with PHP.

This was back when PHP had only just got classes and things.

Yeah, very early days.

Very, very early days.

And we'd both, Adrian and I were both really into Python.

We'd been following the work of Mark Pilgrim,

who'd been writing all sorts of great things about Python.

We wanted to use Python for websites.

But back then, the answer for how do you use Python on the web was quite flaky.

You know, there were a few very early web frameworks.

Zope was the sort of majority mindshare for Python on the web.

And it didn't really fit the way we thought about how we wanted to build websites.

You know, we were into things like really cleanly designed URLs and using CSS to separate your presentation from your content and all of these kinds of things.

And so we started poking around and figuring, OK, can we use Python to build these websites?

And actually, the real inspiration for Django was that we were looking at using ModPython,

the Apache module for building things.

And we realized that there weren't that many people using it.

We were a little bit nervous that ModPython might turn out to be the wrong direction.

So we thought, OK, well, what we can do is if we build a very thin abstraction layer

between our code and ModPython, then if it turns out ModPython was the wrong choice,

we can switch to something else and use it.

And so that's where Django came from.

We started out with the request object, the response object,

the way URL routing works, those kinds of things.

Because essentially it was an insurance policy

in case ModPython turned out not to work out.

ModPython worked out great for years and years and years,

but that was really why our CMS had its own thin abstraction layer.

Oh, wow.

Right, so Django's an indirection layer.

Exactly. It's an indirection layer on ModPython originally.

Did you know that you were going to be working on a CMS or you just knew you were going to work with Adrian before you headed off to Kansas?

I just knew I was going to be working on Adrian doing some really novel and interesting things involving news websites.

And I should say a little bit more about the Lawrence Journal World back then.

So this was a tiny little newspaper in a tiny little town, but it was very well resourced because the family who owned the newspaper had become independently wealthy off.

I believe they were laying fiber optic cable around the Midwest back in the

seventies when everyone thought that was a crazy thing to do.

And then they sold their network to Comcast or somebody.

So they had a lot of money.

They were very heavily invested in the local community and they were running

essentially this sort of media empire that spanned about a hundred miles.

So they had the local newspaper. They had, I think that,

did they have radio stations?

They had the local TV station because they'd run, you know, they were,

they were running a broadband provider for this little town.

So Lawrence, Kansas, back in 2002, had fantastic broadband across the whole town, which meant that their newspaper website could experiment with things like online video.

No other local newspaper was doing online video because who's going to be able to watch it?

And so that was really exciting.

And basically they were trying to, you know, because they had all of this investment, they had this really well-staffed newsroom.

They were really trying to push the edges on what you could do with web stuff as well.

And the chap running the online department was a guy called Rob Curley.

And he was very much of the opinion that you should go all out on everything that you were doing.

So a lot of the fun stuff we did with Django was sort of inspired by Rob coming up with ridiculous ideas for things to do with the website.

My favorite example has always been that it's kids little league season.

And so it's when kids play softball.

And, you know, in England, this is not a big deal.

in in in small town america this is absolutely the most important it's like church yeah oh my

goodness it was phenomenal so um so um rob said to us he wanted us to take these little kids softball

teams and treat them like they're the new york yankees right so we'd have a website with player

profiles and team alerts and schedules for the league and um he sent two of the interns out to

take 360 degree videos using what quick time vr back then of every pitch every every baseball

pitch in the whole city so that you'd have those on the website you could get like a virtual view

of what these kids softball oh man that's so cool were these like kind of were these like kind of

draggable views yeah exactly it was in 2002 2003 um and we did sms alerts so that parents could

sign up and get an sms about what their kids were up to and all of this kind of stuff and um i've

got a lot of this went into the newspaper you know because it turns out if you print a supplement in

the paper with a bunch of photos of kids playing softball everyone in town who knows any of those

children buys a copy yeah and all of the local businesses want to be seen sponsoring the kids

softball and stuff so it's a big commercial venture um but we so we we had and we basically

had two weeks to build this website so this was sort of the proving ground for Django this was

what it had all been working up for like we had the oh we we had well it wasn't the ORM back then

we had code generation for our sequel bits and it allowed us to get this thing out and that's sort

of that's when we realized that what we were building was really working you know that we

could take on these ridiculously ambitious projects with a very small team in a very small amount of

time yeah super super and yeah i mean thinking back at similar things i was doing with or trying

to do with php it was just crazy it was like you know the same sort of time scale type sort of same

sort of epoch it was it was difficult you were building a lot of things from scratch and there

weren't the frameworks to support you and right it was tricky i mean the other thing that's worth

mentioning is um you know how ruby on rails was famously extracted from base camp right they built

base camp and then they pulled ruby on rails out and made that open source jango was very was

slightly different in that we already had this website called lawrence.com which was the local

entertainment website for the town of lawrence kansas so it had all of the bands that were

playing it had articles it had restaurant reviews all of that kind of stuff and this is the mammoth

website that adrian had been building in php and it was an extraordinary thing absolutely amazing

website and the goal with django was always to grow the framework to the point where it could

run lawrence.com so rails was extracted from basecamp django was sort of evolved to fit

a site that we already existed but we wanted to replace and we did manage to replace that um i

think just before we launched lawrence.com on on what became django um just just shortly before i

ended my um my paid internship there okay and as part was was the site's framework a sort of early

part of the planning as well very much so yeah i i can't remember the exact details but i believe

yeah the sites frame was in there right from the very start because we knew we were going to have

one cms that was supporting multiple different websites on the front right okay so yeah there's

there's a lot of stuff in django where knowing its history of of how it came out of this this

tiny little newspaper group that was that was punching well above its weight sort of helps

helps helps explain some of those those different features fantastic wow so then you

productive work placement, I would say, in the history of work placements. But then you went

back and you had, what, another year? I had another two years at university. And I think

it was about six months after I left the newspaper, they managed to get the guy to open source it.

And actually, one of, I think, the most impactful things I did at the newspaper is I helped to hire

Jacob Kaplan Moss as essentially my replacement. So we only overlapped for about a month at the

end of my time there. But Jacob and Adrian, once I'd left, absolutely pushed forward and got the

thing open sourced. And the open sourcing was, they had to make the argument to this very sort

of traditional newspaper business that they should release this code into the wild. And they went in

there with a bunch of arguments. I believe one of the biggest arguments was look at what happened

with Ruby on Rails, right? Ruby on Rails and Django were developed privately at about the same

time. Ruby on Rails was open sourced, um, about the time, just after I'd finished at the newspaper

and it took off like a, like a rocket. Um, and so they went to the newspaper management and said,

look at this thing that has happened with this. We've got something that could also be really

successful. It would make it easier to hire people. We'd have other people doing development,

but, um, impressively that the argument that really convinced the newspaper was we have been

using open source software for years to build this business right like mod python is open source

we use linux servers all of that kind of stuff this is our opportunity to give back and that

was the argument that swayed them um as from what i've heard that was uh it was a no this

absolutely makes sense that we we it's enough to give you hope no yeah that's that's the answer

you hope that's yeah that's fantastic i mean i was just at pycon for the first time i i saw you

were at pycon and i had flying back for a number of people on the plane with me and a bunch of them

were they were kind of big uh i don't know industrial companies and they were saying they

don't really know python but they're saying yeah we're all switching to python because it's the

only way to hire people because they're switching over from java solely because they can't hire

anyone under 40 to work in java so they're kind of like dragging and screaming a little bit

in so it's interesting that the recruiting thing wasn't the one that hit it was the more altruistic

like and again i mean this was back in 2004 nobody else was using python to build websites basically

so um but um which i guess maybe that but but um they actually the newspaper span off a separate

company for several years that was commercializing a cms built on top of django and so for quite a

while this was doing very well amongst lots of other newspapers um because they were uh and at

that point you know by this commercial cms you can hire developers because it's built on top of

django and so it's open source and so there's a there's a marketplace for that so a lot of those

commercial factors did pay off really well but it was the um it was from what i've heard again this

was after i'd left the newspaper it was the altruistic argument that was the the convincer

for getting it open sourced in the first place that's super that's lovely so what was it like

going from that real world experience of building something doing all these creative things and you

have another two years of i don't know data structures i mean what kind of what was that

like stepping back into a formal academic setting after having this such a prolific work experience

it was pretty good i mean one of the things i learned working on django is um you know people

who have computer science degrees often say you know i don't use that stuff very often

the django template system comes from me having done compilers 101 at university i had not yet

done compilers 102 so so it was very much a sort of loose sort of lexer and interpreter kind of

thing that was going on but um you know i'm i i think and and it was interesting as well having

been sort of being able to step back i actually wrote a project in ruby on rails um when the

moment it came out because it's like this is the thing i had at the newspaper right this is

brilliant somebody's open sourced a productive framework wallet that i can get on with because

i you know i i didn't know if the um if if what became django would would be open sourced after

that. So I did dabble around with Ruby on Rails. And it was also just interesting seeing that

explosion of interest in Django and all of the contributions and the creativity that came out of

that. So I don't feel, I didn't feel, yeah, I've never really thought about that transition back

to academia. Again, it was so long ago and I was so green in my career. You know, I'd essentially

had i had a bit of a programming job before university which was working in the first dot

com boom in like 1999 to 2000 i worked for a um an online gaming company down in london building uh

building their file downloads website um that was super fun but then everything completely

collapsed the company that i believe they lost like 30 million pounds or something so it was

uh, disappeared in a puff of smoke. Yeah. Oh, absolutely. It was very exciting. Um, but yeah,

so I, I was quite happy to be safe in academia for a couple of years waiting for the, um, waiting

for the.com, um, explosion to, to boil over again. Yeah. And so this, um, you mentioned your site

where you were writing, is this the same, uh, simonwillison.net that you have today? Yeah,

basically it's the same content. It's been through a couple of different web addresses, but, but yeah,

that's my blog but not ui changes um a couple a couple um i love the layout of your site i love

it people should take a look at i love it thank you yeah i am i did a big upgrade to it a couple

of years ago i moved it from being 800 pixels wide by default to 1024 pixels wide because it

was looking a little bit narrow on modern screens um but yeah basically that blog's been going since

2002 um and that led to yeah connecting with adrian and one even um we had uh tom dyson of

Torchbox was on. And he said he was reading your blog back in the day and didn't realize you were

a teenager. Because you later worked with him, I think, right? In a capacity?

That's right. Yeah. I mean, no. So I started the blog when I was 21.

21. Yeah. Yeah. I worked. I contracted with Torchbox for about six months at one point.

And that's actually, I think that's where I met Andrew Godwin. He was at Torchbox at the time.

Yeah. Andrew was working on South for a project for Torchbox, Tom said.

No, well, yeah. I mean, when I was at Torchbox, we were working on Torchbox's internal migrations

mechanism, which was the inspiration. He said it was related in some way. Yeah.

Yeah. I think South definitely like Andrew was at Torchbox for a lot longer after I left. Um,

Andrew and I back at, for the first ever DjangoCon, Andrew and I were working on

rival migration systems for Django. I had this thing called the demigrations and he had,

I think he was calling it South back then. Um,

And we managed to set it up so that the first DjangoCon, we had a panel about database migrations.

So it was myself, Andrew, and I think Russell.

I think Russell, Keith McGee was working on something as well.

It was me, Andrew, and Russell were on this panel back at the first ever DjangoCon talking about our various approaches to migrations.

Okay.

Yeah, yeah.

I saw a talk Russell gave where he was saying that, yeah, just that.

And then what became South came in.

He's like, oh, yeah, you can take it.

Yeah, I kind of gave up on demigrations after I saw how good South was getting.

Okay, so good. It's like celebrity deathmatch here.

Okay, so there's so much we want to talk to you about. I mean, what are some of the highlights?

I mean, we definitely want to talk about Lanyard, Eventbrite. You just gave some fantastic talks

on SQLite, and then you have this journalism fellowship coming up. So where do you want to

start with all of that? What are you most top of mind? I'm all about SQLite at the moment.

yeah good good you gave a talk at pycon which we'll link to carlton was especially carlton's

very much team sqlite but you've been using that in a lot of capacities around um data set right

so maybe you talk about data set as well so basically um this is an idea i had about a year

and a half ago where it stems from the time i spent at the guardian newspaper so after the

lawrence general world i went back to university after university i bounced around doing sort of

contracting and freelancing for a bunch of different places. But then I ended up at the

Guardian newspaper doing data journalism projects. So data journalism, I realized recently, not

everyone knows what data journalism is. And it's actually a little bit difficult for me to define

it. But essentially, it's when as a programmer, you get to work with journalists and build tools

and do analysis that helps them find the stories in amongst the data. And the sort of most obvious

example is anytime you see an infographic in a newspaper like a graph or a chart or a map

somebody had to gather the data that and somebody had to often write the code to help pull those

things together good example might be the panama papers leak which without decent interpretation

and decent visualization on top of all that stuff you wouldn't know that you know so and so's

exactly dad is you know hoarding money in panama yeah it's um i think it's the most exciting job

you can have as a programmer because if you if you like novelty and deadlines and building things

quickly and having an impact you get all of those things you know um you get to work directly with

journalists breaking helping to break news stories and so i worked at the guardian for a couple of

years and um one of the things that happened there is i was working with this chap called simon

rogers who was he was the nerdy journalist who gathered the data for the infographics the first

time i met him and so the other journalist didn't really understand him they're like yeah he's he's

in the newsroom but he's always got excel open and he's he gets really excited about about about

like getting data from places and um i had this so when i first met him was like wow what do you

do with all of this data he goes oh it's all on my desktop and he pointed desktop onto his desk

which it turned out had hundreds of beautifully crafted excel spreadsheets about every fact about

the world you could possibly imagine and i'm like okay we need to intro we need to introduce you to

the to the web team up on the up on the floor above and so we started brainstorming okay how

can we release some of this data what's the best way for us to publish this in the end we went with

the simplest thing that could possibly work which is a blog because the guardian was very good at

running blogs and so we called it the data blog and every time we had data behind a story we'd

put something up on the data blog about it and then the data itself we published mainly using

google spreadsheets because um if this was back in 2009 2010 it worked you know you can dump files

into google docs into a google spreadsheet you can post a link to it other people can then pull

the data out and start doing things with it and this worked really well we had a flicker community

of people building their own visualizations against the data there was um it was it was

pretty sort of uh revolutionary at the time to to sort of have this mentality of no you publish the

story but you also publish as much of the data as you can publish as well if i remember rightly

they used to expose or they still expose a json api around a um a google spreadsheet yeah um google

sheets have a ap there is there are api layers built in there that you can tap into most of the

time you click file export as and you can get the data out that way as well right csv or something

yeah but i was always a little bit frustrated about this because while it does have apis of

sorts. They're not the most convenient things to use. I don't know many engineers who are thrilled

at the chance to integrate with it, to pull data out of a Google spreadsheet. So I always felt

there should be a better way of doing this. I actually mucked around at the Guardian with

CouchDB. I thought maybe CouchDB could be a way to publish these in a more reusable format.

And so anyway, a couple of years ago, I was thinking about Docker containers and some of

these new hosting providers like um zeit now was one that were doing this at the time which can

host your docker container for you and you know these essentially the sort of serverless docker

model but the problem with all of these hosting providers is they don't let you do any writes

right you can just serve static files and you're expected to pay for a hosted database somewhere

else and i thought hang on a second if you're dealing with read-only data the fact that you

can't have writable data and you don't have a database doesn't matter anymore because you've

got sqlite so you can bundle a bunch of data into a sqlite file stick it literally bake it into your

docker container ship it somewhere and you've built a extremely fast extremely powerful dynamic

web application that just doesn't accept any rights at all but the data is part of the deployment

and i started playing with it around with this idea and it um quickly turned into this open

source project i've been running for a year and a half now called data set it's named after the

commodore 64 cassette player which as far as i can tell their copyright on that term expired

about 15 years ago so i believe the name is up for grabs i i hope that's true um oh you're here

for the window yeah um but data set is so it's a it's a couple of things it's a web application

that sits on top of a sqlite database and exposes the whole thing so you get a table view where you

can look at the tables and you can filter them and all of that sort of stuff but then more

importantly you can execute sql queries by typing them into a form and clicking a button and because

i've opened the database file in immutable mode or in read-only mode you can't harm the database

doing this you know like allowing arbitrary sql queries is that's the definition of a sql injection

attack so most most web applications will avoid that like the plague turns out with sqlite and

then um if you have a few safety precautions around it it's actually okay so sql becomes your api

language which is interesting because dataset also offers a json api so anything that you can see

you can get out as json i can export as csv and stuff as well and it means that you can take any

database you like and dump a json api on the top of it which accepts sql over a query string as the

query language and i've been i've been cracking jokes about graphql um people like that sounds

terrible yeah well everyone's excited about graphql this is just sql is graphql from the 1970s

And it turns out it works really well.

So that was the sort of initial idea was publish data in a way that it's super, super quick and cheap to get it published.

And other people can make any API-shaped query that they like out of it.

And the other part of the ecosystem I've been building is the ways of publishing that data.

So out of the box, Dataset has a command line tool for publishing.

You can say Dataset, space, publish, space, Heroku, space, mydatabase.db.

And you hit enter, and it creates an app on Heroku, and it uploads your database to it, and you're done.

It spits out a URL.

It's got two other providers.

There's Zyte now on their V1 platform, which they don't let people sign up for anymore, which is a bit of a shame.

And then Google Cloud Run I now have support with, which only got launched back in April.

And somebody sent me a pull request for Dataset, which implemented Google Cloud Run.

So the joys of open source.

didn't even have to um i didn't even have to do anything yeah is zeit uh version two gonna

support it or it's tricky so zeit version two no longer uses docker it's all about um lambda

functions and um that's tricky for dataset because dataset was sort of built around the idea that you

do things with docker i think i can get it running on zeit v2 now that python the other problem is

that aws lambda their version of python didn't use to package sqlite because they assume nobody

would want to use sqlite in a serverless environment um their python 3.7 does have

sqlite support so it is feasible but there's a whole bunch of things i need to unspool and get

working to have data set fit into those lambda environments and so i want to get it done i think

actually um the biggest project everyone right now is porting data set to asgi we pronounce it asgi

right as yeah yeah yeah i mean yeah pronouncing things is always difficult but it's whiskey so

it's aski it's aski right so um that's the so so once i get data set ported to aski there are

various mechanisms for getting aski running on zeit now version 2 that i want to um have a play

with yeah i've been uh hearing you talk about data set because i hadn't actually played with

it until in preparation for this interview. And when I teach SQL to beginners, you know,

using a data set to learn how to do basic SQL would be the perfect playground. It's not just

made up stuff. It's just, and it gets read only. And so I'm going to start using that because I've

seen that there's a ton of amazing open source data sets, but it's kind of built for playing

and exploring just SQL itself. That's one of those accidental use cases. You know, I was not

intentionally building a sql learning tool but actually no it totally works for that um i'm

really excited to to see that kind of thing thing thing um being explored more because yeah um a

sqlite's um variant of sql is a very it's almost entirely based on the sql standard so it is a very

good tool for learning sql and these days it's got like common table expressions and window functions

just made it into sqlite about six months ago so there's a whole bunch of more advanced sql stuff

that you can start playing with there.

Yeah, well, and actually,

and it's partly relevant

because I have a site, sqljs.org,

which is just a wrapper around.

There's an open source JavaScript implementation of SQL

that I use when I teach

and that more and more teachers are starting to use

because you don't actually have to use SQL to run SQL.

But yeah, I should look into

because there's ways to load in database files.

That would be really nifty

to not actually have to run SQLite itself.

SQL.js, that's the one that SQLite compiled to JavaScript, right?

Yes.

Yes, that thing's really interesting.

Yeah, so this site I have is just, I basically just did the UI on top of the original code.

But yeah, well, in the same way that, you know, what is it for, you know, there's for Python 2,

there's Python, Brython, I never say it right.

You know, there are these JavaScript implementations as well that are most of the way there.

and certainly for a learning perspective,

it just solves a lot of problems.

With WebAssembly, this stuff gets super interesting.

I saw there's a project which does

the entire Python data stack,

so Jupyter Notebooks and NumPy and everything,

all compiled down to WebAssembly

and running in a browser,

which is an astonishing achievement.

Yeah, I didn't realize it was that advanced.

Yeah, I've been following WebAssembly

pretty closely recently because I've started,

you know, originally it was like,

okay, well, I guess that's kind of interesting,

but i don't really see the practical applications for somebody like myself and now i'm seeing all

kinds of really interesting practical applications of it um my favorite example is something the

google chrome dev dev tools uh the the chrome developer evangelism team put out called squoosh

squoosh.app which um it's basically it's an image compression website so you drag a jpeg on and it

gives you a better like more compressed version of that jpeg and it does pngs and gifs and jpegs

But the real magic is the way it works is they took the best-in-class C libraries for JPEG compression and PNG, so OptiPNG and all of these different things, compiled them to WebAssembly, and they run them in your browser.

So now your browser has the best-in-class implementations of compression for, like, three or four different formats.

You literally drag an image onto this page.

It shows you a preview of before and after with a little slide that you can slide back and forth.

the interface is brilliant but the fact that it's running it's it's it's doing the best in

class compression algorithms for all of these formats by running them in web assemblies i

thought absolutely fascinating yeah yeah i mean it can't as an odd is not sorry just because it

has an option to run uh in offline so i presumably just loads it once and then it's there that when

i went to the site yeah it's a it's a brilliant piece of engineering like for me as well this

this idea that you as you say you compile best and best in class programs and deliver them over

the browser it's kind of like the um the great hope of the internet and of the web browser thing

where you did like delivering software over the internet to be run and the trouble with that has

been that web applications have been historically not very good or not as good as you know desktop

applications but if that changes and if web assembly can allow that to change then it's the

future the other two exciting angles i have on this are firstly there's a now a python library

that can run WebAssembly from Python.

So you can download these.

So somebody compiles something for a browser,

you can download it onto your computer,

you can import it into a Python process

and make calls to it over this interface,

which is really exciting.

So now I can now, I haven't done it yet,

but I could potentially run SQLite,

the WebAssembly version inside of Python

without having to compile extensions

and all of that kind of thing.

So I think that's really cool.

And then Fastly, the CDN,

have been looking at getting WebAssembly

running sandboxed in their on their cdn edges so you can run a program in anything that compiles

to web assembly compile it deploy it to what 50 points of presence around the world and now you've

got sandboxed incredibly fast like um stateless code running in on the cdn edge which again that's

that's revolutionary there are some very exciting things we can build with that yeah that's really

cool that's really cool and how does this tie into um you've got a journalism fellowship right

at stanford or something like what's what's the story that's coming up right the js yeah this is

the jsk fellowship which is stanford's um it's associated with stanford the stanford journalism

school and basically it's a um it's a fellowship program where they get in 19 people a year they

pay you to spend a year at stanford working on projects essentially to advance the cause of

journalism and um i applied for this essentially with the data set project right the idea because

the idea behind data set is help newspapers publish the data behind their stories but it's

also help provide like much more powerful local analysis and visualization tools that journalists

can use to analyze the data that's coming back from all of these different places and really

what it comes down to is if you look at newspapers like the la times the new york times the washington

post they do incredible database reporting because they can afford programmers right they they have

the funds to hire teams of experts who can work on these things. If you're a smaller local

newspaper, you're having enough trouble staying afloat as it is. You're not going to be hiring

programmers. So my pitch for the fellowship was, how can we build an open source ecosystem of tools

that help local newspapers deliver the same kind of reporting, take on a similar class of projects

to these much larger publications who can afford the programmers? And that doesn't just mean

data set, like data set is my first foray into this world, but, um, I plan

to spend the first couple of months of the fellowship talking to as many

journalists and as many local news organizations as possible figuring out okay what are the tools

that if we were to provide these tools that would give you a huge like allow you to punch above your

weight and give you a big boost in terms of covering some of these stories and but you talk

about data set um you say it's you say just but there's a whole load of little tools around it

right um that you've pulled out so um so we've got data set is the thing that publishes your

it publishes your database and it lets people explore your database um of course if you're

going to do that, it's SQLite files. You need to get a way of getting data into SQLite in the first

place. And so I've been experimenting with a bunch of different ways of doing that. The first tool I

built was called CSVs to SQLite. And it takes CSV files and it turns them into SQLite tables.

Because, you know, everyone publishes their data with CSV. CSV has its flaws as a format,

but it is universally understood. And there's a huge amount of data that's being published in

that way so csvs to sqlite can do a bunch of interesting things one of my favorite features

of it is if you pointed at a directory just say csvs to sqlite name of directory and then

filename.db it will recursively loop through the directory structure finding every csv file

and convert those into tables so you can run it against a nested folder of 400 csv files and

you'll get a database with 400 tables in it and and that works really well you can then immediately

serve via a web api exactly yeah so the big demo i've got is um 538 the the blog who do a lot of

data reporting about sports and journalism and all sorts of things they publish all of the data

behind their stories in a big github repository with like 400 csv files in it i've got a travis

ci job which once every 24 hours grabs the entire lot just pulls the full repo converts it all into

a sqlite database and publishes that with dataset so that's always my go-to demo for

what data set is is take a look at 538.datasets with an s on the end.com and you can start

exploring all sorts of things they've got um data my favorite data set they have is um that tv show

where that um chap paints um paints uh mountains and trees and lakes uh bob ross bob ross joy of

painting they've got every episode of his show with did he paint a cloud did he paint a mountain

Yeah, happy clouds, yeah.

Yeah, and so you can run a query that says,

give me back every episode where he painted at least one cloud

and at least one mountain and at least one hut.

And that's just, that's nice, you know.

And now that's available as a JSON API,

should you want to build the ultimate JavaScript exploration

of the Bob Ross series.

I've got an idea for an app.

I had a question about, so in terms of these tools for journalism

and the front end, like I've been watching Observable,

which speaking of talented people, New York times and stuff, are you, is that one that you're

thinking of or aware of that are, you know, sort of built in front ends that can be applied on top

of data sets? Absolutely obsessed with observable. So for anyone who hasn't played with observable

yet, it's like Jupyter notebooks, um, do Python observable does JavaScript. Um, with a couple of

differences, it's only available as a hosted platform. So you go to observable HQ and you

can start playing um but it's fully reactive like the one confusing thing about jupiter is it runs

the cells in the order that you executed them so it's easy to end up with a notebook where

everything's sort of jumbled together observable any cell that depends on another cell will

automatically re-execute when the first cell has changed and it means kind of like an excel

spreadsheet in that regard and it means you can build really interesting interactive tools where

you muck around with the slider at the top of the page and it's updating a map at the bottom of the

page those kinds of things so it's a it's by mike bostock is one of the three developers behind it

who invented d3 so it's very mike tom and i forget who the third is um jeremy who did coffee script

so it's coffee script tom that guy works on a lot of the matte box stuff i think he he worked on

matte box gel and things so yeah the team behind it were astonishingly um like like that well suited

to building this project so i've done a few bits bits with observable where i use data set as the

back-end API, pull them to an observable

network and do visualizations there.

That works really well. And I think there's

a lot of potential for

that kind of stuff. But then

the other thing I'm trying to do with Dataset is

it has a plugins mechanism.

And so the idea

is I want an ecosystem of plugins

that can do any kind of visualization

you manage. At the moment,

the two best visualization plugins

are, I mean, almost all the plugins

are by me at the moment. You know, when somebody

else writes a plugin, that's a huge

like win when that happens um but i've got a plugin called data set cluster map and what that

does is it looks at your data and if it finds a latitude and longitude column it draws a map and

it loads the pointers on and does that um you know the clustering thing where you'll get a five that

you can click to zoom in and see all five points that that kind of thing and um that's using a

leaflet javascript library for the for the market clustering but it works amazingly well it turns

out in 2019 a browser will happily display 200 000 points on a map using the right so so i've got

a 200 000 point data set of every tree in san francisco which the oh yeah i've seen you yeah

i've seen some of your stuff the city of san francisco released this csv file of all of the

trees in san francisco that are managed by the department of public works and so this plugin

will draw 200 000 trees on a map and then you can zoom in and see all of the individual trees and

their species and when they were planted and so forth. And then I've got another plugin called

Dataset Vega, which uses the Vega visualization library to essentially do bar charts and line

charts and scatter plots. And I'm trying to get it so that these things kick in automatically.

So the idea is they'll analyze your data and go, oh, it looks like this could be graphed against

this. Here's a quick preview of a graph. Click here to expand it. And that's, but that's,

it's really fun it's also a way for me to muck around with some of the the more advanced javascript

visualization things that are going on and again i'm hoping i can convince other people to start

building plugins for all of the different types of visualizations people might want to do oh i'm

sure you can because like you're picking you've got like lots of interest now i see you know it

comes up no i don't i see you tweeting about it but i see other people tweeting right as well

you've been putting on glitch recently which is yeah is it called glitch the um the trello company

that um right yeah fog creek um software so they're responsible for i mean stack overflow

was a partnership with with with people from fog creek um and then there was um then there was

trello which they sold to at last and their new focus is glitch which is this phenomenal learning

environment for programming um you know how the absolute worst thing about learning to program

is setting up your development environment and i've been doing this for 20 years and i still

have trouble setting up a development environment for anything that's even slightly different from

what i normally work on so glitch's thing is it's entirely browser-based um you literally click a

button on glitch.com and it gives you a environment with a running web server with a editor built into

your browser where you can edit the code it's got git running but you don't have to know about it

so it just constantly snapshots where you've got to but that would mean that you could clone it if

you wanted to and they've got cloning they call it remixing so i can go to any project on glitch

and I can click the remix button

and now I've got my own copy of that project

and I can start working around with it.

So as a learning environment,

as the community of people, it's phenomenal.

And the thing I got working with Dataset a few weeks ago

is I've got an example project on Glitch,

which you can remix.

It's called Dataset-CSVs.

You can remix it.

You drag a CSV file onto your browser

and it will convert that CSV file to SQLite

and serve it instantly through Dataset.

So it literally is a drag and drop to create a API for your data and this interface to explore your data.

And I'm so excited about this thing.

Like as a demo, I've been gleefully doing this demo where I get people to run the demo themselves and I don't even touch their laptop.

I'm like, go to this URL, download this file of Seattle public art, drag it onto your browser.

Look, you made a website.

You made a map of this thing.

Sounds like Code Demo Black Belt.

Oh, man, it's so much fun.

it's such a great demo um so hang on oh go on but sorry to interrupt you this must mean you've got

python working in glitch because when i looked at it originally it was javascript only well it turns

out glitch has had python support from day one but they never really documented it you know they

they made the reasonable decision to focus on one language for all of their material around it um

but it's actually running a docker container with an ubuntu um with ubuntu in it i think i'm pretty

sure it's it's definitely containers i think it's docker containers and so they out of the box give

you um they give you python 2 and python 3 it's running python 3.5 they don't have anything more

recent than just yet and they actually have php on there as well if you can you can there are

examples out there for how to run php on glitch and so you can install anything by running pip

3 install something dash dash user you have to use the dash dash user option or it doesn't work

and they have this configuration file that lets you say forget about the node.js thing i want you

to run this process and bind it to port 3000 and then route traffic to it and so actually getting

once you know this and it took quite a bit of digging around in their forums to where people

had reverse engineered it and figured it out you can run any python thing on there that you like

um which is really exciting so getting data set on there was way easier than i thought it was going

to be once i found the relevant forum posts but now those now you've found those relevant forum

posts that presumably you've created python starter um examples which can be remixed to

yeah and there's there's a flask starter out already i've got a couple of i've got a dataset

basic one and then i've got this magic dataset one that does the csv conversion and stuff and

yeah and it's just a case of clicking remix you don't even have to log in to glitch to play with

it you can remix any project as an anonymous user and they'll delete it five days later but it's

that's fine you know it's enough for you to click remix on something and start mucking around and

get a feel for how it works so yeah it's my go-to demo for dataset now um the dataset docs now

recommend that people use glitch as the first place to start playing with it yeah that's really

cool because it seems like a perfect environment for that but would you deploy an actual application

on glitch so the only downside of glitch at the moment is the apps go to sleep um because they're

running apps that they must have millions of apps running right now and so the first hit you have to

you sit through a loading screen while the app wakes up and they also limit you to 4 000 requests

an hour which is about one request a second um which is fine for just you but if you put it on

a high traffic website it would fall apart i'm pretty sure they're going to introduce a commercial

pay some money and now your app won't go to sleep this was my next question is because so how what's

their monetization and they haven't announced it yet my best guess is it's going to be they also

um they have a like underpants that well i know i think i like because they've done stackoverflow

and trello in the past i think they have a very good idea of yeah that's fair keep these things

sustainable um so they've got a a team's product which is currently free but presumably they'll

start charging for that and again i'm assuming that they'll start charging you for for permanently

keeping your projects online so yeah at the moment i wouldn't recommend it for more than

sort of small side projects and things where you're where you're where you're playing with it

but i'm very i'm very much looking forward to them having a enter your credit card details and

keep your thing running option because that's the point when i can tell journalists that they should

use it you know at the moment i can't tell a newspaper to host on glitch if their thing's

going to go offline if they get a spike of traffic but um yeah and like the deployment story there is

just so sweet like compared to anything else so you know we can talk about serverless but getting

something running on lambda is well non-trivial right you know provisioning of em is non-trivial

deploying docker containers is non-trivial yep if you've got if there's something like that would

be amazing yeah i i'm it's such a clever product the way that they've built it the way it works is

absolutely fascinating and they've done such a great job of having this community around it of

people who are teaching each other to program so yeah that's that's been so that was a that was i

think a um i feel like data set itself has had a bit of a tipping project within the last month

partly because i got it running on glitch so i had a much more compelling demo and also the talk i

gave at pycon um like the feedback i got after that talk was a bunch of people who i really

respect who've been aware of data set but you know it was simon's side project for a year and a half

and now it feels like it's okay this thing's sticking around you know this is not a this

this is this is something that we can trust to keep on developing and i've got the the fellowship

as well so that'll give me a solid 10 months of working on it but yeah it feels like i'm now

getting serious um attention from people who previously were aware of it and it was on their

radar but it wasn't something they were going to to really commit effort to exploring yeah so if we

can let's let's speak for a little bit about your your day job because there's interesting story

there because you are at Eventbrite, which is one of the largest Django sites in the world.

That's probably true, yeah.

Right, in terms of traffic. So I'm curious, and I know you had founded Lanyard, which was acquired.

I'd love for you to maybe speak briefly about that. And then what is it like working on a Django

site at scale? Because there's still sometimes a perception that Django doesn't scale

despite Eventbrite Instagram. So what does it look like actually working on a large Django site?

Sure. Okay. So I can give you the, I'll give you the very quick startup story. So I was at Guardian 2009, 2010. I married my wife, Natalie. She was, she married me more to the point, but we decided that we wanted to go off on honeymoon for as long as we possibly could. So, you know, quit our jobs, give up our apartment, just travel the world, take laptops with us and do the, and sort of work on freelancing projects and stuff to try and keep us going for as long as possible.

And so we did this and we managed six months of traveling, which is great.

You know, that's a pretty fantastic honeymoon.

We were traveling through, mostly through Europe and then Morocco and Egypt and places.

But the freelancing work was difficult because when you're traveling and trying to freelance

at the same time, you'll find that, you know, the client hasn't sent you the thing that

you needed and you've got like an hour now, but they haven't sent you a thing.

So, okay, we'll get to it tomorrow, that kind of thing.

And meanwhile, we were batting around ideas for side projects together.

We had this one idea that would be a website to make sure that we didn't miss out on the

great conferences and events that our friends were going to.

And then we got to Casablanca in Morocco, and we got food poisoning.

And we were really ill.

And it was during Ramadan.

And Casablanca is not on the main tourist trail.

So during Ramadan, everything's shut down.

You know, none of the restaurants were open and so forth.

So we said, OK, well, we'll rent ourselves an apartment for two weeks.

and we'll try and like cook ourselves better and look after ourselves. And I guess we'll work on

one of these side projects that we were thinking about. So we picked the conference website,

built the first version, and it was very, very scrappy. You know, we knocked it together in two

weeks. We put it live. And the key feature when it launched was you sign in with Twitter and it

shows you the events that the people you follow on Twitter are going to or speaking at. And that's

it that was all that it did um but it turns out that was a really compelling um that was a really

compelling um uh thing to offer partly because it's a bit of a cheat right um the thing about

twitter is people who speak at conferences really love using twitter and they've got lots of

followers so if you build a website where and when landed launched natalie and i were the only people

who'd added any data to it but it had over a hundred speaker profiles on it because there

were over 100 people who we knew who were speaking at conferences and so if you signed in a few

were following any of those 100 very prominent people we'd recommend an event to you and it was

like magic you know you you click the blue button and it goes oh um you're following jeffrey zeldman

he's speaking at an event apart you're like it's like it looked deep into my soul and figured out

everything that i need to know about the world um so because of that and because twitter is naturally

viral it started taking off way way faster than we'd ever expected it to so we're trying to travel

around morocco and like have fun on our honeymoon and this thing is is is breaking servers and we're

having just won't stop growing yeah exactly so we made it for about two months around morocco and

then egypt and then we were like you know what people keep on getting in touch with us and saying

hey i need to talk to your support department and we're like it's it's just us and our laptops this

is this is a lot bigger than we thought it was going to get so we ended up applying for the y

combinator startup accelerator from egypt we were in um we were in luxor was it yeah we were in

uh yeah we were in luxor on the nile um when we when we filed our application part of the yc

application is that you have to have a one minute long video and so we carefully positioned a

egyptian temple in the background of our video but didn't mention it we thought we'd play it cool

and actually i think that video is available if you want to link to it from the show notes um

So we got accepted into Y Combinator and sort of cut our honeymoon short, moved to Mountain View for a three-month Y Combinator program.

And then after that, we moved back to London and we did the whole startup thing.

We raised money, we hired people, we got an office, we spent a solid two and a half years in London growing the company and trying to get the business model working and all those kinds of things.

And then we got to the point where we either needed to raise a Series A or we needed to get acquired.

And so we started looking at what the acquisition options would look like.

Were there companies that would make a good fit for this?

And yeah, we'd already had conversations with Eventbrite in the past.

And it turned out it was the point of their growth where they needed to really bulk up their sort of like Django engineering team.

They had a fantastic team, but it was pretty small and they needed to really be accelerating the growth of the engineering team.

And we thought there were good alignments in the product as well with some of the things that Eventbrite were looking at doing.

And so, yeah, we negotiated an acquisition, moved the entire team to California.

So that was six team members plus family is 11 people total, none of whom have gone back to England.

So it did work out well for the employees, which is good.

People were happy with the Californian lifestyle.

And yeah, and I've been working at Eventbrite ever since.

Wow.

Well, Carlton can agree with leaving England for sunny weather, right?

Yeah, for any number of reasons at the moment.

So what does it look like day to day?

I mean, because Eventbrite, you're adding new features, but you're not spending all

your time on features.

I imagine a lot of it is around scaling.

So I'll be honest.

once you're at the scale of eventbrite i don't think the web the web framework really matters

that much right you can scale php you can scale rails you can still scale django it all fundamentally

ends up as the same sort of shared nothing architecture where you've got a bunch of

different application servers they're talking to some replicated databases if you need to handle

more web traffic you fire up more application servers running a copy of your stack um and you

put caching layers in and you optimize your queries and you don't make queries in and so the techniques

are pretty universal across different stacks um django at eventbrite these days we mainly use it

for the so we eventbrite's never used the django templating language they made a decision before

i joined the company to use mako um i think because it compiled down to python i thought

there'd be a performance increase i'm not a huge fan of mako um my problem with it is that it's so

easy to accidentally embed business logic in Python inside of your Mako templates. It's very

sort of PHP-like at that point. Although these days, most of Eventbrite's new features are React

components that are rendered client and server side. So today, most Eventbrite features will be

a JSON API and then a React component, which is rendered server side for that sort of initial hit

and then takes over client side after that. And are you using REST framework or do you have

something custom to power the apis both so django rest framework is the api layer at the front but

internally we've been migrating eventbrite to a microservices model and the microservices within

eventbrite are our own um we have a protocol we call pysoa it's a sort of um service oriented

architecture in python using redis as a message bus so you communicate and you basically um build

message pack messages, stick them in a Redis queue, a service at the other end reads off the queue,

does the work, sends you the message back again. And we've also got an older SOA mechanism from a

few years ago. And the classic problem with a site like at the scale of Eventbrite is anytime you

transition technology, finishing is really hard. You can end up with 95% of our stuff is using the

new thing, but there's still this one old bit that's on the old thing, which is terrible. And

we're very much trying to develop an engineering culture where we don't let that happen it means

you never get to retire the old thing exactly now you've got two problems right absolutely um so we

did we retired api v1 last year we're on api v3 now um api v1 retired several years after we said

it was going to retire but we did retire it and this was a huge like this was a milestone this

says, hey, look, it is possible for us to turn off these things. And the Eventbrite engineering

team is so much larger now than it was when we joined the company. We've got engineering spread

across five cities on three continents, which is very exciting. So we've been having to figure out

how to work as a international first distributed engineering team. We've got engineering in San

Francisco and Nashville in the US. Mendoza in Argentina is one of our largest engineering

offices now um we've got vancouver and then we also have engineering in spain um so we've got

offices in vienne and madrid um and yeah that's that's a really interesting challenge figuring

out how to productively work with an engineering team spread across that many areas and time zones

that sort of western hemisphere that america's thing at least you're on relatively similar time

zones but as soon as you throw in spain you're like wow that's like 10 hours out yes that's

entirely true and also given like spanish working hours there's basically no overlap between the san

francisco office and the and the spanish office but what we do have is we've got mendoza in

argentina is closer to spain in terms of time zones so they do have some overlap and they also

have like they all they speak spanish so yeah they've got a similar culture working culture

yeah so mendoza has almost become the center of gravity for how engineering works because they

tie the two hemispheres together which is a really interesting development can i you mentioned you

using redis can i ask you using the stream the new streams um we're not yet um we're we're on

the roadmap sort of because it looks really exciting but i haven't had the chance to dive

into it and yeah i don't think so i think we've we've explored it a little bit um the the stuff

we're doing is built on top of blocking uh sorry blocking um list operations you know yeah okay um

and that's working great at the moment um the thing i'm personally excited about the redis

stream stuff because i love kafka except for the bit where you have to set it up which is a nightmare

and so like at eventbrite we're running kafka because we've got an entire ops team who can

support kafka and for my side projects there's no way i can get kafka running and if you look at

heroku kafka it starts at like 50 a month so it's not easy to pace but redis streams gives you the

same primitives but it's redis which i can run anywhere and is already available on all of my

projects so yeah i'm really looking forward to exploring that for some of these smaller projects

and then as you look ahead i mean because i know your your colleague andrew godwin is doing a lot

of the async stuff in django do you see any of that impacting the architecture of eventbrite

assuming it happens or is it separate i think it's very possible like um we have so eventbrite

runs a sort of API gateway at the front that like API requests come in, we turn them into our

internal service calls, pass them out through different services. They come back, we send them

back out the front. Right now that API framework is, it's based on uWSGI. So it's lots and lots

of uWSGI workers that handle traffic. And we know that we can, and it's easy enough to scale,

you know, you fire up more uWSGI instance, more boxes running uWSGI instances. I think for API

framework stuff that's where um like python 3 async really shines because most of it's just

it's io right you get a request you send it off to a service you wait for like a half a second

for that to return and then you feed it back out again blocking a whole worker for that feels

really wasteful to me so i wouldn't be surprised if the first application of python 3 async at

eventbrite ended up being something that's one of these these gateways these sort of proxies that

sits at the front and it's well it strikes me that underneath the ascii design there's kind of a

message bus waiting to happen like oh yeah the way that you can nest the applications and they're

all kind of everything's asgi all the way down it's like andrew designed our internal sewer

mechanism so he's been he built out um eventbrite's internal sewer mechanism that works on redis

while he was working on both um like channels and ascii so the the design of the two systems

definitely informed each other you know i think there's a there's a whole bunch of ideas from

ASCII and Daphne that we're now running inside Eventbrite and vice versa so yeah it's um you know

in in 2019 the way you build software is lots and lots of little services and API requests and so on

and async is such a natural fit for that style of development yeah yeah I think we're almost near

the end of time here are there any last projects or things you want to mention that we haven't

already covered you do so many things it's really inspiring hearing you talk and you're so excited

about them too i mean you sound like the like anti-burnout engineer yeah um i'm really excited

about ascii in general um i released my first piece of ascii middleware um a couple of weeks ago

basically to sort of test the waters of what ascii looks like and that's this it's ascii hyphen cores

so it's a middleware for adding cores see it um like cross origin resource sharing headers to to

an ascii project but what i'm really doing with that my my real ambition with ascii is i'm getting

a version of Dataset working. The next version of Dataset will be on top of ASCII. At the moment,

it's Sanic, which is a custom web framework. And then I want the plugin system in Dataset to allow

you to add plugins, which are basically ASCII middlewares. So like Dataset authentication is

going to be an ASCII middleware and Dataset cores and all of these different features that I want

to build. And that's made me realize that because ASCII is Turtles all the way down,

the interaction between ascii and plugin systems is really interesting like you can

i'm hoping that we'll get lots and lots of ascii middleware out there and then you can use

dataset uses pluggy which is the plugin um library that the uh the pi test built um but you can use

that to basically make composable web applications by throwing together a bunch of weird little

plugins it's kind of like the django reusable apps idea but at a slightly different level in the

stack right yeah that i'm finding really interesting it kind of struck me that um data

set was kind of like the the django admin 20 years later you know the way it introspects well did you

ever see data browse in django i that was before my time ah so django used to ship with a contra

module called data browse which was exactly data set like this was adrian hulavati built this um

and so yeah given any database it gives you basically what data set gives you today and

data browse um we eventually um it was decided to pull it out of django and so now it's available

as a third party like a module somewhere but yeah it's very it's they're very similar to each other

on that respect but i think the biggest innovation from data set is this arbitrary sql thing it's

using using sql as an api language is i'm almost gleeful about it so i've been building this

project at work which is a search engine for our internal documentation and because we've got

internal docs spread across like 10 different systems and the way it works is it's a crawler

that every half hour pulls everything from these internals these internal systems sticks in a two

gigabyte sqlite file with the sqlite full text search stuff that i'm turned on and then it sticks

that in dataset and the user interface for this search engine is literally 500 lines of html cs

and javascript in one file that runs sql queries constructed in javascript against dataset and i've

been literally i've been gleefully cackling as i show people look look it's sending it's generating

sql queries in the javascript and it's sending to the back end and this sounds like an awful idea

but it's fine well that actually that makes that makes sense that i i saw uh december last year you

wrote a really great in-depth uh post on search with right data set and i guess related to that

work yeah this internal search engine is that exact pattern but applied on a much sort of larger

scale um my absolute favorite feature of it is that i added facet i love faceted search engines

um i added facet by emoji to our internal doc yeah i saw i saw that i saw that and um the way

it works is it literally constructs a sql query in javascript with emoji embedded in the sql query

and then it sends it to the back end so if you fire up the um the firefox dev tools you can

intercept sql queries with emoji in going over an http get request and i think this is the best joke

right this is this is very much akin to my sense of humor i'm hoping i can open source this

internal search engine because it's it's just really funny but i've been doing so i've partly

been doing this because it's a way of trolling other developers going look i'm constructing

sql in javascript right here i'm just imagining a pen tester with the traffic analyzer watching it

go past right exactly the crazy thing is i've been working on the system for a few months now

and it turns out embedding sql in your client-side javascript is fine like none of the obvious flaws

in the system have actually caused any loss in productivity or anything it's super easy to

maintain because it's only 500 lines of code for the whole thing yeah right it's understandable

um but yeah so uh i'll probably be writing a bit more about the the sql and javascript pattern

at some point because yeah it's uh it started as a joke but it's a joke that's actually turning

out to be pretty useful yeah well i mean and famously what flask came out on april fool's

day right so it's not the first time uh maybe a good thing has come out as a joke yeah absolutely

well thank you so much for coming on and spending this time with us we wanted to have you on for

such a long time and it's so great to hear about the early days of django i'm sure that's some

stories that people hadn't heard of and then all the work you're doing now and combining django

and all these things, and you still get to use Django.

I mean, there's a fair number of prominent Django people

we've interviewed, and they don't get to use Django

day-to-day in their job.

Oh, yeah, yeah, yeah.

We're using Django day-to-day at Eventbrite.

With Dataset, it doesn't use anything from Django yet,

but ASCII, I think, is the way I'm going to link it back

to the wider Django ecosystem.

ASCII is such a perfect fit for what I want to do,

and it also means I'll be able to do things like

let you have a Django app with a Dataset-powered view

that's just embedded into the URL configuration,

which is going to be really interesting.

Yeah.

I mean, there's absolutely no reason

why we can't just embed ASCII apps

inside the Django ASCII app.

Right, and vice versa.

And that, I think, is going to be really cool.

Great.

Well, again, thank you so much

for spending the time, for being on.

Yeah, this has been really fun.

Thanks a lot for having me.

Super, Simon.

Thank you very much.