Django Chat

Modern Django Development - Jeff Triplett

Episode Summary

Jeff is a partner at REVSYS and a Director of the Python Software Foundation. We discuss modern development tools including Github Actions, Docker, Tailwind, and more.

Episode Notes

Episode Transcription

Will Vincent 0:06
Hello, and welcome to another episode of Django Chat, a weekly podcast on the Django web framework. I'm Will Vincent joined by Carlton Gibson. Hello, Carlton. Hello, well, and this week we have, again, Jeff Triplett, who is a partner at rev sis member of the Python Software Foundation, and has his hand and lots of buckets in the Django world. so eager to talk again. Hi, Jeff. Hi. Glad to be back. Thanks for coming back on. So right before we recorded you were on a meeting for the Python Software Foundation. Maybe you could just mention what that is and what they do since I feel like a lot of what we do is talk about what the Django Software Foundation does, but there's a much bigger one for Python as well.

Jeff Triplett 0:42
Yeah, so I'm one of the board of directors for the Python Software Foundation. And so basically, they're the fundraising arm of the Python organization. Some of this has to do with PI con some of this has to do with fundraising for things like the Python packaging authority, or there's there's a whole lot of trying to figure out Like, you know, with with COVID-19, and trying to figure out like how to fundraise and how to support projects and stuff. So it's just a nonprofit that's been set up. So there would be no, you know, commercial interests to try to, you know, develop and promote events and education in the Python world for the Python programming language. Even after being on for two years, I've yet to get that down. Right. So

Carlton Gibson 1:22
you mentioned Pip, you mentioned the Python packaging authority. And that's, that's behind Pip. Right. So every time you go pip install Django, pip install Django rest framework that comes from somebody. So that's who does that. How is that funded? How is it that the servers maintain that run and run reliably for millions of downloads every day? Right for the hardball question for the beginning? Well, it's a simple question.

Jeff Triplett 1:47
It is for sure.

Will Vincent 1:49
It's an ad there's we can link to there's a chart I saw that usage has just skyrocketed to in the last, you know, year but in the last couple of years, I believe, right?

Jeff Triplett 1:57
Yeah, you also get on some time to talk about that. specifically because it's Yeah, yeah. So yeah, part of this has always been volunteer base. But the PSF kind of helps with some of the infrastructure. And there's a lot of donated infrastructure. So I forget how many like terabytes of data it is a month, but it's a scary amount of data that goes through that, you know, when you pip install something, companies like CD ends and stuff, and I don't want to quote a company for lack of knowing which one it is. But that's all cashed in. So you know, it's it's, to me, it's a very, very scary world to talk about packaging and how this stuff works behind the scenes, which is why you need to get earnest on to talk about it. I think. So.

Will Vincent 2:37
Yeah, I wish we should he's, yeah, I'll ask him to come on. I'm sure he would do that. Good question. If I can find that link to that article. I saw that graphic of usage and it was always high. And then it's really gone up as Python has gone up the last couple years in particular.

Jeff Triplett 2:54
Oh, it's one of the like, scary parts of Python that a lot of people don't talk about it. I don't quite educated enough to really explain it in a like, I know how I think parts of it work. But I've also every time I hear it explained to me, it never quite works the way my brain has wrapped around it. So I would just be doing it a disservice to try to explain it before we move on to a different topic, though, is a call to action for the PSF for the Python packaging authority. If some of you know I'm a company, I'm using all of this, I think all I could sponsor someone there. So yeah, so they're doing some fundraising right now directly for packaging, and then any money that gets sent to that goes directly towards it. There's also been a couple of really large grants, and I think Mozilla, maybe gave some money towards it. And then the Chan Zuckerberg Foundation, which is from you know, Mark Zuckerberg, Facebook charity. Yeah. And so they put quite a bit of money to help fund some of the projects and stuff. So that's one means is that there's a direct fundraising campaign we can link up and then the second part is the PSF itself accepts money as well. And any money you give the PSF they can use for packaging as well as just keeping the lights on. So you've got two pretty good options. there if you only want to give for one versus you want it to go to both. Okay, super nonprofits are kind of funny that way, because if you earmark funds, like if I donate to like the DSF, let's say, but I only want to give towards, I don't know, like travel grants or something nonprofits are restricted to where they can use that money. So that money can only be used for travel grants. So the PSF works in that way too. So anytime you see like a specific fundraiser, when you give money to that they can only legally use the funds for that purpose.

Will Vincent 4:30
It's kind of interesting. I didn't know maybe one last question. How does Django or really any package or library fit into the Python world that the PSF level because there's Django flask? There's NumPy. There's all sorts of packages. Does it come up at all? Or is it really? How does that fit in? Right, because we're obviously Django focus, the Django podcast. Is it really to the side or is it kind of part of the discussions and debates about the community

Jeff Triplett 5:00
It's definitely on their radar, some focus, but there's not a ton that they can really do. Because there's just so many projects, you know, there was 10,000 projects in Python. So the bigger ones definitely get on their radar. And if if somebody like if one of these groups comes to the PSF, and says, you know, we would like to have help with fundraising, or we would like to have help with where things are stored, then the PSF can kind of help them with that. So maybe that's from a GitHub organization perspective, or, you know, from a, let's give you some advice and services, because the PSF actually has some staff on hand, too, that they're able to help some of the like, sponsor eat, that's called like the fiscal sponsor program. And it's something they can do to help events, let's say, because they do have accountants on staff, they do have some legal help. They do have like resources that are able to provide. So some communities have started to taking advantage of some of this as well. It's more focused for events, but we've also seen it I think, like black, join the PSF under the GitHub org, and there's some options there. So you know, it's free really tough just because if you have something like Django, you know Django set up its own foundation, its own nonprofit to kind of handle its money and to kind of help advance that program. So a lot of organizations tend to do that. But if they need that help or assistance, they can ask the PSF to be part of the PSF. Or to have that project. Like you know, since the PSF already found a nonprofit, they can help manage money and donations to direct it that way in the head towards projects. They don't do as much of that but they're not against doing that kind of work either. be interesting

