Django Chat

High Performance Django - Peter Baumgartner

Episode Summary

Peter is the founder of Lincoln Loop, author of High Performance Django, and creator of the new hosting solution AppPack. We discuss his long history with Django and why deployments are so challenging.

Episode Notes

Support the Show

This podcast is a labor of love and does not have any ads or sponsors. To support the show, please consider recommending a book from LearnDjango.com, signing up for the free weekly Django News newsletter, or learning more about Button a simpler deployment story for Django.

Episode Transcription

Carlton Gibson 0:06
Hi, welcome to another episode of Django chat fortnightly podcast on the Django web framework. I'm Carlton Gibson joined as ever by Will Vincent. Hello Will!

Will Vincent 0:13
Hi, Carlton. Hello.

Carlton Gibson 0:15
And this week we've got Pete Baumgartner with us from Lincoln loop. Hello, Pete, thank you for coming on the show. Hello. Yeah.

Peter Baumgartner 0:20
Thanks for having me.

Carlton Gibson 0:21
Thanks for coming on.

Will Vincent 0:22
So,

Carlton Gibson 0:23
Pete, we got so much to talk about, we talk about Lincoln loop. We've talked about things like high performance, Django deployment, topics like that. But we always ask how did you get started? And how did you find Django? What's your backstory? Yeah,

Peter Baumgartner 0:35
yeah, yeah. So let's see, I my, I'll try to keep it short. But graduated college with a computer science degree. right at the beginning of the.com, bust the original.com, bust in the 2000s. Two to the mountains, and was a ski bum for a couple of years. And then I got into doing some computer stuff, like computer repair, and that kind of small business networking stuff. And from that, folks, there was a really, there's somebody doing kind of website and emails, email hosting in our town that would go on vacation, and I think they ran a server out of the closet or something, and the server would die, and people wouldn't have an email for two weeks while he was on vacation. And so, you know, people started asking us, Hey, can you help us out with your email and kind of figured out email and then with that came websites, and so picked up PHP and WordPress and got into that and kind of painted myself into a corner a couple of times trying to build WordPress plugins for things that should have been much more than that and had tried, you know, picked up Ruby on Rails and all that and, and eventually came to Django. And that was, like, that was running off of the subversion trunk days pre. Yeah. 3.96. Okay, cuz,

Carlton Gibson 2:16
cuz like, I, I've been using Django for a long time, you know, like, version, one. 1.1. point one, something around that that kind of time. And you've always been on the landscape. You know, Lincoln loop was one of the first agencies that I knew about that were blogging about Django and using it, and

Peter Baumgartner 2:32
yeah, yeah, it worked out really well. And, you know, I was just blogging about my experience, you know, learning the framework and using it and all that. And it turned out the things that were stumbling blocks, for me, were stumbling blocks for lots of other people. So, you know, got some traction on that and did a kind of a lightning talk at, I think it was the first Django con, it was at Google, and the Mountain View campus, on some, like customizations to the admin I had done, which really were not that like, was kind of like some, you know, injecting some CSS and, and stuff. And people were like, you know, Mind blown, like, it was that it was just early days, you know, people hadn't kind of thought of it yet. So, yeah, just really feel like, in the right place at the right time type situation, you know,

Will Vincent 3:23
do you recall why Django over, you know, rails, especially at the time,

Peter Baumgartner 3:29
the documentation was, was a big deal for me. And I think the I liked pythons, you know, people say Python, there's there should be, you know, kind of one right way to do it. And, and that meant that that worked in my head better than where I think Ruby is, like, there's a lot of different ways to do it. And, you know, use your creativity and, and all that, I think that was harder for me to kind of wrap my head around. So yeah, but the documentation definitely was huge as well,

Will Vincent 3:59
that makes sense. Well, because it's easy to think about now versus back then. Whereas now Python is much more broadly used in Ruby, Ruby is pretty much predominantly used with rails, but back then it was, you know, not so much the case. I mean, it was probably a number of years later, I think, was 2012, when I was deciding which of the two to play around with, and rails had better beginner materials. And there were more I was in San Francisco at the time, more startups using it, but I just picked Django for some reason, I think, because I just knew I had to pick one and go deep on that rather than bouncing around. Whereas now I think it's hopefully with my stuff. And others, there's more content for Django, beginners, but it definitely felt like eight years ago, like your average Django person was coming in with, you know, if not a CS degree knowledge of Python. Whereas if you were, you know, boot camps were rails like, I think all the boot camps now were pure JavaScript pretty much but they still basically don't do Django at all. They if they do have batteries included. It's rails.

Peter Baumgartner 4:57
Yes. I think I kind of part of the reason like and loop started was I think I kind of saw, like, there was a lot of rails specific agencies out there at the time, people focusing on it. And I saw, you know, Django seemed like it was a couple years behind rails and figured, you know, hey, maybe you can get in now and beat the crowd.

Will Vincent 5:23
Can you talk about to Lincoln loop, so building out that agency, and you know, the type of client work you've you've done over the years and how that's developed?

