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.