Carlton Gibson 6:31
because a project side like black, like it needs community support, and it's really important that it's becoming more so but it's perhaps doesn't have the scale to set up fundraising of its own

Jeff Triplett 6:42
exactly, but it's also one that gets a lot of eyeballs so people are probably really interested in funding. And so to me, that's like, I you know, my philosophy is when it comes to fundraising that we should make it as easy to let people know give money to these organizations while they have their checkbooks open. So not to plug GitHub but I really like GitHub sponsors because most of the people that I know either their companies use it or they use it for personal projects, and some people already have their wallets open to pay monthly for things. So supporting like the DSF through GitHub sponsorships is easy. The PSF I hope to see in that someday too, and I think maybe I don't know if Black is but I feel like there's some other projects in the Python space that are more and more starting to utilize this and I just think it's easy because you know, you're already paying your monthly bill anyways. Most sponsorship options are you know, pretty affordable for most people it's just a quick win I think but also as well you talk about that credit card already got their wallet open a lot of companies a lot managers will have a discretion restrained you know, below you know, X amount they can just okay, and if you can just put your credit card in and none that's that's a win Yeah, handle that. If we get like get you on a poster and have like a social media thing that would be awesome where you Carlton says, you know discretionary spend your money with

Will Vincent 8:04
your corporate slush fund should go down.

Jeff Triplett 8:06
There's a listener quiz for you send in your entries. So I had a question, which is, since last time you came on up, there's one really big topic that's sort of come up that the two of you have been involved in, which is Django news. Do you start this newsletter? And I don't know, it's fantastic. Every week, it arrives in my inbox on Sunday, and there's more content in it than I can possibly read. I think the backstory as well and I were talking about projects, and I've kind of got this file. Well, I don't know I, I like lots of side projects. And this one that we were talking about would be kind of a fun one to work on, you know, to collaborate on. I also do a lot of link stuff like, I don't know if you've all heard a pinboard but it's just a link sharing website. I bookmark everything, basically. And I know we'll get a pretty big volume of stuff through like awesome Django. And so and I think, you know, Will's perspective of being more focused on People who were, you know, teaching and beginners and new to the community, we've kind of thought it was a good parry and like I've been in the Django community for, I don't know, like 12 years or something. And so we thought, all right, you know, this is a good, quick, easy thing we could do. I have to say, quick, easy, but it's just something that I felt like as a byproduct of links that were already getting and resources were already seen. And so we kind of had this idea to do just a weekly newsletter. And at some point, do you know more of like, an actual web presence or something before it could be neat. And the cool thing was when we were talking about it, essentially, I think it took like 30 minutes to actually do the project, because insane so it's like, we needed a domain name. I can register the domain name. We'll already knew about the site called curated that is kind of like a link blog anyways, newsletter platform. And so one thing I thought was kind of fun was we took the energy to actually do the thing, versus spending months and months to build something to not ever you know, to run out of have energy to actually implement the idea. Yep. And so, you know, this was basically a bunch of new code tools. I have worked on a Django back end for it, which will probably roll out. I don't know, it's been done kind of since December, but every week that I don't take the 20 links and put into it now we have like hundreds and hundreds of links that I need to go and scrape and put back into the site. But functionally, I think it's, it's there.

Will Vincent 10:22
Yeah. So it's a it's a fun, fun project that we both I think independently, we're kind of thinking of and I mean, Jeff is sort of one of my primary resources just on Twitter and other things for new projects. So it's sort of what we're already doing. packaged up

Carlton Gibson 10:37
website. Super, just

Jeff Triplett 10:40
thank you. Thank you for

Will Vincent 10:42
that. Well, there isn't one, you know, because I get it. There's multiple Python weekly ones. There's react ones. And I think that's where I saw curated as one of the tools. There's a couple tools and was like, well, there should be a Django one. And you know, so you'll note some people have noted that so, which you Use is written in Rails. So some people were like, why aren't you doing your site in Django? Which I was sort of sort of like, well, if you could see that, it's says pretty clearly that's curated. It's a hosted thing. But anyway, that was a question that came up. But we resisted that temptation, though Jeff does have this pretty cool, dedicated site, which which we will roll out at some point, which has also been fun to, to see. I've done a couple prs. Not that many, but just to see how Jeff does projects. I mean, that's one of things I really like, is working on stuff that has a real world purpose, but doesn't have all the, like money and stuff involved. It's really nice to have discussions about like, I've asked Jeff, a lot of questions around. Why'd you do it that way? Because that's very educational. For me, I think, for any developer to collaborate on projects like that. So I mean, well, let's maybe in particular, so GitHub actions, Jeff, you're sort of famous in the Django community for your advocacy of GitHub actions, and you're using it in some interesting ways on the non launched not publicly launch site. Do you want to maybe talk about some of those? Sure.

Jeff Triplett 12:05
I like GitHub actions a lot, because it is it. I mean, it's built in GitHub. So if you're already using GitHub, you get ci rolled out for free. It's also super fast. And so I've got pi test and pi test Jango. Every time you commit a pull request, or you merge code, those are going to run, if the bill passes that I'm going to build a Docker, a Docker image, and then I'm going to push that to GitHub package registry package registry is another fun GitHub tool that I don't think a lot of people have used yet. But basically, you can either push your doctor your Docker images to like Docker, I used to use get lab for theirs, but get hubs is just super fast and has good caching. And so you know, we push the image to GitHub, and then I've got a digitalocean setup that pulls for images and anytime it sees a new Docker image, I use a product called Watchtower. It's another free open source tool and it just it's It's like intelligently reloads the running image. And so it manages the containers for us. So it's pretty slick. It only takes like maybe two to five minutes to roll out any updates to the website, which is good enough for what we're doing.