Peter Baumgartner 5:30
Yeah, so started, you know, like, I like I said, I was doing business with kind of his small business networking and things like that, and kind of dabbled in the website stuff. And then I was working for another company and got more interested in the website stuff and sort of spun out a little business there. And eventually, we just kind of didn't see eye to eye anymore. They saw it as kind of a value add on for their services. And I was more interested in building kind of a standalone agency. So we parted ways. But at the time, all my clients were local, I was just freelancing. Most You know, a lot of website hosting stuff and supporting, you know, people setting up Microsoft Outlook for their emails and all that. And I got involved with a couple of real estate companies here and was kind of frustrated with the state of the world of real estate search. So that's, that was kind of my first big project, I built in Django and built a bunch of tooling around that actually had a little product that I was kind of operating for a while. And, and that was where I started blogging about it and, and kind of shifted gears of my company from being you know, we build kind of brochure WordPress sites for local businesses to, we're focused on Django and all that. And, honestly, like, the phone just started ringing, it was kind of shocking to me. I remember, like, one day, I got a, I mean, I don't think people were calling me directly, but you know, getting an email. And, you know, got an email from National Geographic, and they're like, you know, hey, we're looking at moving to Django, and, you know, I'm, like, working out of a spare bedroom at the time, you know, all by myself. And yeah, I was like, yeah, you know, and so, pretty quickly had more business than I could handle on my own. And at the time, it was really easy to find Django developers that wanted to port professionally, people were working with Django, and there's, you know, personal projects and on the side, but there wasn't a whole lot of professional opportunity around it. So I was able to kind of just go through the open source community and start picking people out like, hey, I've seen you, you know, I've used some of your software, do you want to work on Django stuff? And they're like, yeah, great, I'd love to I'm, you know, doing PHP stuff, or working in plone, or whatever. So people kind of jumped at the opportunity.

Carlton Gibson 8:17
But that's such a good story about like, you know, from the sort of big business perspective of finding a niche, because, you know, perhaps a year or two in front of where I was intended timeline, but that I had that same phenomenon of living in a world where it was a WordPress and, you know, setting up emails and managing domains. And it's kind of all it was really hard to make a living in that in that world, because it was all Low, low value, low margin difficult stuff, and then finding the way into, for me, it was native app development. But you know, as well as Django, you know, I did build apps and then use Django for the back end, but finding the way into a nishio. It's like, actually, there's loads of air, there's loads of error around and then there's lots of clients who are desperate and so all of a sudden, now this is a really sustainable

Peter Baumgartner 9:08
definitely been cut, you know, kind of peaks and valleys. And it was a long time before looking for work made the leap to paying people full time, it was always contract work and per project. And then I kind of looked around and, you know, we all realize like, I've basically been paying full time for three years, you know, because there hasn't been a gap. So yeah,

Carlton Gibson 9:35
then making that transition, but that transition that must have come from ongoing business, like maintenance of ongoing projects and things right, so you've got regular clients that you're gonna pay

Peter Baumgartner 9:46
there was not as much then like, we I think we have more of it now. It was more kind of back to back projects, and that was stressful. Because you don't know when it's gonna be Next one's going to do because

Carlton Gibson 10:01
if it stops should, yeah, I remember there was an agency in Barcelona that won all sorts of awards. They were doing like Facebook's app, and they won, you know, they up on stages and all the big things. And, you know, they were like, wow, everyone was watching them. And all of a sudden, they just disappeared, because I don't know, the work dried up for three months. And that 50 developers on that terrifies

Peter Baumgartner 10:22
me that for a, you know, a few years in the beginning. And I remember, you know, as we're growing like, I had a line of credit with the bank, that was a camera attached to our house or a car or something. And, like, completely draining it every month to cover paying people while I waiting for, you know, checks to come in from, we were profitable, but just the kind of cash flow wasn't there yet. We didn't have a, you know, buffer. And yeah, that was glad we're not there anymore. It's stressful.

Carlton Gibson 11:03
Yeah, yeah. No, but I mean, interesting to hear, you know, from a business point of view, like your story. And it's, you know,

Will Vincent 11:10
I think there's three main things to talk about your highperformance, Django book deployments, and then app pack. And maybe I'll put it to you with how do you how do you string those together? Because we've sort of been circling around it. But deployments and maintaining a site anywhere, but especially with Django is non trivial. Yeah. And you've done a lot of work on this.

Peter Baumgartner 11:29
Yeah. So I think one of the, one of the challenges of being, you know, I don't want to say like a front runner, but like, earlier in the game, some of these stories weren't as well defined, as, you know, how do you set up a site that's, you know, getting millions of page views a day and all that. So we definitely did some learning by trial and error. And there was some good information out there. I remember at the time, shoot the the guy that does century he was working at like, chess calm or something. I can't remember where it was, he gave a talk about like scaling Django, and this was really early on David Kramer.

Will Vincent 12:18
And yeah, wait, sorry, it's chess, calm Jenga.

Peter Baumgartner 12:22
I know, I'm probably butchering the story. I can't remember what it was, where he was working. This was, yeah. Long time ago, but yeah, you know, so there were some people doing it, but it just wasn't kind of common knowledge at the time. And I think it was sort of piecing stuff together from what other people had learned doing rails and, and all that. So we did one large site that was like a gaming publication, and it was like a CMS and like, they had a little social network built in and stuff. And they would do these like drawings, like, first comment gets, you know, like, a free, so such and such, so they would like, post something on their site. And like, immediately, like, it would just go bananas. And it was not just people reading the site, it was like people trying to type in comments and stuff. So we learned a lot through, you know, kind of trial by fire there. And I think the book came about, we had a client that we worked with, who was you know, large, another large CMS company, and they had a bunch of really smart devs on their staff. And, you know, they came to us and said, hey, we've got this scaling problem. And our sights, you know, periodically go down, and we're really lost here, we're just, we're just stuck, like, we just could use another set of eyeballs. And, and they kind of explain their system and how it's working and all that and, like, gosh, like, this isn't the way you should be doing it, you know, like, it was like, Where to start? To get those sometimes where it's like, you know, we've cobbled this system all together, and it's like, the system is not working, well, can you help us fix the system, when really the solution is like, you should probably burn that thing to the ground and do it a different way. For sure, of course, you're gonna have problems like this with a system. So I, I kind of was doing a write up for the client on on sort of, you know, our recommendations on how to proceed. And I think, like, and not to, like, I hate it when people are like, Oh, these people are idiots or whatever. Like, they're really smart people. And I think, you know, they, they made some early on architecture choices that probably made sense at one point that, you know, they carried on for a long time. So, I think, you know, it's easy to come in, in hindsight and say, like, Oh, that's all wrong, but at the time, I think, you know, things made sense. But as I was kind of doing the write up for them, you know, the the words Were just like flowing, like, it was really easy. It was like I should, you know, I could probably write more on this and, and so I was pretty sure I was coming back from a conference or something and sat down in the airplane and wrote like, 5000 words on, you know, like how to set up scaling and how this should be done or whatever. And it's like, Alright, I could probably do a book out of this. And so,

