Django Chat

MongoDB - Mark Smith

Episode Summary

Mark is a developer advocate at MongoDB, longtime Django developer, and co-chair of DjangoCon Europe 2023. We discuss how Mongo can work well alongside Django, type hinting, Rust, and more.

Episode Notes

Support the Show

This podcast does not have any ads or sponsors. To support the show, please consider purchasing a book, signing up for Button, or reading the Django News newsletter.

Episode Transcription

Carlton Gibson 0:05
Hi, welcome to another episode of Django chats podcast on the Django web framework. I'm Carlton Gibson joined by Will Vincent.

Will Vincent 0:11
Hi, Carlton. Hello.

Carlton Gibson 0:13
Hello, well, sorry, I would say hello, but I thought you're gonna jump in without that. But this week, we're joined by Mark, Mark Mark Smith, who is otherwise known as Judy 2k, for reasons we won't go into, but Mark, what thank you for coming on. Lovely to see.

Mark Smith 0:27
Thanks for having me. It's great to be here.

Carlton Gibson 0:29
It's good. Right? So who are you? This is what we always ask. And, you know, what's your still?

Mark Smith 0:35
My I'm an imposter. Like, why am I here?

Will Vincent 0:41
When you work for MongoDB, let's start with that. Well,

Mark Smith 0:47
I have been a Django developer. So you know, I spoke at the last Django con Europe, I'm a co chair of this year's Django con Europe, which is being hosted in Edinburgh in May, May 29, to June the second. So that's kind of primarily my link to Django. And one of the things that I'm, I'm kind of hosting conversation around is kind of how you should use MongoDB, with Django, and what we can do at MongoDB to kind of make Django work better with MongoDB. For the people that want to do that.

Carlton Gibson 1:19
So let's dive into that. Because that's quite an interesting question. Because like, I would imagine, so I'm gonna sit down today, and I'm not going to ask you, I'm just gonna go right Django view layer, Django view layer. And then I'm gonna go MongoDB, whatever interface you give me, you know that, you know, where you do the queries in there, but I'm not gonna have much integration with say, for instance, the ORM, or

Mark Smith 1:41
any of those, you're gonna miss a lot. I think if you do that, I think that's that's the big tension here is that Django is has a heavy model, as well, you know, there's a lot going on in the modeler. And that is highly intertwined with the relational model, i There's no real real getting away from it. The Django model is a sequel generator, at the end of the day, and MongoDB, we have a sequel interface, but it's really designed for analytics is not really designed for sort of production use in in transactional application. So they just don't really quite fit. And there have been a few attempts to build libraries to bridge that gap. There's Django which sort of still exists, but I don't think has had any releases in a while. And there was something before which I forget the name of

Carlton Gibson 2:27
it was Django no rel or something like Oh, really called was I

Mark Smith 2:31
remember that one. Maybe Maybe

Carlton Gibson 2:33
I don't remember it. There was one which was built originally around Google App Engine and their data store. But I think there were backends for various at the nonrelational.

Mark Smith 2:42
And that doesn't really work. Because they don't You're right, yeah. You know, they don't have the same structure or the same query language or anything like that. So it's a nice idea. But you're going to be building kind of several query generators that don't work, you know, they there's, there's only going to be a subset of features there that actually overlap. So there's only going to be a certain amount of interface you can really expose. So

Will Vincent 3:04
So let me ask you a naive question. Right. So if I ran into a Django con, and my boss tells me, we're using MongoDB, and Django, I don't know why I'm just a Django developer. I googled Django and MongoDB. And I get this Django integration with MongoDB page, which is well laid out. But there's three options. It's not clear to me, which like to connect, like, what would you say? What, what if I ran to you in the hallway and said, Help me my boss is crazy. I just need a prototype something to get, you know, him or her off my back. What do I do?

Mark Smith 3:34
Well, firstly, it's not crazy. It's not actually a crazy idea. Sorry, sorry. functionality? No, no, no. But it has so much functionality. Django, you definitely want to use Django, right. I'm a big, big fan of Django. But the the big model of kind of building a Django app at high level is to use apps, which are sort of big vertical slices, including everything from views to sort of business logic to three to the model there. So those aren't really going to work with MongoDB. Very well, there are these adapters and I think the page on mongodb.com talks about it does talk about Django, Django, I think is the second one. It also talks about Mongo engine, which is what we call an ODM, which is actually a bit like, what the Django model there. It's, it's it's an adapter between Python classes, and and in this case, a Mongo, Mongo DB database. But it's not Django compatible. So you can't just use all the models that you're getting with the various apps that you're sort of building your your application with. They're not going to store the savings in MongoDB. But like, you can use those apps on top of a relational database like Postgres, and you can then use MongoDB. Alongside that. So you're not it's not going to be tightly integrated with Django, but you get everything that you like with Django, like authentication, Django rest framework, perhaps, like you know, you did all those components, but you also get this database that sits alongside that has its flex will document model that allows you to embed hierarchical data all in the same place. And then allows you to kind of drill down into that data to query it and bring it back.

Carlton Gibson 5:08
So if I was going to do this, I would think just like APR or I, I'd go for Mongo, Mongo, ODM, and use that, that would be my go to option. Because I think surely that's the that's the most supported. That's the one with all the features. That's the

Mark Smith 5:25
Yeah, you know, I wouldn't even use that I would go straight for Python driver.

Will Vincent 5:30
Fairness, that's number one. And it's it says like, you know, standard Python standard.

Mark Smith 5:35
Oh, does it Oh, yeah. Yeah, pi, pi, Mongo, I've got the page up now. So yeah, that's, that's exactly what I would use, it's going to hand you back. Each document is just going to be a dict, containing Python core types and lists and whatever. So it's just like a, it's relatively low level. And then I might use something to map those data structures into classes sort of separately to MongoDB. The problem is, right, if you use an ODM, they don't expose all of the functional functionality of MongoDB, we've got this really powerful query language that allows you to do things like aggregations, it allows you to be the document structure is quite flexible. So you can store documents that have no relationship to each other, all in the same place. So they don't have the same structure. So trying to map those into classes on the client site, just like that's going to force you to store the same schema in a collection. And it's not going to give you that flexibility of having sort of different versions of a schema in a collection or slightly different structure. Like if you've got a meta data section, for example, each of those documents is going to have a different structure. And yeah, so I think sort of working starting with an ODM sort of puts the rug gives you the wrong mindset gives you the idea that every every document in a collection is going to have the same schema. And it gives you the idea that only the sort of functions that the ODM exposes into the query language are the way those are the only way you can look up documents. And neither of those things are true.

Will Vincent 7:03
So So would I then, because Cloud Atlas is the hosted hosting provider that Mongo has what I then I guess I would put the Mongo piece on there. And I could have my Django in Postgres on, you know, my post Heroku option. If I'm just, you know, spinning something up? I would, yeah. How would I do that?

Mark Smith 7:24
So you're still going to have to host Django yourself? We don't We and it's MongoDB. Atlas. I think Cloud Atlas is a book it is. It's up by date. Yeah. Yeah. Why? Not? Really,