Will Vincent 13:12
Yeah, I should also mention I, you're one of my go to resources on Docker, as well since you use it often and Carlton doesn't help me out there at all. So I have to rely on you for Docker help. Yes, I got a Docker zing. And I hear

Jeff Triplett 13:27
it's the first time I was on the show. So

Carlton Gibson 13:31
here we go. Right. Okay. Okay. So okay, Docker, right. Brilliant, awesome. Love Docker. So you know, I want to run post GIS this the GIS version This on that and Okay, quickly, Docker pool, right? Docker run, do super all of that's just amazing. What I see is a lot of people go jumping through a lot of hoops to turn that into a full containerized deployment environment where it's just That's just not necessary. And I think for my sort of objections on anybody who's doing it and having fun with it brilliant, but I see a lot of beginners, intermediate sites, small sites, using totally inappropriate technology when they, you know, they should just be spinning up a single instance and deploying, you know, nice and simply the old school way.

Jeff Triplett 14:20
So when you say like, the old way was easier. I don't think installing Postgres and managing ports and copying a config file to manage access is easy. And so I think you run into this with every service like, yeah, I get it. And when I take like a Docker compose file, it's gonna have a list of a bunch of services. So maybe like for an easy project. I've got two I've got my Django app, I've got my Postgres back end, or database server. Yeah. And so you know, in some of the ones we use now, like, I may have Redis, I may have celery so I could, you know, maybe I'm managing five to six different services. When I push something into production, I'm not doing a Docker compose up to try to run all those in my virtual machine. And that's where I think it's kind of a pain and you know, people need to realize like Docker compose to me is the shape of what I want my production environment to look like. And it's managing those resources for me locally easier than what, and I can configure stuff myself, I just think it's a pain to keep track of Postgres databases, and different Redis ports, or different Redis database instances as well. So whenever I push something to production with Docker, I'm just, I'm just shipping the image. And then I'm going to be, you know, using, like, from database servers and stuff like that, like, I don't want to home roll my database server, either I want to use a managed server, because there's a lot of you know, I would rather a company who knows what they're doing manage that stuff for me. And I can check in to make sure my, my backups are working. And, you know, and I think that's a mistake. Some people make I compose file, and then they try to do you know, load all the services up, and they're like, this is kind of a pain and you're right, it is. But yeah, I think you get a better level of service if you can use managed services.

Carlton Gibson 15:52
Yeah, no, I mean, like managed database services, just the best money you can possibly spend. It's like, you know what? Ever whatever. dollar the Oh yeah, I could run this, I've already got an instance, I could squeeze my database server on that same instance, I could save myself a buck 20 bucks or 50 bucks, no, spend the money on the Manage database thing and have the backups and have the updates and have the, you know, all of that stuff. That's the best money in the world.

Jeff Triplett 16:19
I think it's worth every penny for sure. But I mean, I see Docker is a packaging tool and a deployment tool. And so it does help for local Dev, you know, sure. But that ability to package it almost reminds me of like, from a video game perspective, like I see a Docker container like you would see going and buying a cartridge or a CD image. You know, like if you buy a game and it's on, I guess they're all DVDs now. But if you buy a game and it's on a DVD server, like if there's like a press Docker image in my mind, and I'm putting it inside the computer, and so however much RAM you want to allocate to it disk space, maybe savegame files if you're using like a PlayStation or something that that's exactly that model fits my brain for how Docker works behind the scenes, but I can add as many resources to it as I want to. So if I'm happy Trouble with my website, I can just double the number of servers or virtual servers it's running on and, and it's just really nice like the first time you might create a server that has a dozen Docker apps on it and you can just knock her out or Docker compose up and run everything. It's just magic. And it's magic in a really good way of like, wow, like I still have servers that are probably seven, eight years old, they're running outdated as Linux is because it's such a pain to try to migrate that stuff. And so that's what sold me on it.

Carlton Gibson 17:27
Yeah, no, I mean, I could see all of that and I see people like yourself using it very successfully. And I have no problem with that at all. And I think great more power to then also see folks who are using it or trying to use it because it's the fashionable thing or because it's got a lot of mind space when they haven't necessarily pin down that that that serves their requirements best and that's you know, you know, I made this topic came up because You know, made a couple of comments that you know how I'm not a massive fan of Docker and I don't, you know, take the instance, take the example about spinning up a, an instance and you say you've got Linux servers that are running outdated Linux, and you haven't yet absolutely, you want to be spinning up new instances, new VMs fresh that fresh versions all the time. But that's not an easy thing to do, either. So this

Jeff Triplett 18:20
is, I don't know, I think it's a lot easier to spin up a new VM in this case, because I mean it for one, I can just go to Digital Ocean or Amazon or anybody and I can just run a Docker instance, like that is a thing that takes 30 seconds to spin up. And once I add my package registry to it, which again, you can do with Ansible, or are saying or there's many tools to do it. And once I have my images, I can just use a config file and Docker compose up on that, and I can run a dozen servers. It's that easy. I don't have to install anything. I mean, you need to install a firewall for one. So you need to have a little bit of security minded you have to do that anyway.

Carlton Gibson 18:56
Yeah, no, I mean, if you can fake like so take some time. Use the example of Amazon. So on AWS, you spin up your things with Ansible exactly the same, but you have to configure the firewall, you have to, you know, set up your virtual private cloud so that you, you know, your access points are not accessible to the wider internet and that the relationship between your service all of that stuff's the same whether you're using Docker to actually run your processes or not, you know, whether it's containerized, or, you know,