Carlton Gibson 15:22
about that time you were doing it a newsletter as well. Right? You would do it? Yeah, there was a Lincoln loop update or Friday like it?

Peter Baumgartner 15:30
Yeah, we've gone through a couple of Yeah, we had it. We had like a podcast and we had a newsletter where we were like, collecting kind of like links that I think Jeff triplets got something going on with that now, but

Carlton Gibson 15:40
yeah, we will. Yeah, I'm

Will Vincent 15:42
just behind you.

Peter Baumgartner 15:47
Know, it's it's paint like, it's, it's, it's hard like I, I was doing that the the newsletter thing, mostly on my own, I just got

Will Vincent 15:56
sick of it. But I think a partner really helps. Because like, for, for the podcast for the newsletter, even this awesome Django repo that I have that has, I don't know, 3000 stars, like, actually, Jeff, came on to that, because I was basically ready to just be like, I can't like, and I, you know, having the having a couple weeks where you can just be like, I'm just not, especially when not reading, you know, you're not really getting paid for it. So it's easy to drop.

Peter Baumgartner 16:23
Yeah, yeah, that's nice.

Will Vincent 16:26
But I didn't know you had that. But it makes sense. Because I think there's there isn't a Django thing, which is why Jeff and I started that. And I mean, it. I think barely we have ads, which covers the cost of the Rails app that we use to host it. So it's not a you know, it's for the community. Yeah.

Carlton Gibson 16:46
Yeah, totally. legit. The Django forum is a Rails app as well, right? Because that's the whole Django ecosystem.

Will Vincent 16:55
Jeff, and I got some emails from people saying, hey, how can we using a Rails site for this? It's like, well, if you saw there was a real site, you would have seen that. It's also a company and, you know, yeah, we could have built it, I guess, but I don't need I don't need to build everything myself.

Peter Baumgartner 17:07
Yeah, yeah, totally. Sorry. So

Carlton Gibson 17:10
I interrupt because I was having reminiscences about like, the time because I bought I got the the highest gaming, high performance shango the second it was out of sight. But hang on, I heard about that on your email. And you would,

Peter Baumgartner 17:24
oh, yeah, totally. You're on the

Carlton Gibson 17:25
you're on the plane, you knocked out 5000 words, you feel it? Yeah, I'm gonna do

Will Vincent 17:29
a Kickstarter to write I think,

Peter Baumgartner 17:30
yep. So so I kind of was like, Alright, I should make sure people are gonna want this before I, you know, kill myself writing the rest of it. So put it up on Kickstarter. And the Kickstarter did well, and I think the only reason it got finished was because of the Kickstarter, cuz I, I write, like, the, the first 5000 words were really easy. And, you know, it was relatively easy, some of the other stuff, but there was a lot of stuff that was, you know, where it's like, I'm pretty sure this is the right way to do it. But now I really need to, like, you know, if I'm gonna write it in a book, like, I really need to figure it out. And so, you know, going through and testing stuff, and then parts where, you know, I was a little fuzzy, and I needed to lean on some of the other people we work with. And it just got grueling towards the end. And I hear a lot of people that have, you know, published a book say this. So I really think the only reason got completed it was I had taken people's money and, and committed to a date that it was going to be done. And so it was like, Alright, I you know, I have to do this. And, and this part of the reason I haven't ever finished a second version, I've tried to pick it up a couple of times. And I, you know, I get through some of it. And I'm like, I think I have PTSD eat or something from the from the first time, but I can't force myself to sit through it. But you know, like you were saying, you know, talking about deployment, I think one of the realizations as we were writing that was that book is not terribly Django specific. A lot of the things in it are kind of common deployment scenarios, you know, you've got a caching layer in front of some app servers and a database. And, you know, you cache the database queries. And that's the general architecture. And I think that's the thing that when we, you know, did this consulting job that it was was missing, it was like they cobbled these other pieces together. And so I think that's where I started getting more into being interested in deployment and kind of configuration and all that. And these days, I don't really do much Django development at all. I'm kind of more focused on running servers and you know, doing deployments and Docker and containers and all this fun stuff, which is a little weird because it's kind of full circle from where I went. Started in some ways, so yeah, that's. So one thing I wanted to mention with the book is, so we originally put it out in I can't remember if it's 2015 or 2017, but it's a few years old now, I think I still stand by a lot of information in it. But there is some stuff in there, that's outdated, either, you know, packages, we were using that that aren't around anymore. And, and like I said, I've been hoping to do a new revision of it, and it just hasn't come to fruition yet. So we're actually working with somebody now to get a free version of it published online. You'll just be able to read read on the website. So I'm hoping that'll happen in the next month or two. And then I, I have not wanted to sell it anymore, because I don't feel great that it's, you know, outdated, but I also don't want to just throw it in the garbage, because I feel like there's still a lot of valuable information in there. So this seemed like a, it's run its course, you know, seemed like a good way to kind of partially sunsetted I guess. Well,

Carlton Gibson 21:15
it's cool. I mean,

Will Vincent 21:17
I just gonna say I, when I read it, I think part of the reason why it's much of it still holds merit is you know, you wrote it at a level up from, as I recall, there wasn't a ton of like code samples, it was really more like his, he said, this is how you construct it. And these are the tools. So even when I saw that has longevity, as opposed to like, like, for me, like I have to every nine months, update my code snippets. Just like, you know, you know, if they didn't sell, I definitely wouldn't do it. So I appreciate when I wrote when I read it that you wrote it at that level, because I think that is, especially with deployment, it is something where the big topics are kind of the same. And as I recall, like, I think the two big things you said is basically database hits hurt you, and you know, cash all the things and then you broke down the steps. And the second half, I think is when you got more into like nginx. And, and like the server itself. Because this is pre platforms are appreciated and mentioned Heroku, or any sort of hosted service in the book.