Will Vincent 7:39
it is Atlas in the cloud. But yes, I misspoke.

Mark Smith 7:44
So yeah, that that is our that's how we make money from MongoDB. Right. MongoDB is open source, you can install it on your own machines if you want to. But it's distributed by default, you need three nodes, if you want full redundancy, it's a pain to host yourself. And most people actually want to build their application. So instead, they asked us to host MongoDB for them, we can save some money, by it on the you know, in development environments and things like that you can you can use what's shared tier, so that's a bit like a VM, right? So we host the three nodes. But we're hosting databases for various different companies on the same set of three notes. So it just save some costs. When you're starting out. As you scale up, you're going to want a dedicated instance. So you have a you understand your performance a bit better and, and things like that. So yeah, so it sort of scales with you. So that's where you keep your data. And then yeah, I would. The other thing is it's hosting on the cloud provider of your choice. So we can spin up a database on three easy two instances on AWS or you can host it on Google or Microsoft.

Will Vincent 8:48
That's like crunchy when Oscar released press two. Sorry. Don't we have Craig? You don't have her? Kirsten is on and yeah, you host is that what you're gonna say? Carlton? I'm sorry?

Carlton Gibson 8:59
No, I was gonna ask a really sort of technical question. If so, if I'm on a baby, I've seen I've got a virtual private cloud, which is firewalled from the internet, can I deploy it inside my V PC? Or is it kind of

Mark Smith 9:11
No, I've actually forgotten I've got a brain freeze, because of terminology for kind of opening up like to a VPC, like sort of connecting T V PCs together. And we allow you can do that, but certainly host it inside.

Carlton Gibson 9:26
Okay, no, but that's equivalent, right? Because it's firewalled, as you can only communicate two instances from that particular voted pivot PPC.

Mark Smith 9:33
Yeah. Yeah, absolutely. Well,

Will Vincent 9:35
Atlas reminds me and you might appreciate this that back, I think, 2015 16 I spent a good two years on a startup we used Meteor, which was a framework with MongoDB that was gonna make all its money. While it was VC founded, VC funded open source for framework so that so they were like, well just make money on hosting. And then Atlas came in, among others. things and it was kind of like, Yeah, I think it's still around. But it was this magical experience back then. Because one line, like I taught a university course using it one line, and it just installed Mongo and everything locally, you could deploy it. It had authentication. It was like, incredibly magical. I remember getting some getting some shirts from this from their headquarters in San Francisco, but they were, you know, yeah, hosting it is the way to make money. I mean, someone should do some Django hosting rafter product, Carlton. But it was November 8, back seven years, I saw Atlas came out. I was just like, okay, they're totally toast. Now, unfortunately. Because it was really cool tech.

Mark Smith 10:38
It's yeah, I mean, that's it's always a shame when something like that sort of goes away.

Will Vincent 10:42
I think it's still around. But it was like, no one's using it. But it was it was the hotness for, you know, for a while,

Mark Smith 10:47
yeah. There was M labs as well, that offered MongoDB hosting. So maybe slightly less innovative. But you know, they did production level sort of cloud hosting of MongoDB. And we acquired them, which was incredibly useful to ask us because we were scaling up Atlas really fast at that point. And so it was it was really helpful to have some people with the experience of kind of hosting those clusters and building those interfaces on top of them.

Carlton Gibson 11:10
So while we're on Mongo, I just like I saw you give a talk, or I didn't see give a talk. I saw the talk go pass on social media. And I was like, oh, I should really says, but it's about like, everything you know about Mongo or something is wrong. Because yes, I you know, I used Mongo a long time ago, and we host it ourselves. And we had nothing but trouble. And we lost data at times and things like that. And so that was obviously a long time ago. And then you gave this this talk about modern Mongo. So just in case, there's folks like me, I'll call just like me who are listening to the

Mark Smith 11:41
talk. For me, it was, I wrote that talk, because those were the misconceptions that I had, originally, before I kind of got up to date with MongoDB. So yeah, you mentioned losing data. That's one of the things that I talked about. In that talk. It was it made me item two or something. And it people did lose data, but they lost data because they the default for your you've got your three nodes that you're storing data in, and you're actually talking to one of them. And then it streams the data to the secondary notes. So that's how you keep your redundancy and allow zero time upgrades and things like that. But the right consistency was one by default. So it you would get a response. So yeah, we've got your data, as soon as that first machine had it, and it wouldn't have journaled it or anything like that. So it really only had it in memory. And then if your machine if that node crashed, then your cluster would stay up because you'd switch over to one of the secondaries. But that data would never have been streamed to any of the secondaries. So we've recommended for absolutely yours that you use it right consistency of majority, which means that however many nodes, you've now got over half of them, and now up to date with your new data before you get an acknowledgment that that data has been stored. And that also journals the data as well, that just like magically switches on the journal flag at the same time. So yeah, that's not the case anymore. So the CAD now I think we changed it two years ago, the default is now majority. So by default, MongoDB is now slightly slower than it was before because it's now making sure that that data is stored across multiple nodes before it goes, Yeah, their data's your data safe now. So yeah, it's, you know, I have this slightly trite phrase, which is MongoDB is too easy. It's because people don't read the documentation, they don't need to, they just pick it up. And they can immediately start storing their data in it, they don't need to worry about how they model the data for efficiently looking it up again, and they often they never learn. And so a lot of my job really is taking these people who go Yeah, I just saw, I just get my JSON, and I just store it in a database. And it's great. And it's like, well, it's great now, but it's not going to be great when you've got lots of data or lots of users, because that's going to be really slow.

Will Vincent 13:55
Right? And that's, that's like the, you know, the quick take on non relational is, you know, it doesn't scale. And so but that's coming from, you know, if you just dumping a JSON to begin with, how could it scale?

Mark Smith 14:07
Yeah, and we see that all the time. So yeah, it's a different way of modeling your data. And there's a different set of skills that so much as optimizing a relational database is skills that you either learn over time, or you read up on, it's, yeah, we have documentation on the MongoDB website about various different sort of common problems that you see and how you can model your data to get around those problems. So that was the ultimate thing, the end of everything you know, about MongoDB is wrong. Like the conclusion was MongoDB isn't actually easy to use. Like, I don't really like to say that it's not easy to use, but MongoDB like any database, especially any big general purpose database, like just has a lot to learn, and you should go on that journey. You know, you shouldn't just finish with crud, because then the database isn't really going to serve your needs, but it's

Carlton Gibson 14:57
no different with Postgres, right, you get to a certain Sighs above what you what you're got in local development, all of a sudden it matters what indexes you've got. And it matters, you know that you thought about them and look to what was slow and optimized, and it's gonna be this. Absolutely. It's gonna be the same.

Will Vincent 15:13
What I know, we just dove into it. I'm, I'm curious, since this first time I've met you like, how did you get into coding? Like, you know, could infer listeners, you know, what's, what's Do you have a formal education, Carlton? I do not. You know what, you know?