Jeff Triplett 19:26
they just have to set up Docker, you don't have to set up, you know, you don't have to set up everything else on top of that you would have had this setup before. So I don't know, I guess it's, it's, it's easy to configure. Well, it's not easy. It's straightforward to configure Docker, and I feel like it's fear hoops to jump through then trying to set up Python with Python path like, I know we'll have a lot of headaches about this. And you've got sites dedicated to basically Python path and different OSS and stuff. There are certain versions of Python that you can't run on modern OSS, and so You can do that with Docker through the magic of pulling the container running it down, which it's not magic at all. It's, it's pretty proven technology. And so that's the thing is like, I know, for a long period of time, the good old way I was really restricted to what kind of software and libraries I could run on my servers because it wasn't supported by Ubuntu, or it wasn't supported by Debian. And that was a really bad place to be like, go grab this TensorFlow library because you want to work on AI and you just done something with Jupiter notebooks. Now you want to put it on your server. Oops, you can't do it. Because, you know, l XML or some library you need isn't supported on it, right?

Carlton Gibson 20:35
Yeah, no, that's, that's where it really shines, right is where you've got some crazy dependency set. And this is why the example I use is GIS. Because you know, GIS is, it's great, it's lovely, but the different GDL library and there's certainly other and you try and know Docker that will put that in Docker because it's perfect and it pulls it in it can, you know, wraps up all the dependencies lovely. But again, I come back to Wired Use it for my base app and the deployments is because you know, to deploy a standard Django app into a known environment is not a difficult thing. Like, you've got a base VM that has that base environment in place, and keep that that base image updated and refresh that on an ongoing basis. We're saying, as you're building Docker files, and then to just put your application bundle onto the server is not that was never the difficult thing, you know, you can just sync it or whatever. But then, yeah, as soon as you like, Alright, I've got to run this Java based thing I know, I'm not gonna install that then I'm not gonna install that locally, because I don't want to put the libraries in place. I'm just gonna use Docker in that circumstance. Yes, sir. That's where I do use Docker. And that's why I do like it.

Jeff Triplett 21:44
Well, I think it gives you a lot of things for free to because of like, being able to monitor CPU being able to monitor RAM usage and allocation. And I think if anything, if all Docker really accomplished was that packaging deployment stuff, that's fine, but I think it gets everybody talking about the same way. To deploy things in, you know, because I've worked with hundreds of clients, and doctors, the only thing I've seen clients consistently do in similar ways, because you have somebody who learned to SCP files or sync files, or tar them and all kinds of weird, you know, and there's dozens of libraries in Python, even in Ruby to deploy stuff. And so it's kind of it's kind of the Wild West, honestly, when it comes to deploying stuff before. And now at least with Docker, it's cool, you have a registry somewhere, I need to be able to get to that push and pull images from it. And so I think it makes I think it makes DevOps quite a bit easier. But and, you know, to your credit, well, as soon as something else comes out, that's better than Docker that is stable and works. I have no love lost with technology when it comes to, you know, the way this stuff evolves and moves, so, yeah, so I may have a Docker hater shirt on Sunday, but I think it's gonna stay for a while, but this is I mean, this isn't you. I'm not pushing that on you. So

Carlton Gibson 22:57
I don't have the Docker hadisha. I like I just Just like I don't see the pool, I don't see that you have to containerize every project every every

Will Vincent 23:09
everything you don't Carlton and I think especially if you if you know, I mean, what is DevOps? You learn one way to do it, then you go, I don't look under that rock. That's how many of us who are non DevOps people feel. And you know, you have your way of doing it, Carlton, if someone already has a way of doing it, yeah, if you can avoid Docker, it's it's a learning curve. If you're new to all this, and you've never deployed before, I think Docker is as easy and as future proof as any other VM approach, which is sort of more why I advocated and also, I've had to use it professionally. So yeah, it's good to have nuance on this. And it's, it's fun to have something that needle you on.

Carlton Gibson 23:45
Yeah, no, I mean,

Jeff Triplett 23:49
I could have actions apart. I've had really good luck to copy and pasting configs from one repo to another, I guess, with GitHub actions, it's workflows and jobs. So I've had really good luck copying those jobs and work For close, and most of the time, they just work. I have never had that success with Ansible or salt or whatever the Ruby thing was before that. So and I like kind of this config bait. I know there's a lot of basically these projects use yamo. And there's a lot of weird gambel hate in the Python world, which is kind of funny to me because a lot of people came to Python because they liked the tab, eliminate the Live on the Air, the eliminations. And it's funny going back to the YAML and seen Python people complain about the whitespace and stuff is, it's absurd, but

Will Vincent 24:34
Well, what does that phrase you know, irony is a hat worn on actually worn in two feet or something. What is it, Carlton? It's a British phrase. Maybe it's hypocrisy. hypocrisy is a shoe worn on two feet or knees a shoe worn worn on two feet.

Carlton Gibson 24:49
I don't know that.

Will Vincent 24:51
You don't know anything. It's like Churchill or one of those, one of those famous sprinkles

Carlton Gibson 24:55
so just don't get up. Jeff, I have been meaning to sort of ping you and say, Well, you know, when you're writing up your, you know, your Django Django, Django notes guide to GitHub actions.

Jeff Triplett 25:10
Ah, you know, I would love to write one up. I think we've had a couple of I think we've had a couple of links in Django news. Yeah, there were a couple. In the recent episodes, there was a couple of,

Will Vincent 25:19
it's so tough because