Peter Baumgartner 22:13
No, no, and yeah, we were kind of doing all, you know, stuff on a Linux server, like it could be on AWS, but it wasn't, you know, serverless or, you know, on some other platform. But I, you know, I I've always felt like, That stuff's great for people that, you know, need to do all sorts of weird custom stuff. But But Heroku and the like, are really the place to be for your kind of average person to even you know, running a business or whatever. Most people are not Google scale companies and don't need to operate as if they were, you know,

Will Vincent 22:55
crowds and what were you gonna say you had something you're gonna add there,

Carlton Gibson 22:58
what I was just gonna say about the book and the patterns in it, there was a another one, a Riley one that you don't have on the shelf somewhere, but I can't remember the name of it right now. But it was the same. They the examples, were using MySQL and PHP or something like that. But it was the same patterns, you know, it's it's that you know, the write through cache that you know, the database, optimize that scale it out as a read replica, if you can, you know, these kind of things, which are exactly as you said, kind of implementation agnostic. It doesn't matter whether you did it in Django or rails or, you know, elixir or whatever, you're going to have the same problem.

Peter Baumgartner 23:37
Right, right. Yeah. And, yeah, I totally agree. Yeah, you're basically your your application is this, you know, their application, your database are the slowest parts of whatever you're doing. And the more you can avoid touching those things, the better off you are.

Will Vincent 23:55
Yeah. So I want to reference, you gave a 2015 talk on Django deployments done, right, which I watched before this, and we'll put a link to that, that covered a lot of weight, you know, best practices, because I was thinking about that company, because I'm wearing Quizlet shirt, I worked at this company, Quizlet it's now grown. And, you know, so why do companies get themselves in this holes of technical debt? You know, it's partly because they didn't know any better as part. But it's also partly because like, they've got their own fires to deal with. So it's like, even though it takes extra time, it's like, no one has time to spend a couple weeks if even if they have the expertise to like, build, you know, burn it down, which is sort of why consultants are great, because, you know, you don't usually just sit there with nothing to do in a company. Unless you're going out of business, and then you get all the time in the world to refactor until you lose like customers.

Peter Baumgartner 24:43
Right? Yeah, I think people you know, I think the talk a kind of head on a little bit, but I think people forget about the, like the human cost of all of this. Yeah. If you put it you know, yeah, you're running a million miles an hour and you don't have time. To optimize your deployment process, but if your site's going down half the time you're deploying, and your team is like, you know, totally stressed about it, and, you know, constantly like waiting for the next fire to happen. Like, you're gonna get burnout, people are gonna leave, like, people can't do that for a sustained amount of time and kind of looking at how do you give people a calmer, safer environment? And and there's benefits to both sides on that, you know, like, there's Surely if you're, if your site goes down, that's a, an expense on the business side. But it's also, you know, taking a toll on your team. And, and I think, making that stuff, so it's, it's not stressful, it's not, you know, like, Oh, God, like, my hands are sweating moment. When you when you push that button to deploy is huge. And guy, I know, I've been there, like, I've been in those situations where it's like, this is terrifying. I just waiting for something to topple over. When

Carlton Gibson 26:06
I push this button, you know, it's when you put off deploy you like you've got a fix. And you're like, Oh, we won't deploy that yet. He can't be in that position. You got it? Yeah. If you've got to fix you've got to be able to get it out. Like,

Peter Baumgartner 26:19
yeah, yeah. Well, it's

Will Vincent 26:21
a bit it's a bit like test coverage, too. Because, you know, the business can kind of carry on for a while, but it is, you know, burnout, people will quit like, and then yeah,

Peter Baumgartner 26:30
totally. Yeah. There's, there's, like, day one, there's very little value in Brian tests, right? Yeah, you know, the, the value comes two years down the road when somebody has to refactor upgrade, and like, they can do it with some peace of mind versus, you know, being going to go through and click everything or whatever. Yeah, I think that's a it's like a savings account. You know, yeah, you pays off later. Well, I

Will Vincent 27:00
think if you're not technical, I mean, so I, like I went to business school. And I talked, sometimes a lot of people go in and RPMs that companies and so they're not technical. And, you know, in a crunch, they basically learned that if, you know, developers will say it takes four weeks. And they'll crack the whip and say, we'll get it done in two weeks. And so developers will ship something that looks like it works in two weeks. And the takeaway is, the pm is like, I just got to crack the whip on these lazy developers and developers are like, That was terrible, there's no test coverage, I'm only doing that a couple times on a leave. So they both feel like they won, but the company lost. So I always try to tell the non technical people, like you gotta build in overflow for testing deployments, you know, cuz I know you can't see it. And it makes you sound good to your boss, but you're killing your team here. So if you want them to stay around for more than a year, you need to, you know, do something different, even just like like, even like psychologically like with, especially with testing or bugs in particular, like having like a bug squash day, like a quiz that we would have it once a month, we'd have a day dedicated bugs. So that let the pm offload the hierarchy to the developers. It wasn't just like, I'm saying no, all the time, I was like, Okay, I'm gonna clear the overhead space. And then you need to prioritize, and then you know, you have fun with it, instead of just like this endless queue of, you know, these bugs, these tests these deployments. So there's also like a psychological part to it. All.

Peter Baumgartner 28:23
Right. And yeah, that's, it's hard to make the business case on that sometimes. We deal with that with our clients, you know, they, they may not see it immediately, but but you have to explain, you know, yes, it's important that you upgrade this library, you know, you've been, we're gonna spend 10 hours on it, and your site's gonna work just like it did.