Mark Smith 15:26
No, I don't. I'm University dropout. Very good. I was listening to your podcast from a couple of weeks ago with David Kramer, who's afraid? Yeah. And that was how I found out that he dropped out. Three, the podcast. So yeah, I, my, my dad bought a BBC Micro when I was nine. So that was my first introduction to programming, basically copying programs out of books, and then getting absolutely infuriated when they didn't work, which was sometimes down to a typo in the books. Yeah, but you know, as often as not like, I wasn't a very good typist at nine. And that was often my own fault. Like, no, I

Carlton Gibson 16:07
want to tell you story. When I was doing such a very, very beginning on I know, some old, I'm shouting, I was typing it out. And then all of a sudden, it just sort of stopped. It wouldn't let me type anymore, because I've reached the end of the character buffer because instead of opening instead of opening a text file and entering in a text file, and I was just typing it at the line, it was like no, you can only enter 256 characters because that was like my first sort of, I'm a big fan of absolute brick wall barrier, which I had to get some advice about getting over.

Mark Smith 16:38
And it was difficult to get advice in those days, you know, no internet. And I mean, I grew up in Dubai as well. So it was like we didn't even really have very good book shops. So I would have to wait till we went on holiday to the UK and then go through them go around the bookshops in the UK. Yeah, it was life was harder back then. We should do a sketch the Yorkshireman sketch or something like that. So yeah, like fast forward, I did. I studied Computer Science at high school. And found that very rewarding that for whatever reason, my school really focused on multimedia stuff that was a big buzzword at the time, like pre internet. So it did lots of graphical things. And really, at one point, wanted to be an animator rather than the programmer. But also like making things interactive, which, which is where the programming really came in, went to university, dropped out of university got a job as a Java programmer. It wasn't quite that straightforward. But, you know, that's what happens. And spent many years as a Java programmer. That was why I was the CTO of a company called E Street in London at one point is very big in in London, and sort of all the major UK cities, and spent a lot of time building ETL systems because we gathered data on kind of shops and nightclubs and bars were in London. And then we had to get it into the database. So I built lots of ETL scripts to translate the data and put it into MySQL, initially in Perl, and actually loved Perl. It's such an expressive language, but it's always it's got that problem when you come back to it a day later, and you're in a different headspace. And so suddenly, the code doesn't make sense anymore. Because you modeled directly what was in your head the previous day into characters.

Carlton Gibson 18:23
My favorite description of that was right, only programming language. Yes, yes.

Mark Smith 18:30
And, yeah, so at some point, I started looking around for another language, because I realized Java was a bad language for ETL. Because it just there was just too much to the type system got in the way there was a lot of typing involved. It was I needed a sort of quick and dirty stuff to manage data. And so I looked at Perl, I looked at Python, which was like pretty new at the time, this was the late 90s. And as soon as I came across the fact that was indented, I went, No, I'm going to check out this Ruby thing instead. And it was super early days. And all the documentation for Ruby was in Japanese, except for Ruby in a nutshell from O'Reilly. So I've got myself a copy of that. And it was just too slow, though it was before. I think they've got a JIT now, but it was it was really slow at that point in time. And so I sort of had to revisit Python and get over the whole significant indentation thing. And it took two days, you know, two days later, I'm already kind of sticking in an if if, if line if expression. If statement isn't if statement isn't getting the code that I'd already written underneath it to put it inside that if block and go, Oh, this is really elegant, actually. It's like I don't need to go and put that curly brace at the bottom or whatever. It's so yeah, that was that was one of those points of just sort of instant bias that I had just like I'm not I'm not going with an indented language. So yeah, but after that, I was still mainly coding in Java in my day job and that company went bankrupt. And I moved into another started doing life sciences stuff for a few years. Also Java based, couldn't persuade any company that I worked for to actually invest in Python, like switch over, I would, I would build prototypes in my own time and bring them into work. And it's like, look how much better this is in Django than it is in spring. And no, yeah, it was, it was too big a cost, right, like rewriting things that exist is too big. So I carried on as a Java developer for many years. And then I, and there were no Python jobs, right? They just didn't exist. There were no, they certainly weren't advertised. And then one day, I saw a contract for a Python developer being advertised. And I'd seen a few go past. And I just thought, you know, I could do that I could actually switch from being a Java programmer to doing my hobby as a full time job. So I went for the interview, got the job. And on my first day being shown around the company, I was introduced to somebody in corridor, oh, as this is, this is Mark, and you place an expert. My first day as a Python developer, and the person responded with, Oh, that's good. I'm glad we're investing in the Python stuff, because they were doing a lot of MATLAB at the time. And they said, Would you be interested in training all of our MATLAB developers in Python, so like day, one of the job I agreed to retrain software developers

Carlton Gibson 21:24
in Python, whether you're still on trial, your first three months, it's you got to?

Will Vincent 21:31
Isn't that what like, you know, being an expert in quotes is is like you're like, I don't know, anything we look around, you're like, I seem to know more than they do. So I guess I'm the expert

Mark Smith 21:39
in the land of the blind, the one eyed man is. So yeah, I ran a three day training course, retrained a lot, the developers, they dropped MATLAB. So it was a big success. But I did a lot of learning in a very short space of time. A real crucible for for sort of learning Python, I set up the Edinburgh Python user group at the same time. And that's, that's been a big, big thing for me, like, over time, just learning new skills. So I was very much a hands down developer. And running that group. And occasionally giving a talk or introducing a speaker or something like that. And just learning people's names. That was a thing that I decided I was going to do from from day one was like, every, every time we get somebody new, I'm going to introduce myself to them. And I'm gonna learn the name so that when they come back, they feel welcome. And that was just that was a really big thing for me. And actually really tough, like learning people's names is really hard. So, yeah, I then got hired away to Skyscanner. I built their first Django site, which was called Skyscanner as a flight meta search engine, you may have used it, it's it, it searches all the different airlines directly, you often by scraping their sites to get you kind of the cheapest deal on a flight from one place to another. And they were trying to branch out so that they wanted to get into ski holidays. So people put together their own Ski holiday, including like flights and accommodation and transport. And so we built this thing called Snow scanner in Django, because they were they were very much the C sharp shop, but they wanted to they wanted the benefits of writing Python stuff because they thought it was faster. And so we kind of proved that actually, in a few weeks. Sadly, nobody ever bought any ski holidays. So the site isn't there anymore. It's yeah, it was it was a big failure commercially, but technically very successful.

Carlton Gibson 23:30
Just perfectly built. So what you said that you found the type system getting in a way with Java, which leads me to one of the other things I wanted to talk to you about was you've recently been programming more in rust and I wanted to just pick your mind and

Will Vincent 23:48
I wanted I wanted to get up to the today. Then we can talk about stubs and types. Yeah,

Mark Smith 23:55
I moved from Skyscanner to FanDuel. Oh, yeah. We'll we'll get you may have heard of them?

Will Vincent 24:02
No. And the scenes? Yeah, I know. Yeah. A friend of one of my daughter's dad is the seat was the CEO is the CEO of that, or the other one here in Boston. And, you know, if