Jeff Triplett 25:20
so the segue I guess, into death, so there's not going to be an in person Django con us this year. And so as soon as I can get off my dance card, closing the conference for this year, and getting through all the contract stuff, then I have time to write and have time to do stuff that you know, with PSF stuff as well. And I don't know I've got a lot on my plate. So writing is the one thing that I want to do and strive to do more of, but I just don't have as many. I don't have as much time to do that. I would love to though, will ever wants to do one. I can give them notes and stuff and but

Carlton Gibson 25:53
Well, perhaps you could perhaps you could put just a few key links and the awesome Django purchase already there.

Will Vincent 25:59
Yeah, that's awesome. Talking about awesome Jango. So maybe this is relevant to anyone who uses awesome repos or wants to start their own. So Jeff recently came aboard to help me because I was complaining to him about running an awesome repo. Because I think there is this pattern where you, you start one, it's fun, you get a lot of stars, because people like the awesome ones, but then you get a lot of prs. And a lot of them are kind of questionable. You know, maybe it's someone plugging their own package or a company, or it's, you know, it bloats out and you get burned out on it, because it's something you do for free. And so I was feeling that. And usually what happens is someone lets it drop after two, three years, and then someone else comes in with a new, awesome, whatever repo, so I was feeling a bit of that pain and Jeff offered to come in and help me out. So Jeff, how is it joining the awesome Jango repo?

Jeff Triplett 26:48
Oh, I think it was neat. I like seeing projects like this in Django because I think it's a good way to point people and I find it to be really useful from a I need a tool that does XYZ maybe I can't think of one or two Maybe I've used five over the course of so many years, it's nice to go back and look at them and have one resource to look and see, like, this has been maintained or this hasn't been maintained. And there's, you know, there's neat new, you know, people who work on the projects and stuff may come and you know, want to talk about their project on it. So even if a PR doesn't make it, I find it to be, you know, pretty valuable.

Will Vincent 27:20
Yeah, exactly. Some a number of the early Django news packages were ones that people would ping me about for awesome Django and, you know, if they weren't, they didn't have a lot of stars yet or something or they weren't there. I would say, Well, maybe not yet, but I wanted to plug them. But it is that curation is the problem you want to curate. It's a place to look for stuff. I mean, Django packages, which is part of the Django Software Foundation now is a great resource and does some sort of ranking, but it's not as curated as awesome Django, though the con is that awesome. Django is, whatever you and I feel is a good choice, which is nice to have that perspective, but you know, just perspectives.

Jeff Triplett 28:01
I think people like curated though, I think that's more I think that's what we're missing because Django packages is really good. But it is a firehose and there you know, every I think the point of sites like that is to try to catalog every possible option in the Django space. Where awesome Django, I wouldn't call a project, awesome if I were creating this movement, but no one asked me, but it is what it is, right? But it's, you know, being curated, being the cream of the crop, I think is is about has value to it.

Will Vincent 28:29
And I think too, I was remembering part of why I created it initially. And actually, there was one before that had gone dead because the maintainer probably got burned out, is that I'm asked a lot, I get a lot of reader emails, and a lot of times readers will ask me, What package should I use? Or is this a good one? And so as sort of a way I can point people to this and say this is, as of now what seems like a good option. And you know, and then there's some gray areas. So for example, for a CMS like Just yesterday, someone emailed me saying, I, you know, want to do a CMS, I'm looking at Django, CMS. What do you think? And now's a chance for me to say, well, django CMS is popular, it's been around, you might also look at wagtail. You know, I don't have an answer for you. But I can make a recommendation and give a sense of, you know, curation, where those are probably the top two that will come to mind for me. So if I'm just remembering, that's part of why doing a repo made sense is because I get asked questions a lot about stuff. So it's a way to answer it and have people make suggestions, too.

Jeff Triplett 29:33
One thing I noticed too, on the project, which is, yeah, so one of the more uncomfortable things is people try to use it as a promotion tool for their commercial stuff. And so that's one thing I didn't really think about before you know, you gave me rights to you know, approve or approve whatever make sure yeah,

Will Vincent 29:51
well, the content I mean, in some ways I view is sorry, called

Carlton Gibson 29:56
go when you get that on, like the Django Doc's themselves, you know, they'd be happy. PR come in for like, some commercial projects. And you're like, we can't really accept that. Sorry.

Will Vincent 30:06
Yeah, I was gonna say there's, in some ways I view the awesome Jenga repo is it's a link to resources like the forum and, and, you know, maybe the podcast that people don't know about. But the content piece is the one that's I'm not as sure of because obviously, I have a self interest. So I try not to make that, you know, too much the will show but there's a lot of there's a lot of Django content coming out, which is great. There's a lot of Udemy courses, there's a lot of books. I have a you know, a I have opinions on some of those and I don't want to be negative to anyone who's done work. So I don't really want to be negative in public and be I don't have time to review every you know, Udemy course and there's quite a lot of them. So that's the part where I'm not as sure going forward. How we juggle that because you know, third party package we can play around with or talk to people and get a sense but content is content is harder. Though at the same time, yeah, you want to know what's what are the best video resources? I don't know if that's as answerable a question and it's, again, it's slightly not conflicted for me, but I'm aware that I'm not doing awesome Django just to plug my stuff. But, you know, I think it's okay. So it should be on there. If there is a content section. That's my soliloquy on that.

Carlton Gibson 31:24
Okay, so here's my great question about Docker while I've got you on Jeff. So I'm sort of crazy man, I'll either just use a boon to or, you know, like the Python base Docker image, I shouldn't be using that right. I should be using something better, or slimmer, or smaller, or what should How should I build my Docker images? And what's this build kit thing I keep hearing about? What's that? So there's two question assertions. There's two questions.