Will Vincent 28:47
How does that sound to you? Right?

Carlton Gibson 28:52
I feel like every week on the podcast, I say the same thing. But it's like taking your car to the garage to get it serviced, right, you change the order, you change the brakes, you change the tires, you you know, you put new washing the wipers, the car drives the same, but you wouldn't not do that. Right. You know?

Peter Baumgartner 29:09
And it's, it kind of it's, I feel like it's an unfortunate, I don't know, if software development, I guess maybe it's a it's a, like a remnant of software now being on the public Internet. But it's, it's unfortunate that you can't build something and just let it sit for 10 years and know that it's going to run 10 years later, you know, like the rod is a really weird thing that like, yeah, you build something and then it just you set it aside. And five years later, a year later, it doesn't work anymore. Yeah.

Carlton Gibson 29:41
But there was an example this week of the Python cryptography package, they've upgraded and they you know, they're bringing in rust to make it memory safer means cryptography won't memory safety, but, you know, there's people online, no Ubuntu 18 that doesn't have the right version of PIP installed. And so, you know, the install breaks. It's like, you know, there was a big Fallout. Yeah. And all the all they did was make their package better. Right?

Peter Baumgartner 30:06
Right.

Will Vincent 30:07
I feel like it's, you know, when people rage quit tech, they often become like, you know, woodworkers or something totally analog where things don't need changing. But the antidote is I try to tell myself, Well, what about like a chef at some chef makes something it's literally gone in 20 minutes, you know. So, you know, it's on the spectrum of things like it does last a while, you know? But yeah, you need to have like, offline, things that you do. So deployments, let's talk about app pack. Because this is something new that you've just I think, just publicly announced, right? Can you say what this is? Yeah.

Peter Baumgartner 30:42
Yeah, actually, your your segues kind of good, I'll jump ahead of myself a little bit, but the, one of the things so all our clients are on AWS, either Heroku, or AWS, for the most part. And one of the really cool things I think about AWS is how stable their API's are, I think, you know, you could probably write something and Boto or Boto three, and assuming you could still get, you know, that version of Python to run, like, it'll probably work in a few years, maybe five years. And I don't think you'd get that same kind of guarantee with other stuff. You know, if I, we used saltstack, as a configuration management tool. In the past, and, you know, upgrades were always kind of scary, it's like, the surface areas of big what's going to break, it's kind of hard thing to test, you know. So, I've kind of over the years transition from writing, you know, building, site building and deploying sites as if they're on a Linux server, and that Linux server could be anywhere to taking more advantage of the, you know, I think the the term these days is like cloud native, you know, like AWS specific tools, or if you're on GCP, or Azure, or whatever, they've got some pretty nice stuff there. Like, we've been using RDS, Amazon's database service for a long time. And that's amazing, I would gladly pay extra money for them, for me to never have to think about a database again, like, Yeah, I don't have to worry about backups or, you know, upgrades or whatever, like, it's just taken care of, and that's, that's huge. Like, I'm happy to run stateless services that, you know, like, it's okay, if the app crashes or goes away, like we can get it going again. But yeah, losing data is a different story. So So yeah, when we've kind of been slowly transitioning from from this, like, configuration management on Linux servers type scenario to, to more kind of cloud native stuff, and using a fair amount of Amazon ECS, which is their Container Service. It's sort of like Kubernetes, not a huge fan of Kubernetes. Myself, just because we don't operate at a scale where I think Kubernetes is really valuable. You know, even our clients that get, you know, millions of page views a day, they're running like one or two apps, you know, we've got multiple environments for them, but they're not running 100 1000 apps or, you know, different projects. So, so for us, I don't think Kubernetes makes a ton of sense. And I sort of like, Docker was a tough one for me. You know, it's, it's another kind of layer of abstraction, but, but there's value there and being able to bundle your application and getting it out onto servers and Amazon ECS, kind of lets you do that same thing as as Kubernetes and just say, hey, I've got this image, just run it, I don't care where it runs, or how it runs or whatever, just, you know, make sure it has as much CPU and RAM and, and run it somewhere. Which I think matches the mindset of kind of how most developers want to work on projects, like I need, I need this much RAM for this thing and just run it. I don't care where it runs, I don't want to have to secure it. I don't want to have to deal with it. But like Amazon's stuff is I think they're they're backwards compatibility is sometimes like a blessing and a curse, like some of its just feels really archaic and like the amount of hoops you have to jump through to kind of glue these services together or even figure out which services to glue together. Is is not trivial, like you need to. It's not a whole nother thing you need to know you know, like before it was like Okay, I know PHP, actually Configure out like an Apache configuration. And I can, you know, FTP something to a server and run it. And then it was kind of like, Alright, now I need to know Linux. And you know, now I need to know

Will Vincent 35:11
everything. But

Peter Baumgartner 35:13
the tools, like, it's gotten bigger and bigger. And like AWS is just like another one, you had to add some

Carlton Gibson 35:19
extra layers of VPC and security groups and, you know, it's like,

Peter Baumgartner 35:25
totally. So we, we built out a couple of solutions for clients, on based around Amazon ECS. And, and I still felt like, you know, this is too hard, like, it's too, you know, I've got my head wrapped around it, but trying to pass this off to somebody else who's focused on Python or JavaScript development, like, good luck, you know, like, not that it's like, you know, you need to be really smart to do it. But it's just like, a lot of stuff you need to know. And it makes sense once you know it, but it's, it's too much. So. So anyhow, that's where kind of app pack came from. And I think I started it when COVID hit and I was like, kind of stuck in the house. And it's like, you know, I think there's, I can I can glue some of these things together and make this work a little easier. And always kind of having in mind like Heroku does this really well. And I would tell anybody, like if you fit the Heroku model, like, use Heroku, they're great like that. That's that's the general, put you push your code, they figure out like, yeah, it's Python, and they put it on a server, and you don't have to worry about