Mark Smith 24:15
it's Boston, then it's their competitor draft X. Sorry. But yeah, FanDuel is a weird one, because it's a It was founded in Edinburgh, founded in Scotland, but I didn't, oh, if the business is done in the US, and they have a head office in New York now. But yeah, it's actually one of three companies that I've worked for, that have been kind of split between Edinburgh and New York for some reasons, specifically that like those two cities. But that was really fun. I learned a lot about building scalable Python Software there. And then, one day, I this advert came up on a local tech mailing list for a developer advocacy rocks. I'm a developer advocate these days rather than a software software developer, sort of pure software developer. Um, and it just listed, it was a terrible job advert because it had sort of a bullet point list of sort of 24 different skills that they wanted you to have everything from public speaking to writing blog posts, documentation, writing code, and multiple languages, ideally, and it just went on and on and on and on. But an any normal person would have been completely put off by this. And instead, I'm reading it thinking, this just describes me, it's like, they've just listed every single thing that I enjoy doing. So that was my big I moved to Vonage or Nexmo. They were acquired by Vonage at that point, and that was my my big switch to developer advocacy. And then I got I got hired away to MongoDB a few years ago, just at the start of COVID, which is a terrible time to join a new company as a developer advocate.

Carlton Gibson 25:47
Yeah, because the job is flying around the world giving talks at conferences, but in part, like, that's a

Mark Smith 25:53
common misconception. So I, I sort of somewhat someone recently wrote that developer advocacy is function not a role. So it's the idea being that a single person can't do all of advocacy. So it does involve flying to conferences, and speaking and being part of the developer community. But really, our job is to act as developers on the border of MongoDB use case in on the border of the company, and, and developers who use our product. So we act as customers, to our out of engineers internally, and we act as sort of technical representatives of MongoDB to people outside the company, so in the community. And that does take it that is there's a lot to that. So some of it is going to conferences and speaking just to get to know people, basically speaking at a conference kind of gives you permission to be part of that community and then have conversations with people. I always think those one on one conversations or conversations in small groups are the advocacy bit like the actual public speaking from a stage, I don't consider that really to be advocacy. It's, it's, it's like the key that sort of unlocks the door, as it were, but yeah, I do. I write documentation. I write blog posts, I actually act as a sort of consultant internally, I'm acting as a consultant to the team that write our keynotes at the moment. So it's a big multi month project to write our keynotes for a big conference that we're hosting in New York later in the year, probably. And, and they need to make sure the technical language is correct. And they also kind of want to know what developers find exciting about MongoDB. So it's kind of my job to build that part of the story that we're going to tell. So that's, that's again, that's a new skill set for me. So that's quite exciting. Yeah, sorry. The original question was, wasn't that difficult. Doing developer advocacy when I couldn't fly anywhere?

Carlton Gibson 27:51
Well, that certainly the flying around it sounds difficult. So

Mark Smith 27:55
yeah, the big bit that changed, I did a lot more stuff online. I gave a few talks over zoom. Which, I mean, I got a lot better at but I bought this nice microphone that I'm speaking into now. But it's so thankless. I tend to write slightly silly talks, like telling a joke over zoom, where you can't see a single other face is that it's like laughing at your own jokes. You sort of you pause hoping that other people are snickering at the joke you've just told, but you have no idea. I still have no idea.

Will Vincent 28:31
Well, it's a little bit it's a little bit like writing like, You got to you got to put some things in there to keep yourself sane. Yeah, that's true. I mean, I've, as a side note, one of the things Carlton has introduced me to is the London Review of Books, which I just love, love, love. Because they just, you know, we're on the I don't know if we know if we can repeat the line. But we are flying out to Django con us. And there was just this offhand remark about who you know, who knows what passes for Oscar worthy content of these days, but if I won't say it, but you know, it was just this very UK very straight laced, disgusting, vulgar thing that you know, the writer just slipped in for themselves. And now Carlton, I just trade quotes from the each piece because there's a couple that you know, the writer just has to put in for themselves. So it's, you know, it's valid.

Mark Smith 29:18
I am another person that Colton has got into London Review of Books. I feel part of an elite club now.

Carlton Gibson 29:27
Yeah, listeners should should definitely subscribe.

Will Vincent 29:30
Yeah, yeah. It's definitely you don't get a response for it.

Mark Smith 29:34
So yeah, I mean, that was that was the main difference. And I went slightly slightly mad with the lack of social interaction. I'm a highly social person. And just just generally, it was a very difficult time. So it's nice to be able to get out into the community, or in the case of Django con Europe, have the community come to me that's yeah, it's a nice plus of hosting. It's, that's the upside to all of the work that's involved with with during a conference.

Carlton Gibson 29:58
I mean, you're so gone and let's talk about Django, New York. So it's in, it's at the end of May, you said,

Mark Smith 30:05
yeah, 29th of May. Running for five, we got three days of the main conference track with the with talks and workshops. And then two days of Sprint's afterwards, it's hosted in the assembly rooms, which is this amazing old assembly hall. In the center of the city. It's beautiful, like these amazing chandeliers and things like that inside. We've got great sponsors Hall, like usually the sponsors get these dark, oppressive spaces with no daylight. And given that that's something I have done for a living and sort of standard. This is like made sure that we've got a good room with lots of lights. And

Carlton Gibson 30:41
now this will put the sponsors in the dungeon stuff. Exactly, exactly.

Mark Smith 30:45
And yeah, I've been one of those dungeon creatures before. And just this amazing Hall, I called never there when I announced Django con Europe and showed the photo of the big hall that we're just just want to fill with people basically. So that's the CFP is open. Now, I should point that out CFP is open until I think the 26th of February. So I've got got basically someone

Carlton Gibson 31:09
and who who should submit a proposal for a talk.

Mark Smith 31:13
It very tempted to just say everybody. It's always important to say like, it doesn't matter what level you're of skill you have with Django. It we need introductory level talks for the people who come to the conference who aren't Jack, yet Django experts because that you need that whole level set of levels, those steps, stepping stones to expertise, so that everybody can feel included in the conference. So very keen to get all different sets of sort of levels of skill in Django. But also, any kind of talk that would be of interest to the Django community. So if there's talks about, like, some sort of technique for managing your time, or getting over stage fright, or, you know, whatever it might be like, we just want to see those those kinds of talks. We're just going to fill it with with a whole whole bunch of different talks. They'll be useful to Django developers.

Carlton Gibson 32:07
Yeah. I mean, when one of the big things I always say about Django con and the lineup is not just technical docs, technical docs are a big chunk, maybe part of it, but I mean, I remember my first Django in European Florence, and it, it wasn't the technical, I don't, I could probably dig out that. Oh, yeah, that technical talk if I really thought about it, but the ones that really stayed with me were the community talks, or the ones on non technical topics, like, you know, cognitive biases, so it was one that was just, you know,

Mark Smith 32:33
those the ones that really changed your life, ya know, it really make you think differently. And that's, that's really important. So, yeah, very keen to get those kinds of talks. And so if anybody who's listening to this has a talk like that, or has seen a talk like that, and they think it would be a good fit, like, get that speaker to get in touch with us. Because we would love to have that talk at Django con.