Jeff Triplett 31:50
I think the Python base image is fine. I think that I think the base image is maybe based on Alpine and so when you when you use the Python base image, you have options like Python base image colon the version number or maybe it's a, you know, dash version number. So Alpine used to be kind of the popular image to use because it's very, very small by default. And then anything you install on top of that you have to install like gcc and a bunch of other options just to get anything I feel like it's useful on. And so Alpine takes forever because it has to, you know, it has to pull down a full compiled chain and the image so Alpine is great for I want to just run something in Alpine that does what I want already. When you have to install everything you're adding time on how long it takes to build your images, and you're adding a bunch of extra, you know, your image is going to bloat you can start with Buster and Buster slim and your your final output is going to take less time to build your image and it's going to be smaller. And so Buster is the, I guess bigger image and I believe it's Debian based, and so I'll normally use what's called multistage builds and Docker. It's where you have one stage where humans Literally the world and then you will install like your PIP dependencies and your Python packages and stuff. And then you have like another layer another stage and from that stage then I'll go and copy everything that I compiled from the previous stage. And then that will be and I'll base that on Buster slim and then that will be were actually run my development tools are my my production image. And so there's a lot of value to kind of knowing what your image options are and what the final sizes are. A lot of this works better from a go world because you have like a compiler, you know, SeaWorld or something where you compile everything into one binary because it's the final binary is just to Meg's then you can take like an Alpine or something, compile everything and then copy that that executable or that binary file into that image and just run it and you have really small images. Yeah, Python doesn't compile down. So it is what it is. So you're always going to have you know 3040 Meg's of libraries and stuff that have to copy and use and then build kit is kind of the where, and I'm a little confused by it myself. But I know at one point Docker was going through this existential crisis and there's Docker and there's mobi. And I think mobi is kind of the open source. What the company when they decided to not do commercial stuff, or maybe they've I don't know, anyways, there's too confusing companies. mobi, I think is the commercial interest now, or maybe that's the open source. But they they have a new project called build kit. And that basically is some experimental features. And it's like trying out the new features that are going to be in the release of Docker at some point. I guess in the Django world. It's kind of like the minor additions are like the Django three one and the three Oh, but when you know, the LTS version comes out, and all those features will be final. But Docker kind of does their own thing. So build kits kind of nice right now, because there's a few experimental features will let you run. You can build your images in a parallel mode, where it'll pull all the image separately, and so it just it speeds up your image, creations but worth worth investigating. It is Absolutely, because it's just like one environment variable you enable in it speeds your builds up by a lot. And so I like quick wins like that. Yeah. Sounds good. If Jango did that, that would be awesome. Double the performance. All right. Well, there's a secret. I didn't tell you.

Will Vincent 35:16
As we conclude, I did want to ask, you've written a number of interesting, I think, interesting posts on your personal site. And maybe we could call out. So you have a Django release cycle graphic for one that you did that I think is helpful to people because it is also a question I'm often asked like, what's up with Django is release cycle, and you built this little visualization tool for it?

Jeff Triplett 35:37
Yeah, this is based on Dustin Ingram did one for Python release cycles. And I think the Django project actually has a pretty decent one now too, but I think it didn't capture maybe as much data or something. There was some issues that it didn't quite do that I was trying to scratch at the time. But yeah, I think it's nice to see because I think it's really confusing when people say like, oh, here's Django 3.1 is going to drop but it's only going to be Supported ish for what? Like nine months or a year?

Carlton Gibson 36:02
Yeah. And then yeah, you've got the duration here. Like looks if you hover, which is nice mentoring support for nine months extended support for another nine months. So the if you if you're if you're jumping from minor version to minor version you've got ignoring the LTS is you've got 18 months, right? And then it's its end of life. So they, you know, if you, there's two ways of going about it, you've got to either update every nine months, and you've got to be committed to that. And you know, it's easy enough these days. Easy enough, we say, but it is, you know, it's, it's as easy as it's ever been these days. But you've got to be on that update train, you've got to commit to it or you can be on the LTS is where you get three years, you get the double, you get twice as well.

Jeff Triplett 36:41
So one thing I keep getting asked Carlton is, I know a number of authors. And I guess one complaint is how quickly Django moves. To which I say, you know, write more books. That's more book sales. Yeah. But the interesting thing I had never really thought of is they said from a book perspective, it's easier if Like Django is LTS was maybe the 3.0. And then the feature branch has come on top of that has as Django core ever talked about, you know that this cadence and doesn't make sense to something like that.

Carlton Gibson 37:12
Okay, so I don't know. I like the current release cycle. Carlton just works here. Yeah, I'm just jealous I sweep the floor. But the the I mean, that kind of. Okay, so the current release schedule was set right back around the 1.8 days. I think I need to go and look it up. But the idea was that the LTS is would be if you if you can run without warning on one LTS, you should be able to update to the next LTS with only minor changes, you know, like you might need to some small copy and paste adjustments or that kind of thing. And then the on top of that the API's would be stable so that we'd have the depreciations so that, you know if a feature was going to be removed, you'd have time to update that and you'd get the proper warning. I don't know why the point two ends up being the LTS, and then that was just what was decided back in the day when they were looking at Well, we'll make, you know, we'll make this number 2.0. And this number, then, three 3.0.

Jeff Triplett 38:17
I thought it was a really interesting point, because I can see where like, if you target, you know, a course or a book for like, 3.2. That's LTS, but then immediately four comes out, then it's kind of like, the old, which is just insane. It's it's a perspective. I didn't I never had that perception before until, you know,

Will Vincent 38:36
talking to us. This isn't just me talking to you, by the way. This is other authors as well.

Jeff Triplett 38:40
Yeah. I mean, it's 100% will actually But no, actually, this

Will Vincent 38:46
is I mean, it is the challenge for books for any framework of any kind is it framework changed a lot more quickly. And so it's hard to do in book form.

Jeff Triplett 38:56
I mean, that was just interesting.