Will Vincent 36:41
they put it on an Amazon server.

Peter Baumgartner 36:43
Right, exactly. But for some of our clients, Heroku doesn't work out, well, it gets. It's either expensive. They don't have all the service, you know, you can get your app running, and Postgres and Redis. And I think that's it, that Heroku itself offers. So if you want Elastic Search, you got to go someplace else and get it. And you have to run that traffic over the public Internet. And you know, you have to trust some third party with your data, or you have to go to AWS and set it up yourself. And Tommy, yeah, yeah, exactly. And so, yeah, like trying to figure out if I could sort of glue these things at Amazon together, which are, lower level, and make something that operates for the developers more like Heroku. And if you look at the services Amazon offers, and you kind of, you know, amazon.com is built on Amazon, right? So the Amazon uses Amazon Web Services internally, and you kind of start to see like, okay, like, if I was going to build like a microservices version of a platform as a service, all the micro services you need are there, you know, it's got a way to store secrets. It's got a database, it's got a way to run containers. It's got load balancers. So app pack was just kind of a way to glue those things together and sort of spackle over all the extra knowledge you need, you know, 90% of the time, everybody is going to set it up the same way. If you want to, like follow best practice, or whatever. So yeah, that's what I've been working on. I started I guess, last May. And so our site runs on it. But that's not really that exciting. It's pretty trivial.

Carlton Gibson 38:48
Yeah. But Lee, Alicia dogfooding. That's the thing.

Peter Baumgartner 38:51
Yeah. And we have a couple of clients using it. And we're rolling it out to a larger client this month, and kind of just trying to work out any kinks or, you know, figure out what, what doesn't click for people. And we've been rolling it out just kind of some individuals as well. So the way it works is you bring your own Amazon account. But we kind of give you all these tools that set it up in the right way for you and your data, your app, run in your account, and you can have your controls on that. And we kind of just run. So we built a bunch of cloudformation templates, which is like terraform. It lets you set up a bunch of resources there. We have a CF CLI, and a web dashboard, and an auth service that let's see all service and then we have something that plugs into Amazon event bridge which lets us get notified on what's happening in your environment and kind of figure out what needs to be done and send to the right. AWS API calls to keep things moving along. So an example would be like, you know, you set up a project, you push your code, a build trigger is when the build finishes, then that sends a signal that says, hey, this build was successful. And our code can say, Okay, now we need to figure out if there's a release tasks like Django migrations that need to run. And if you've defined that, then we kick off a task in ECS, that runs your migrations. And then if those runs successfully, then we kick off a deployment that that updates your site. And like that kind of stuff. That seems like it should be really easy and trivial is like actually kind of challenging in in AWS, and kind of, eventually, consistent container land and all that. So yeah, we kind of take that off of people's hands.

Will Vincent 41:01
So it, it sounds like this isn't necessarily Django specific, though, obviously optimized for Django, do you have? Is it currently? Or do you have plans for it to be, you know, rails or whatever language framework is,

Peter Baumgartner 41:12
so it's really cool. There's a project out there called build packs, cloud native bill packs. And that's, I think, originally, it spun out of Heroku. But a bunch of other systems are using it. Now. I think Google Cloud run uses it. I can't remember, a bunch of other people use it. And so you can use all of Heroku has built system while not all of it, but like a lot of it's been open source. So you just define Well, it can go in and detect what your app is, if it's a simple app. So if it goes in and sees a requirements dot txt file, it'll say, Oh, this is Python. If it sees package JSON, it'll say, Oh, this is node. And it'll build kind of following best practice and generally sane way. So so we're using that. So yeah, it's it's totally, I think there's eight different languages that Heroku build packs support. And there's other other kind of like Google has their own build packs. I think the Cloud Foundry, Cloud Foundry has some build packs out of their own, but Heroku has, some of them don't support Python Roku does. So it's like,

Carlton Gibson 42:31
it's like a bill pack is like an alternative way of building a container, right than, say, a Docker.

Peter Baumgartner 42:35
So you don't need to write a Docker file, but you get a Docker, you get a little image out of the other end. And I think that's like just another example of like, this balloon of knowledge that you need to have, like, the fact that you need to understand how to write a Docker file to be able to deploy an app that's crazy to me. So yeah, this this kind of manages that for you without you needing to have Docker on your machine. And no Docker. You can use it if you want, but you don't have to. Yeah.

Will Vincent 43:08
Yeah, that sounds that sounds so nice. I mean, so my third book, the professionals, one uses Docker, and writing it was a challenge to make it accurate, but simple. And I get so many Docker questions, you know, yeah. And it is. It's hard to because I wanted it to be I do think Docker is very common. And also because Mac windows, whatever system. It's helpful that for me, I can just write the same thing though. Of course, there's been some Docker windows stuff. Anyways.

Carlton Gibson 43:40
Mac stuff No, no.

Will Vincent 43:41
Well, no, there was something. I guess it was earlier last year, where like Docker windows, bro. Yeah. Anyways, I was like, of all the, you know, I'm using Docker for it to be the one true thing and it breaks for a while. But it is a total. I don't like as a content creator. I don't like just being like, yeah, you need this. Here's like, a couple paragraphs, just run this Docker file and Don't peek under the hood. You know, it's like a million lines ago. And it works until it doesn't and when it doesn't, I don't know what to tell you.

Peter Baumgartner 44:09
Yeah, exactly. Exactly. And we deal with that we, you know, a lot of our client projects. There's, I don't know, maybe 5050 of folks at Lincoln loop that develop locally with Docker. And if you're hopping from project to project, it's a kind of a godsend that, you know, you can just jump on another project and do Docker compose up and things just work.

Will Vincent 44:34
Or a team setting for sure.