Will Vincent 32:54
Well, this might be in the notes, but I believe in 2020, you gave a talk on like, how to get on the stage giving a talk, which lays out the whole process. For people I know,

Mark Smith 33:03
ironically, that was the first year it was run remote. So I gave a talk called How to Get on this stage over zoom from my living room.

Will Vincent 33:11
Yeah. But no, that's a very good resource. So I think you know, could for someone who hasn't done it before just laying out the process. And

Mark Smith 33:18
yeah, I actually have a link to that video from the CFP page, which I feel slightly guilty about, because it's like linking to my own talk on the Django con website. But the previous organizers of Django con put that video in there. And I thought, you know why it's a Yeah, it's a nice, it's a helpful introduction to kind of how you put a talk together, how you even apply to a conference to give a talk. I had this amazing experience this year in Porto, where I got my badge for the conference, walked inside, and they had some stickers to decorate your badge with. So I was just kind of looking at the stickers on the table. And there was a guy on the other side of the table was looking at me a bit awkwardly sort of smiling at me. It seemed friendly. But it was a little bit unnerving. And I was in full on like, I find I like anybody I find socializing. A conference is slightly awkward. But I've been to enough now where I can kind of force myself to overcome it. I stuck out my hand said Hi, I'm Mark who you are. And he said, Oh, I actually know who you are. I the reason I'm here is because I watched your video on how to get on the stage. And I wrote my first talk, or I applied to give my first talk here, and I'm going to be giving a talk tomorrow and it's all down to your video. Thank you very much. It was like, Oh, that's amazing. That's That's why you give those talks because, you know, in some way they change people's lives. He could be a developer advocate in five years.

Will Vincent 34:41
I think I think people should, should take that next step and reach out to someone if they see a talk. I mean, the very first interaction Carlton I had he gave a talk on how to grow old gracefully as a developer, and I I believe I just cold emailed you. I do this all the time, like because I've given talks and so I know nobody emails you about it. Right. But it's it's like it's so nice, you know, so I emailed him, and then at Django con us my very first conference, he was there and like, there was a pre existing connection, you know. So, like, here's a pro tip, if someone gives a talk, they're open to you emailing them, you know, like, they didn't want to be contacted, they wouldn't give a talk.

Mark Smith 35:19
Yeah, that's very true. I love it. I don't very often get feedback on the talks. But when I do, it's just yeah, it makes it all worthwhile. Because, you know, it's it's a time consuming process, putting together a talk. Yes, practicing it.

Will Vincent 35:34
We can I want to get to rest. But can I just ask? So what is the like, what is that I was trying to explain to my wife, what is the etiquette around? So if you're giving one to two talks, a month? isn't like one talk per calendar year is a 12 month rotating cycle? Like, how does that work? Right? Because obviously, you can't give a new talk every time like, what's the

Mark Smith 35:55
like? Yeah, that's true. Well, firstly, I don't like there's, there's two waves of conferences in the year ones that kind of late spring and the other ones the end of the summer. And that's when I'll be doing like you have, in the past done kind of one to two talks a month. The rest of the year is actually much quieter. Fortunately, everything kind of dies down around the winter time, usually. But yeah, I tend to write a new I, before I started professionally speaking, I used to write one talk per year and give it once, it is an incredible amount of work to do to then get on a stage once. But like, you know, I gave the talk because I was part of the Python community and felt I had something to say. And I kind of follow a similar pattern now. So I tend to write a new talk when I have something to say, currently putting together a talk on exception handling, because I think I have some useful views on that. And but I and when I don't feel I have a fresh enough talk to give, then I just won't be applying to CFPs because nobody wants to see me give the same talk at yet another conference or to come back and give a very similar talk in the next year or something like that. So it's, it's really Fortunately, I'm in the position where my employer doesn't want me to burn my bridges with the community by giving bad that sort of low quality talks. And so they allow me to sort of work on these things. at my own pace. I have colleagues who write new talks all the time. And and they are amazing at it, but they obviously have more inspiration, or maybe more experienced than I do at this kind of thing. So yeah, it's we're all different. Everybody in this in developer relations

Carlton Gibson 37:34
on very much like it's a, it's getting blood from a stone, it's like squeezing it out. It's really hard. And it's like, you know, I can write one. But I'd say like, you know, there's going to be 12 months for another one might appear. Like,

Mark Smith 37:48
I think I usually write two or three new talks a year. And then I'll usually give those talks maybe four or five times over the course of about two years, three years. There's a there's a, there's a talk that I wrote a few years ago called stupid things I've done with Python, which is a bunch of hacky tricks with Python, told with a straight face. And I it keeps getting accepted for conferences, and I sort of submit it as a as the black sheep kind of like, submit to serious talks, and then the stupid Python talk and they keep accepting the stupid Python talk. And it's now got to the point where I can't give that talk anymore. Because it's just it's, you know, it's been recorded. It's on YouTube. That is one of the talks that people give me feedback on. Usually complimentary, like, it was funny, not useful. It was funny. Oh, no,

Will Vincent 38:39
I like how you said, I, I think I saw that. I think one of the more recent ones, you've you've given it a bunch and you said like, this is just the data model docs page, by the way, if you actually read it.

Mark Smith 38:51
Yeah, yeah, that is actually that's part of that talk. I love the Python data model is just it was a revelation to me that you could kind of lift up the lid on Python and start rummaging around inside and just sort of put things back in a slightly different order.

Carlton Gibson 39:05
So can I ask because I love it as well. And I love you know, just making an object respond to the dictionary interface so that it can just go in you know, it's a type of your own custom class. But so all of a sudden, it's it's interchangeable with the dictionary. And then yeah, one of the things that sort of come out with the introduction of type hinting is that all of a sudden, it's it's like, you can't pass that object anymore because it got rolled out as you know, unacceptable and yeah. What's your thought that cuz

Mark Smith 39:35
it's that wasn't a question no

Carlton Gibson 39:40
emotes with me here, like yeah, what's going on?

Mark Smith 39:44
I yeah, I think when you abuse an interface like that, it's putting my serious face on. Then you're gonna get unexpected behaviors, things kind of get tightened, tightened up. You know, if If you're using something for something that's not meant to, then you're not going to be taken into consideration when somebody goes, You know what we should make this safer in some way, like by locking down the types that can be passed in or something like that. So it's really a Yeah, it's I find it fun when you can stick a sort of proxy around something. So you've got a dictionary, but you say wants it to be case insensitive. So you stick a wrapper around a dict. And then you just make everything lowercase when it goes in. But you can still make it look like a normal dict, which is like, really cool, actually, because there's lots of languages you can't do that with. But then when you start using, I'm trying to say, Oh, I mean, I've used the subtraction operator to make a suffix. Like that was my big joke in stupid Python tricks was I've got this suffix of ish. And you can, you can subtract it from true, so you get true hyphen ish, but it's actually a minus. And so it's using Dunder sub behind the scenes to return a kind of another object called a true ish, that that does fuzzy matching on other types. And it turns out, it's quite fun. And somebody suggested that that could actually be useful in testing, for example, so you can have a sort of a fuzzy number with no rotation. Yeah, so if you've got 2.5 ish, that will match 2.51 and two point a 2.49, or something like that. And it's, you know, it's I not convinced it's actually a good idea. But it's, it's a fun, it's a fun thing that you can do. It's a weird, I show that as an almost an aside after the main sort of trick in the talk. And at that one, there's always somebody in the audience going quickly, right. Yeah, and this is the problem with like, teaching these tricks with a straight face is at some point, somebody's going to take you seriously instead of going oh, this is terrible with their head in their hands. It's, yeah, that's a negative. Probably.