Carlton Gibson 38:58
Yeah, it is it. I mean, maybe Someone could put that to the mailing list and say, Well, hey, can we just adjust the the numbering system to make it? You know, more marketing friendly? But the interesting thing for me is like, is it? Does it really change? I mean, from a marketing side, obviously, you Everyone wants to buy the book, which is for the latest version, right? And that's if your book is for 2.2. And now it's 3.0. It's out of date. But Django doesn't change that much anymore, or does it? I mean, you know, if your will if you're rewriting two tours, it's Yeah,

Will Vincent 39:31
so I would say it changes five to 10%, which doesn't matter if you already know Django, but if you're new to Django, it will stop you dead in your tracks. So it's, I mean, I've come up, tried to adopt the mindset of it's a positive for those of us who can do updates that, you know, it's better, it's better marketing, I guess, to have an update book, though. It's a lot of work. It's just confusing for people. I mean, it's confusing because Python two to three, they kind of go oh is Django 237 thing and changing the major release versions, often, which is the plan going forward? People as you know, assume that there's something major every time when it's sort of the cadence. I mean, we've talked about it, hopefully in this podcast to educate people. But I know it's the difference between someone who's brand new and someone who's already in the in the Django world. It's not. I mean, it's it's a pretty it's as smooth transition as any framework I've worked with, but it sounds scary. And it will trip up a beginner. Yeah.

Jeff Triplett 40:27
Well, I think when you go to the website to you know, if you're new to Django, you go to the website and you go to download Django or see what you need to do. And if you see like, oh, Django four oh, is the latest version that I don't think the LTS is and I need to relook at this. And maybe it's not as bad but I think that definitely trips people up but they go to try to find the for book because four is out. And all they see is a three two book. It just feels like a psychological difference that we're not doing new people favors on that was less obvious to me. Yeah, until you know a couple months ago,

Carlton Gibson 40:57
it might be worth a considered approach to the mailing list to explain that and to discuss what what might be a solution? Because, you know, I think developers on in the best of intentions aren't thinking necessarily about that kind of problem.

Will Vincent 41:13
Yeah, I think it is. It does matter for people new to Django. I do. I would certainly agree that separate from the author perspective, that would be more friendly, but it's not Yeah, the main concern of core Django developers to think separately

Carlton Gibson 41:26
now, we do think about Yeah, like when so there's a, there's a discussion on the mailing list at the moment to change requests, get requests post to something more pythonic to more, you know, like maybe query params for instance, for request dot get. And I'm a bit like, Whoa, that's a big change because for as long as Django has been around like that, those you know, capitalize GET and POST attributes on the request object they've been, they've been the same and Okay, they'd work the same. It's still be query decks, and it's still but If those names were to change then all of those tutorials back for the history of the project would just kind of need updating will be updated. And it's like Ah, that's a big that's a it might be nicer afterwards but I'm a bit scared. It's

Jeff Triplett 42:14
like a seven to eight year cycle the you know, yeah, it's fine but yeah, that's that's all. It is weird cuz it's like request get get, but it's like shouty case get or something.

Carlton Gibson 42:24

Will Vincent 42:26
I think Jacob weighed in, right. I mean, they took that from the PHP world. I think it was some JSON with Simon. Okay. One of the Yeah. One of the three. Simon mentioned that last thing maybe, Jeff, I want to ask so you have your morning routine written January 20 on your website, which looks very lovely and leisurely about dropping your son off at preschool and I was just curious how your productivity has been the last couple months workwise What's your morning routine these days?

Jeff Triplett 42:56
So my son just started daycare again two weeks ago, and so It's closer to that again. But yeah, it was kind of chaos there for a while, I've got a two and a half year old who adjusted very well to life in this COVID-19 times. But yeah, I would be my partner eyes, you know, split our time because we both have to work. And so I would have a two year old for the first half of my day through about naptime. And so he pretty much would dictate the schedule. So he was a pretty good coworker, though. So he's got a little desk setup in here, and he would watch, you know, YouTube, and we'd play and, you know, between, like breakfast and lunch and stuff. I mean, it was kind of chaos. But it was a good two months, though, that I'm glad that I have just from a I mean, I wish the world wouldn't be, you know, falling apart. Like it's been the last two, three months, but I'm grateful to have the positive side of, you know, getting to spend that extra four or five hours a day with my son for you know, two, three months. So, yeah, it's and you all I guess everybody here is a parent. So everybody has had some impacts and stuff. But I did think about redoing that blog post or just posting an update just from the the COVID life but I do have a draft of it. I just have yet to publish it.

Will Vincent 44:09
Can we say you have like 100 drafts of blog

Jeff Triplett 44:12
posts, I probably have. I have 200 At least that's a it's a problem. My problem too is I'm dyslexic. And so depending upon what, like, for me, certain writing things are really easy for me. And some of them like the first year I did Django con us when it was a lot of me writing all the blog posts and the tweets, I would obsess over that stuff for hours. I mean, some of it, I would just do Quick, quick drafts in the morning, and it would take me a week or two of fiddling hundreds of times. And so part of that's my dyslexia, and it's just the spectrum and it's a range. So some days the words are there. The next day, I look at it and I'm like what in the world that I write. So I've used a couple of tools. One of them I'm not super happy with so I won't plug but there's some dyslexic fonts and there's some you know, random tools that are helpful for me. But I never really know when I'm in and other than writing just gets super, super frustrating. So I've tried like, recording myself from audio, sometimes the dyslexia kind of like because mine isn't so much. Mine is letters and words. But it also, you know, hits like communication for me verbally as well sometimes. So, I think it sounds like a starter for me when it's kind of at its worst. Yeah.

Carlton Gibson 45:24
It's difficult because the ideas come, but then how can you turn those into something which you can, you know, put out there? It's, you know, is it video? Is it audio? Is it writing? Is it no sketches like Judi Evans, does he some awesome fuzziness?