Peter Baumgartner 44:36
Yeah. But if you're Yeah, if you're working in the same project day in and day out, and you know, you know how to set up your own machine. It's, it can be a real hassle like it gets in the way it's, it's slow. It's especially on Mac where you're like, under the hood, there's a Linux virtual machine that's running everything and how are you, you know, the way that shares files across that is kind of weird. And yeah, you know, the networking stuffs kind of weird and just throwing it at somebody and say like, Oh, yeah, just use Docker here, but you'll be fine. Like, that's a that's a big leap right there.

Will Vincent 45:12
That's what I do works out. Okay. But yeah, I agree. I mean, it'd be, it'd be nice if, as programming develops, you know, we had more simplicity of tools. I mean, we do we have things packaged together like app pack, but it also seems like the bigger ecosystem of what you need to know, grows, right? Because people ask me, like, how do I learn how to program? It's like, Okay, well, HTML, CSS, databases, SQL, Python, JavaScript, you know, like, and that's just to get started. And then you can try my beginners book. I wish I I wish there was a the what is that balance, right? And then Docker, and all these things come on. And it just seems like it sort of people just learn it as they need it. But they just kind of like band aids, right? No one really has the time or the resources to, like, fully understand talker fully understand, you know, whatever, the tooling, because there's so much tooling. But anyway, so that's why you know, especially with deployment, something like app pack Heroku button, which Carlson's working on these tools make all the sense in the world. I mean, personally, like, I have no interest in ever spinning up a Linux box. Like, I'm, I never want to do that ever.

Peter Baumgartner 46:18
Yeah. So

Carlton Gibson 46:21
the issue with spinning up a Linux box is what do you do when you've spun it up? It's like, it's got nothing on it, then you've got an installer? And you don't want to do that. Yeah.

Peter Baumgartner 46:29
And then you're, I feel like, you end up in the same place there is like what the testing thing? Like? Yeah, sure, you can spend it up and you can like, manually install your packages, like assuming you know, how to do all this stuff. And like, get it running. What happens when you now need to, you know, do you want to get a new version of Python, and it's not easily installed on your system? And, you know, how do you move all that stuff? How do you manage upgrading the system? How do you make sure like, somebody hasn't, you know, hacked into your system, or what, like, there's a whole lot of extra stuff beyond just like, getting it running, which, which we know is developers, you know, like, once you've gotten it running, like that's, you know, maybe half the battle, I don't know, refactoring it and making it understandable and documenting it,

Carlton Gibson 47:18
I think the test for me is that you, it's not enough that you can deploy your application, you have to be able to redeploy it on fresh architecture, if you can't redeploy it on fresh architecture with the same ease, or you know, it's gonna take a bit longer as you got to, you know, spin up the new whatever. But that's the test, can you can you redeploy it. And if you can, then you're in a good place, for sure.

Peter Baumgartner 47:39
I want to hear about button a little?

Carlton Gibson 47:41
Well, it's so similar, you know, it's targeting a smaller scale thing. I'm looking at, you know, helping individual developers who, you know, they want to get their app online, it's more about it. So I'm building a native Mac app and you know, a native app where you can enter your variables and enter your secrets. So they'll be encoded in the app, and then it will launch it and get it into the right place for you with those environment variables populated, so that you don't, you know, that difficulty that people have when they're committing secrets to the repo when they don't know how to write, you know, they don't know how quite how to manage that. And so it's more tagging that layer, layer, rather than spinning up a, you know, any ECS cluster, which I think is a bit is a bit too much for the kind of user I've got in mind. But yes, but it's the same, the underlying motivation is the same, you know, exactly the same as the push stick something on AWS, that's the right place to put it for me. But you don't want to have to deal with all of that nonsense, just to configure basically a correct AWS environment. And the thing you said that's 100% correct, is that 90% of people are going to do it exactly the same way every single time. And it's that 90% Yeah, fine. And for me, with baton amps, you know, out straight up saying, look, if you're already into containers, and you know, Kubernetes, or, you know, you know, all this stuff, then buttons, not for you, it's buttons for, you know, I've written my first Django app, how on earth do I get it online?

Will Vincent 49:16
Yeah, I think that's the test if you can, for whoever, you know, like, solves this problem to, you know, take the polls app, and, you know, put that up the easiest, you know, because that's for someone new, that's what they want. But you know, the docs isn't going to do that because Django self doesn't do that. And, you know, in some ways, it's like the early framework of Scrum. Right? We're Django is one of many Python based frameworks. So hopefully, there'll be multiple ones that sit between learning AWS and Heroku. certainly seems like there's plenty of room.

Carlton Gibson 49:50
Yeah, I think so. I think there really is like there's the you can't possibly serve. You know, I could, you know, if I if I worked on Barton, for the next decade I could cover like half of the territory with features and it would be bloated and unusable. It would be exactly the thing. I'm trying to provide a solution. And so I can I can target one nation peak peak and target another one. And then and Amazon's out there going, look, we're basically talking to infrastructure engineers. And if you're not one of them, we don't want to talk to you. So Well, most people who want to deploy an app, they're not infrastructure engineers. Yeah,

Peter Baumgartner 50:27
yeah, I did have like the thought of like, yeah, Amazon could come by and like, eat our lunch. And, you know,

Will Vincent 50:35
they don't care. It's not worth it. Yeah.