Will Vincent 41:52
Well, that. That reminds me I heard this this weekend. So this is a joke. One of my kids told me like, What do you call a fish with no eyes? Fish. So when you're saying that I was like, I anyway, rust. Let's say we're coming up. Yeah, we're 40 minutes and like,

Carlton Gibson 42:13
so the last couple of years, you've been programming less in Python and more in rust? You've all Yeah, yeah. That's so helpful. That's fair. How would it how what's what's your take on rust? And why is it so hard?

Mark Smith 42:27
I don't know why.

Will Vincent 42:28
I can't we have nice things, Carlton.

Carlton Gibson 42:32
I've got to take on why it's so hard. It's because it doesn't pretend to work. It doesn't pretend it's working. Right. Yeah.

Mark Smith 42:38
So it's a really good, really good summary. Did you will it was so we were part of a like rust. chat group for Django developers at one point won't be caught? Like, did you bring that up? Then it sounds familiar.

Carlton Gibson 42:51
We were reading No, I put it on Twitter. One time, Alex. I was I was programming. I was writing something in rust. And I, it was a for Was it some front end D thing that was going to get wrapped up in wisdom and wisdom. And it was going to work in the browser. And it was like, took me an age to get it going. But once I got it going, it literally just worked first time. And I put something up saying rust is harder to rust is easier than JavaScript. It's white or something. Something about this and the thought was, everyone's like, No, it's not, don't be ridiculous. I'm like, but it doesn't pretend to work. It doesn't say it's working. And then all of a sudden, it's you know, undefined error. It's like no, no, no, no, still knows still no, it's hard

Mark Smith 43:35
to get things to compile. But when they do they probably work. It certainly cuts down on the amount of test code you need, I think because you can test the functionality rather than all those edge cases like somebody puts in the wrong type or Yeah, or even passes null in, you know, those those kinds of problems go away, which is really nice. So

Carlton Gibson 43:56
I guess in the question, given the support Python podcast is, what do you think the lessons we might draw from rust into Python might be?

Mark Smith 44:05
So in some ways, we already are learning the same kinds of lessons very much that kind of not pretending to work thing. So one of the big differences between python two and python three was obviously the string handling like how you convert from unicode strings to byte strings. And you could get something like a byte string and then encode it, which decoded it then re encoded it again, which was really silly. I, the reason I'm mentioning this is because I was part of the big effort at Fanjul to take a large Python code base from Python two to python three. And there was a lot of resistance to it originally. And eventually I took one of the smaller services we had just to demonstrate like this is how you put something to python three. And I did I ported it to python three, and instantly came up with a whole bunch of bugs in the code because suddenly it wasn't pretending to work anymore. Like a whole bunch of places where it was expecting unit Code strings and not getting them but just carrying on anyway. And they were so that we could have had some fantastic bugs with weird characters and things like that. So I think that's one thing. And I think type hinting is another one sort of moving in the same direction, adding type hints to Python. I know it's a controversial topic. I think that the ability to code when you know what type what type something is to be able to sort of lock that down, or at the very least annotate it and test against it is a really big plus. And you start to see that, yeah, sometimes I might want pythons full dynamic behavior, or I might want an any being passed around. But other times, I might actually want, I might actually benefit from sort of locking things down and sort of moving a little bit away from duck typing and more towards like, you're meant to pass one of these in. And if you don't, then it's a buck. So yeah, I, I was I went head over heels from Java's static type system into pythons dynamic type system, I absolutely loved it, there's a wash with all sorts of anonymous types flying around, you know, it's like, but I loved it, because it's like, I can put whatever I like in this list, I don't need to declare what type it is, they don't need to be a subclass of each other or anything like that. Another thing I've learned from rust is that you can have a static type system that's also really powerful. So you, as well as locking things down, or enabling things, sort of broadly, I'm trying to think of a good example, one of the things I found absolutely astounding with rust was that there's this sort of global implementation of, I might get this the wrong way around, I think it's a global implementation of the from method. And it basically says anything that knows how to convert itself using into, into something else. That destination type now gets a from method that we'll just call that into on the GC What I mean is like you sort of really difficult to describe without something on the screen. But it's like you just get this this blanket implementation of from on your destination type that you've only actually implemented into on your source type. Have I got that the wrong way around? I hate describing things like this.

Carlton Gibson 47:13
The point being that that's done once the highest level trait, and then yeah, it's never it doesn't have to be reimplemented all the way down.

Mark Smith 47:22
And certainly in Java, and as far as I'm aware, C++, you just have to go into every one of those types. And just say, and now I'm, you know, implement this, implement this one line of code each time or use a macro of some kind or something like that. Macros is one area of rust that I haven't really got to grips with yet. I should I really should. The stupid Python tricks was the way that I learned Python, originally, that in depth. And I need to get back that mentality with rust and start writing stupid rust tricks. They're not necessarily like breaking rust, but just like, you know, how would I implement this core type, and things like that, and started to start really digging under the hood. As I found it. One of the reasons I found rust hard to learn, apart from the fact it is just a tricky language is because it's been a while since I properly learned a new language, that's especially a really different language. And I've got that inner perfectionist all the time going, you must understand this completely before you move on. And it took me a long time to start going, Okay, I've got that working. Now I can move on to the next thing. And it kind of you know, build a broad understanding and then start to dive down into the depths. I'm just not just not very good at that anymore.

Will Vincent 48:34
What's tough to remain playful as you learn a lot, because you just see where the bodies are buried. And you almost want to be like that is that, you know, what's the tipping point of naive versus Well, I'm just going to, you know, see what works.

Mark Smith 48:48
Yes, yeah, very true. That feels like a lot of edge cases in Rust as well. Just occasionally, we'll learn something that works in one context and not in another. I don't know if that's just me. But yeah, it's been a journey, I've now got to the point where I feel like, I reach for rust now with certain types of problem instead of Python. And I'm just like, I know, I can write this in rust, and it won't take me too long. The tooling is really good. The it was really Oh, that's another thing Python could really learn from rust is distribution. I know packaging is a tricky topic. But it's I also I can compile a rust program for different platforms and just distribute the binary. And again, there's, there's been so many attempts to do that in Python, for different platforms, or sort of limited sets of platforms and things. And it's such an important thing for client side software. I mean, at the end of the day service server software is client side software to your ops people as well, isn't it so it just just makes getting stuff installed easier. Somebody told me a while ago that containers solved this problem. But I fundamentally disagree with that given given how many command line tools and things like that there are out there in the world.