Will Vincent 45:43
Yeah, her

Jeff Triplett 45:44
designs are awesome. Yeah, that just, you know, they're just little stick figures and super. And if I could do you know, GitHub actions to stick figures, I would love to do that. Yeah.

Will Vincent 45:53
Where's the tooling for? You need to build a static site generator before you can write it?

Jeff Triplett 45:58
Right. Exactly. So, you know, and I, you know, circling way back to the beginning, when we talked about Django news and stuff. I you know, if people only get one takeaway from the show, I think it's that like, we're in the Django world we obviously like our hammer is Django, we'd like to solve things with Django and Python. But you know, don't don't devalue if you take your time and put it into using tools that already exists. So you can just get into your idea and communicate your idea that goes a lot further than spending like 10 years rewriting your blog engine like I know so many people do like it's absurd how many people tell me that they've been writing their own blog for five years? It's like just go use Jekyll go find a Python static generator go use Jenkins CMS use wagtail you know, use a tool and get to your idea, you know, publish

Carlton Gibson 46:44
Yes, then not invented here. thing is it's easier to build your own from scratch from tick sand from the beach and cast it into silicon than it is to read the documentation on Jekyll

Will Vincent 46:55
cross nation thing. I think you go from the world of unfamiliar to something familiar. Even if it's challenging,

Jeff Triplett 47:02
but at least you'll have a bunch of content when you're finally ready to write your own. And you'll know how to write it. So

Carlton Gibson 47:08
congratulations on using a hosted service to

Will Vincent 47:11
check. Yeah, it's a big step. Yeah. Yeah.

Jeff Triplett 47:16
For years for Django con two, and some people got really mad, and I just couldn't. To me, it was absurd. Because we started using some of the Django con us websites, we were using just GitHub Pages, and that uses Jekyll. And so there was a weird kind of series of tweets, or maybe people on Reddit who I don't read or something were like, just it was, it wasn't a ton of vitriol hate, but it was a little bit. And I'm like, you obviously don't know, you know, a lot of the people who help with conferences, they're still new to this stuff and the barrier of using get and that barrier of using Django. And I got really kind of frustrated before because I would see text on it, you know, like we'd see a typo. And then with Django by default, nothing against Django, but you know, you have all these great models, all these great apps. But when you try to find text, you have to go and search five or six different applications to find that typo, then you still have to come back to get hub maybe or get and then get grabbed to try to find that typo. So it could be in a template, it could be in JavaScript, it could be who knows where it's buried at. And so when we made the decision to just use GitHub Pages, it meant that anybody with a web browser without using get could just go and make changes there. And it just, I mean, we have like hundreds and hundreds of contributions every year from it. And even like when we'd let speakers know they're speaking, we can send you a link to your actual you know, presentation. And you can go and submit to change your bio to be what you want to upload new photos and stuff.

Will Vincent 48:41
Yeah, I did. I did that it was really easy from that perspective. And I wouldn't have yet waded through a complex Django thing to do that, probably.

Jeff Triplett 48:49
And if somebody really smart out there, which I'm sure there's a lot of super smart people listening to the podcast. If you could figure out a better static story for Django. I think that's the one thing that Django could really use. is, you know, let's make Django work better with the jackals and some of the static generators in the world because it's just another output format just like, you know, HTML or feeds or podcasts or any of those formats. Do you want to consume a folder of markdown files with YAML frontmatter and turn it into a blog page, right? or series of books? Exactly. Or even, you know, outputting from a Django thing to that stuff. I think reading and writing from front matters of should be a solvable problem.

Will Vincent 49:29
Well, there is a project with it, which actually I'm on the core team though I should get myself off because I haven't done much in a long time called lector le k TLR by the Creator. I'm blanking on his name, that where he did this, he built his own static site generator except he's quite brilliant and prolific and he shipped it and it is a Python base static generator that is basically that in Pelican but Lecter is quite a bit simpler in And people are still working out. I think there's a, I still get the emails from the team. So, you know, uses Jinja two for templating since he wrote that as well. So yeah, I don't I'm not aware of a Django version I don't I don't really know if there should be a Python one I find Pelican a bit complicated and lecture I really liked when I was using it, but I just defaulted to Jekyll out of laziness.

Jeff Triplett 50:24
I'd like to elector have the admin, so it had an actual GUI you could use, which I think is nice to be able to have, like, you know, form, you know, data structured data in ways that's the one thing I know that's a little intimidating for people when it comes to like Jekyll and frontmatter is, you know, sometimes to to render your templates, you need data to be in certain formats and places and stuff. So I think Django solves a lot of these problems to us, for smart people is to take the DRF I would love to see DRF be part of Jango which you can edit out of here, but no, I think

Carlton Gibson 50:58
that's my wishlist. I think eventually that's eventually has got to come. Right. But it's so Django 3.1. I think it's 3.1. It might be 3.0, but introduces the first sort of steps towards content negotiation in the, in the request. So we've got the Accept method now where you can then it will interrogate the request and tell you, you know, does it except, you know, this particular language or this particular, you know, response type or whatever. And that's the first sort of stage towards content negotiation, which is what DRF really brings it, right. Okay, the serializes. But that whole multiple renders multiple passes thing, if we could, you know, pull some of that into the core, I think it would be a good project, but that's going to be overtime, because DRF does what it does very well, and there's no, there's no incentive to port it.

Jeff Triplett 51:47
Yeah, I just think there's a lot of wins that both frameworks have and I really appreciate, you know, work you've done, you know, on DRF, too, and as well as Django. And then Tom Christie has some really interesting experiments like is a type system Something is the Yeah, I'm going to pull serializers and forms into one thing like I've used it on. So

Transcribed by