Peter Baumgartner 50:37
But I think, you know, I've seen this stuff like, they've got lightsail, which is supposed to be like an easier way to do some of this stuff. And there's a project out there called copilot, which is supposed to make ECS, a little easier to work with. And like, I still think it's just like, it's too far off from from where people want to be with that. I posted a example on Twitter the other day, so as you know, part of what we do is I set up a load balancer for people and add a certificate. So it's got, you know, TLS, and all that. And I was updating that. So you get logs from your load balancer, because that's something people want, you know, and it was, when I finished building it all out, it was 10,000 characters of Jason, for cloud formation to, you know, you have to set up, it gets locked in an s3 bucket, you have to set up your s3 bucket, you have to set all these like arcane Iam policies to allow the load balancing bucket. If you want to be able to like tear it down quickly, then you need to write custom code to empty all the files out of your s3 bucket before you delete it. You need to write like special stuff. So by default, it will just keep filling up your s3 bucket like s3 is cheap, but you don't want to keep logs for you know, five years. So you need like, a custom rule to delete old logs. And like, there's just it's so much there. It's mind boggling to what you something you would expect. Like, this seems like it should be like a line or two, you know, like, yeah, I want logging, you know, like, that should be easy, but it's not. I

Carlton Gibson 52:21
just don't see how, like you're describing creating that thing. It's like, yeah, I have this thing now and done when I was working on button from Django con 2019. And I was doing really well until COVID arrived, and then it just ground to a halt. And at the end of the year, I was looking at my diary. And I was saying, You know what, I actually didn't make any progress from the whole time. COVID hit till the end of the year. And I said, talking to my wife, I said, Well, you know, I've got to find some time. So I've got this button Saturday, Saturday morning, where I can sit and work on it. And my buttons nowadays, just like creating these, you know, these rules, is putting them all together. So other people don't have to smiling. smiling. Yeah,

Peter Baumgartner 53:01
yeah.

Carlton Gibson 53:02
bombs and ABS and have no interest in making that easy for people.

Will Vincent 53:06
Well, yeah, I

Peter Baumgartner 53:07
think they're, they're, you know, they're in the selling picks and shovels business, right. Put it together however you want. You've got tons of flexibility. Like, there's certainly value in that, but it gives it to a very specific user, you know,

Carlton Gibson 53:22
yeah, yeah, exactly.

Will Vincent 53:23
I think and especially to have a framework specific solution. So Django, you know, even Heroku could be a lot better with how it describes Django like its Doc's are pretty out of date. I know, the sort of Django overlord they've had has changed a couple times over the years. So, you know, even Heroku doesn't have a simple story for Django. So yeah, so just as a you know, just like stripe started off as payments for developers, and now it's for everyone. You know, it seems like that's a nice logical progression for hosting platform to like, if you can nail the Django piece because it is, I mean, Heroku Python anywhere. I guess there's replicat there's just such a chasm to spending the time that the two of you are doing, which most people don't want to don't know how to do or don't want to do. Yeah, yeah, I

Peter Baumgartner 54:11
mean, we're not touching it right now. But yeah, like DS g unicorn, or you whiskey or STI or whiskey or unicorn or, you know, how do you store files like, Oh, you need Django storage is to do that. And, you know, how do I like use DJ database URL to navigate, there's all this this kind of knowledge that we have having done this before that coming in as a new person is even that like, just that part's overwhelming, just getting a I gave a Django con talk on this and it was like prepping your project for production like it's, it's a big deal. There's a big difference between getting something running on localhost versus getting it running elsewhere. Just even without The Howdy, how do you do deployment stuff? Just getting your your code ready?

Carlton Gibson 55:05
Yeah. But to cut back to your where you started, like, okay, so you're gonna deploy your app and then you think, Oh, I need I need email, I need to send you a password reset it. So Oh God, I've got to set up my domain for email. I've got to verify the domain and do those funny DK, whatever the job records?

Peter Baumgartner 55:24
Yeah, how many people are doing it with probably the you know, their Gmail password? You know, is their credentials.

Carlton Gibson 55:32
Your Google even stopped you doing that now?

Will Vincent 55:36
Yeah, they used to be like us four or five years ago, you could do that? Well, then even if you say I'm gonna build like a really, really basic Django site and show you how to do it. Well, I need to show you email. And you know, sendgrid, last year changed something major. So you know, so it's like, when I first bought the first editions of my books, it's like on version five for them. I had, you know, all these other services I would use. And now I'm just like, really trying to strip everything away, because they change so much, and you know, beyond the control. And yet, you know, as a jobbing developer, that's what you have to do is keep up to date with these things. So anything that can be hosted in data sight out of mind, like take the money, I don't wanna deal with it, for sure. So Can people people there's a waitlist, right? When so people should sign is that the action item for people listening? Go to Yeah, pack.io. And great.

Peter Baumgartner 56:27
So I probably will start emailing some folks on that in the next week or two. I'm trying to keep it really small, just to kind of get feedback and polish the experience. I'm taking the reed Hoffman ORS, you know, if you're not embarrassed of your first version, you waited too long to launch.

Carlton Gibson 56:50
Yeah.

Peter Baumgartner 56:51
So it works is you know, there's rough edges, but I'm guessing a lot of people probably wouldn't, you know, I know because I can peek behind the curtains, but a lot of people hopefully wouldn't even notice it. So yeah, just we're kind of trickling people in right now on hoping that we get enough kind of feedback from that to do a larger public launch. Super.

Will Vincent 57:13
Sounds great. But any, is there anything we've missed that we haven't covered? That you want to mention to folks?

Peter Baumgartner 57:21
I don't have much. No, I think you hit it all. You know, like I said, so yeah, like, we're still doing you know, Django consulting and helping folks with either build Django sites, maintain them, support them all that and an app packs kind of been my, my personal project over the last few months. And yeah, look for the high performance Django stuff online soon. Yeah.

That's, that'swhat we've got going on.

Will Vincent 57:52
Great. Well, thank you so much for taking the time to join us. I know. We've long wanted to have you on so thank you for accepting.

Peter Baumgartner 57:59
Yeah. Awesome. Thanks so much for reaching out. I enjoyed it.

Carlton Gibson 58:01
Yeah. Thanks for coming on.

Will Vincent 58:03
So as ever, we are chat Django on Twitter, Django chat calm, and we'll see everyone in two weeks. Bye.

Carlton Gibson 58:09
Bye bye. Join us next time.