Carlton Gibson 49:59
I think in packaging thing, there's also something about the size of the thing, the binary crate, it's not just in display. So it's five megabytes or 550 K or, you know, 500. It doesn't matter if a disk is kind of cheap, but then when you run it, if it's 60 megabytes of RAM in memory, yeah, persistent for doing almost nothing. That's why I think pythons got a bit of a problem in that you can't run lots and lots of little agent servers, agent services just sitting there on a VPS with half a gigabyte of RAM, you'd like to have those and you've used a fifth of it. It's like, no, no, no, no, no, it has to be, it has to be small. So I think that's where, yeah, the native, the truly native, single binary thing comes in. Anyway, that's cool. The thing I'd say I'm interested in is the PI three, the way people are writing pi 03, the way people are writing modules in rust and then wrapping them in a small foreign function interface layer, which then you can then import it as your Python module. So

Mark Smith 51:02
I mean, that's from the time I started using Python, and people would say, well, it's too slow. And you go, Well, it isn't too slow. But if it is, you take the you do the profiling, you take the core thing that's taking the time and then you re implement that and see. And that's always been relatively easy whether you use a rapid generator like swig, which I'm sure doesn't exist anymore. But the s

Carlton Gibson 51:24
was it use types and C types? And CFI? Yeah,

Mark Smith 51:29
this gave you Yeah, this was pre FFI and everything. And it used to it used to build the boilerplate for you. So there was a certain amount of boilerplate with any module, and it was just a command line tool that just basically used to generate everything you needed to fill in your C function that you know, to just, and then that would automatically be exposed, and the types would be automatically translated between Python types and, and the types you'd expect in C. It was, it was good, like, swig, used to produce these really big modules. I think, you know, I think it died to death. When am I thinking of C types? Wait, Ah, sorry, my mind's gone blank C types is core Python, isn't it? Um, there's, there are, there is a tool for kind of annotating Python code. So that then compiles it down to a C module directly. L. XML uses it. I forgotten the name of it. And I think I think the most successful sort of C modules that are now exposed to Python, they're generally use that approach. I can't remember what it is. Siphon siphon.

Will Vincent 52:36
Oh, yeah, that's right. Yeah. Like C and Python, would that be called? So I thought,

Mark Smith 52:43
we can then see what I was getting confused with see types? like, Wait, am I talking about the wrong thing? Anyway, cool. See, types is fun. Because there was a talk at Euro Python a few years ago, where somebody was writing Python code to open up C types to talk to the Python DLL. And then was changing some of the low level things. So two was no longer equal to two or something along those lines. It was absolutely crazy. Yeah, I

Will Vincent 53:07
saw the Boston Python user group. I saw someone do exactly that, you know, just being like, nothing is anything and like, it was like, it was just sort of like, wow, it nothing. Yeah, it was playing around was with C and Python. And it was, I can't say I followed all of it. But I saw the result. And I was like, wow, okay, so where are we now? Yeah, you can't

Mark Smith 53:28
trust anything, or anybody? Yeah. Yeah. That's, that's the ultimate.

Will Vincent 53:32
Yeah, pretends to work. I did have. I know, we're coming up on time, I think, maybe actually a talk idea for you, which maybe you've done. But I would love to see a talk that is, like, when you should use Mongo with Django, where you take a standard, you know, not Instagram clone, but something where someone will just naively build it and show how, hey, here's an example of where Mongo really shines, and like, how you should use it, because I think like, for me, I don't have the knowledge of when what I reach for Mongo, like, you know, because it's more of a scaling question. But if like, you could tee up in people's minds, this is what's gonna kill you. That would be interesting. And maybe that exists. But

Mark Smith 54:16
I think I actually submitted that talk idea to Django con Europe last year. And they accepted my other top

Will Vincent 54:23
organizers this year and see, see, see what's going on.

Mark Smith 54:27
I'm in charge of the CFP this year, so I could totally abuse that position.

Will Vincent 54:32
Well, I just, I just suggested it. So it's a new, you know, it wasn't your idea.

Mark Smith 54:37
Yeah, thank you. It's I you can tell. I think that's a good idea. I think they came up with it separately. Yeah. And it's, yeah, it's a good set of questions. I struggle with writing MongoDB talks because I don't want them to come across as a pitch. I it's very, it's I love MongoDB but I'm also aware that if I stand up on stage for half an hour and keep saying the name MongoDB again and again, then it's going to start to sound a bit like a pitch. So I tend to tend to talk more abstractly about architectures or building certain types of application. And MongoDB just happens to be in the background.

Will Vincent 55:14
I mean, it's really a scaling talk. I mean, we, I feel like Carlton I often try to push gas on, like, scaling is interesting, right? Because a certain point, prototype anything, but you know, will it scale? And to the extent you can have someone who's been in the trenches, who's just like, I can tell you right now, what's gonna go wrong? I mean, you know, you listen to the, the David Kramer sentry talk, that's sort of they're trying to get the tooling at some point to be like, you know, we're all doing the same thing over and over and over again, whether you realize it or not, and if somebody or some AI can tell you, hey, like, there's an N plus one problem, you might want to know about that, or like, hey, like, maybe a nonrelational would really help you out here.

Mark Smith 55:51
Yeah. I mean, David's been through the trenches, and that one as well, it's that they've gone through multiple sort of scaling stages. Because at one point, they were storing everything in postgrads. And then they, they hit a point where they had to then re architect all the way, the way they stored all of their data, because it just couldn't scale anymore. And I think they've done that twice, maybe three times. I mean, probably in an ongoing, like, you know, evolution now for, for keeping keeping track of their scaling problems. But that's a really nice problem to have, when it's, you're having to scale because you've got loads of paying customers. That's a pretty good situation to be in. But yeah, I mean, it is one of them. MongoDB is web scale, right? It's, it's built, it's built in, I have a T shirt somewhere. With that written on the front,

Carlton Gibson 56:42
the slogan we had in the show is stash the hash, stash the hash. I carry on, you've got what you've got.

Mark Smith 56:55
It's got sharding built in, which is you know, and but there are some limitations with that, you need to be careful about how you shard your data, like what you choose as a sharding key. And that's true of I think, any sharding solution as well. So maybe that's something that can be abstracted out into a talk. It's just like, how do you scale when you can't store all your data on a single machine or a single, single cluster? I have to give that some more thought, really appreciate the input. It's always nice to have somebody suggest ideas for talks.

Will Vincent 57:21
It's always easier to project on someone else your own problems, you know,

Mark Smith 57:24
but one of my most successful talks about Python packaging was literally just me sitting next to somebody in a sprint. Somebody's much more experienced than I was. And he was just tearing his hair out over trying to package something and he said, why won't somebody just told me how to do this. I thought I could write that talk. wrote an opinionated guide. And yeah, that's been hugely successful. I got my job because of that. My manager loved that talk. It solved us particular packaging problem that he had. And so yeah, he was very open to me joining MongoDB when, when they

Will Vincent 57:58
are there, you gotta say when when do you reach for Mongo? Like that's, that's what I want. When do I reach minnows? Alright, so the Django the Django CON talk when, when the rich, you know, when to reach from Okay, or whatever. Carlton, do you have your talk all set for May? I mean, it's coming up. I know, you're, you know, you're, you pretend that you haven't worked on it at all, and like you've done it six months in advance,

Carlton Gibson 58:20
I've got my top secret proposal idea on the brew. It's simmering away there. So I've got till the end of February to get the abstract, nice and tight. I got the idea whether I get accepted, or I don't know if whether it's a good idea, even if it is yet to be seen. But

Mark Smith 58:39
awesome. I look forward to seeing the proposal is, yeah, I look forward to seeing lots of proposals. For many people. It's early days, we only opened a few days ago. So it's like there's there's a few proposals in that, which is nice. But we need more.

Will Vincent 58:54
I believe I put it in the Django newsletter that came out. Fridays we record. I'll keep putting it in there. But I'm pretty sure I put it in. I mean, clearly didn't drive that many traffic, but

Mark Smith 59:05
we had some but it's it's all CFPs are the same. I've been through this before. It's like it's yeah, they all come in on the last couple of days. So I'm not too worried. I may be too calm. I'm quite a relaxed person generally. Okay, we'll be fine. Well, everything will be fine. One more

Carlton Gibson 59:22
discretion on talks and talk writing is Django con, your release. I don't, maybe Django news to have this policy advice can see the slides first for a kind of code of conduct review, which I totally supportive of. But as a speaker, right, busy working on my talk, I've also like with the slides existed, I'd already have given the tour.

Will Vincent 59:43
Definitely didn't have that last

Carlton Gibson 59:45
year at GenCon. We do have that agenda. Just from a you know, experience tan point of view. How do you advise coping with that sort of stress of Ah, I've got to give these talks for the slides. But the slides are also a work in progress as we speak.

Mark Smith 59:59
Say Indian wherever you can. It's written in. I mean, I would call it the small print, but it's no smaller than any of the other. Like, you know it, we don't expect them to be ready, we just kind of want to see the outline of the talk. And, yeah, it's, it's a formality more than anything else. But I think it's also a sign of how seriously Django con Europe at least takes no, I don't need to compare with Django con USA, is at least a sign of how seriously we take the code of conduct and ensuring that it's an inclusive environment for everybody. Yeah. And we just one of the many checks. We've said

Carlton Gibson 1:00:33
this a billion times on the show, but like, one of the things that makes a Jango Khan sort of special is, you know, the, the atmosphere and the environment, which is, you know, built upon the foundation of the code of conduct and its enforcement step one having a code of conduct and then not doing anything about it. It's

Mark Smith 1:00:51
absolutely, absolutely I'm people won't be able to see this on the podcast, but it's like I was nodding furiously. It's the reason I should point out like, I'm a co chair of Django con Europe, because my wife is the other co chair. So it's like the probably the most dangerous thing we've done for our relationship over 20 years, is to take on this thing together. But it's the reason we both wanted to do is because it's just one of the warmest, friendliest, nicest environments that that we visit, and I go to conferences for a living to some degree. So when the opportunity came up to bring that community to a city that we love, like, I just absolutely love living in Edinburgh. That it Yeah, we couldn't really turn it down, although I really would have liked it. I never wanted to be a co chair of a conference. But if I did, it would be this conference is it's gonna be awesome. It's already looking really, really good.

Will Vincent 1:01:47
I'll have to, I was gonna say Jeff Triplett has, for the US one has put out a list of talks, I'd like to see that he does sort of annually, I maybe I probably have enough ideas, I'd put one out for people. I mean, because the other one if anyone's listening, I'm fascinated with the idea of startup projects. And as ever, like, where do you draw the line? So for Django, like I'm like, the problem is, it's only kind of an independent person or consultant who's in a position where they're doing this all the time, most people just drop into a new, you know, existing codebase. But like, what are you know, what are the I mean, I have a forum posts, like, on third party packages, which, you know, top 10 Do you want, but like, what can we all agree on? Like, where does it all become? You know, where does it all diffuse? I feel like we can keep pushing that out in terms of like, okay, right, well, we need, you know, Django all author, you know, there's a whole bunch of things like, I'm always curious where that line is, because that keeps moving. But cuz I'm thinking I think about this in terms of I have this Django X starter project, which is intentionally, extremely basic. But it's designed to sit between that and cookie cutter, and I get PRs that are pretty regularly, like add this, add this or this. And I'm like, Well, I use that. And I would, but I don't, I'm not as confident like I'm deliberately keeping it. Like, I feel like there's room above it. But before we get to, you know, my before we get becomes a custom subjective thing. So I'm always curious how people do that, but very people, very few people are in a position to do that is the challenge, I think.

Mark Smith 1:03:16
Yes. Yeah, that's true. I, this, that was just an idea for anybody who wants to take it up. Is that right? Yeah, I should put up we have a list of ideas on the Django con Europe website as well. In fact, it's one of my bits of advice, when I gave that talk about getting on the stage is like, go and look at the CFP guide page. And they will usually have a list of topics that they want to see talks on. So that's a good start. But those are pre approved. Right? It's that's what they like to see. See talks about. So anybody who's a new speaker, looking for an idea, definitely check

Carlton Gibson 1:03:49
why Mark Smith is great. Why?

Mark Smith 1:03:54
I wasn't allowed to

Carlton Gibson 1:04:00
write Okay, well, anyway, if you are listening at home, you got any doubts, just send just, you know, just putting your talk idea because whatever you're excited to talk about, other people will be excited to listen to. And it's as simple as that. It's, you know, just just submit.

Mark Smith 1:04:14
That's absolutely true. And it doesn't matter how nervous you are, when you give the talk, there will be a round of applause at the end. And people will come up and tell you how much they enjoyed the talk. Even if they have to pick out one thing from the middle that they found valuable. It's like they will come up and tell you and it's a great way to meet new people are conference. So that's Yeah, I can't recommend it highly enough. I was not a natural public speaker. But after giving my first talk, it was like, Oh, I'm gonna continue doing this. Because I didn't feel like that before I got on stage. But after I got off the stage, I was like yeah, I have to do this again.

Will Vincent 1:04:47
Yeah, well, yeah, nobody's there to take you down a peg every I think everyone there appreciates how much work it is how difficult it is. And so yeah, nobody. Nobody's there to tear you down.

Mark Smith 1:04:58
Yeah. Oh, we look for Seeing you in Edinburgh in in May.

Will Vincent 1:05:02
Alright, anything else? Is there any last minute things you want to say before we sign off Mark

Carlton Gibson 1:05:07
she last chance.

Mark Smith 1:05:08
I had a feeling you're gonna ask me that and I'd been saving up like encouraging people to submit a talk. Okay. I just did it. So it's like no, I have nothing

Will Vincent 1:05:20
All right. Well, thank you. Thank you for coming on. It's real pleasure to meet you. I've I've no of your work and I've seen your talks but first time that that chance to connect.

Mark Smith 1:05:28
So that's been awesome. I really enjoyed it. Thank you. Thank you. So as

Will Vincent 1:05:31
ever Django chat.com. We are a master Mastodon now, and we'll see everyone next time. Bye. Bye bye.