Christopher Trudeau: Have you ever thought about getting your small product into production,
Christopher Trudeau: but are worried about the cost of the big cloud providers?
Christopher Trudeau: Or maybe you think your current cloud service is over architected
Christopher Trudeau: and costing you too much?
Christopher Trudeau: Well, in this episode, we interview Michael Kennedy, author of Talk Python
Christopher Trudeau: in Production, a new book that guides you through deploying web apps
Christopher Trudeau: at scale with right sized engineering.
Christopher Trudeau: This is Talk Python To Me, episode 531, recorded November 26, 2025.
Christopher Trudeau: Welcome to Talk Python To Me, a weekly podcast on Python.
Christopher Trudeau: This is your guest host, Christopher Trudeau.
Christopher Trudeau: Follow me on bluesky, where I'm trudeau.dev.
Christopher Trudeau: You can follow the podcast or this week's guest on Mastodon, @talkpython for the show
Christopher Trudeau: and @mkennedy for the guest, both on fosstodon.org.
Christopher Trudeau: And keep up with the show and listen to over nine years of episodes at talkpython.fm.
Christopher Trudeau: If you want to be part of our live episodes, you can find the live streams over on YouTube,
Christopher Trudeau: subscribe to our YouTube channel at talkpython.fm/youtube and get notified about upcoming shows.
Michael Kennedy: Look into the future and see bugs before they make it to production.
Michael Kennedy: Sentry's Seer AI code review uses historical error and performance information at Sentry
Michael Kennedy: to find and flag bugs in your PRs before you even start to review them.
Michael Kennedy: Stop bugs before they enter your code base.
Michael Kennedy: Get started at talkpython.fm/seer-code-review.
Michael Kennedy: And it's brought to you by Agency.
Michael Kennedy: Discover agentic AI with Agency.
Michael Kennedy: Their layer lets agents find, connect, and work together.
Michael Kennedy: Any stack, anywhere.
Michael Kennedy: Start building the internet of agents at talkpython.fm/agency spelled A-G-N-T-C-Y.
Christopher Trudeau: Michael, welcome to Talk Python To Me.
Christopher Trudeau: You know, I looked it up.
Christopher Trudeau: You've been on the show more than anyone else.
Christopher Trudeau: But in case there's new listeners, tell us a bit about yourself.
Michael Kennedy: Incredible.
Michael Kennedy: Good to be here with you, Christopher.
Michael Kennedy: A bit of a turn of the tables, I would say.
Michael Kennedy: And it's, you know, long time listeners, I'm sure they know all the little details because
Michael Kennedy: I work them in here and there.
Michael Kennedy: I think that's kind of fun to just make things personal.
Michael Kennedy: But I've also said this on the show,
Michael Kennedy: and I'm sure it's a surprising fact that you know as well,
Michael Kennedy: but over half of the people in the Python space
Michael Kennedy: have only been here for two years.
Christopher Trudeau: Yeah, I keep seeing that stat.
Christopher Trudeau: Yep.
Michael Kennedy: That's crazy, right?
Michael Kennedy: So even if people, you know,
Michael Kennedy: I told this story about my background five years ago,
Michael Kennedy: like those people weren't here, like half of them.
Michael Kennedy: So crazy, crazy stuff.
Michael Kennedy: All right, so my backstory, I was,
Michael Kennedy: I thought I would be a mathematician.
Michael Kennedy: I studied math.
Michael Kennedy: stuff like that in college, was working on my PhD,
Michael Kennedy: started doing a bunch of work with silicon graphics,
Michael Kennedy: mainframe, supercomputer type stuff
Michael Kennedy: so that I could do my math research.
Michael Kennedy: And I realized, wow, this programming stuff
Michael Kennedy: is way more fun than math.
Michael Kennedy: How do I change gears?
Michael Kennedy: And so that was like 1998, 99.
Michael Kennedy: Haven't looked back.
Michael Kennedy: I've been programming since then and super fun,
Michael Kennedy: a couple of languages and around 10, 11 years ago,
Michael Kennedy: started Talk Python, year after that, quit my job.
Michael Kennedy: Made Talk Python my full-time job.
Michael Kennedy: Started offering courses as well.
Michael Kennedy: That's something that people don't necessarily know.
Michael Kennedy: That sometimes they'll ask, well, what do you do for your job, actually?
Michael Kennedy: I'm like, well, we're doing it.
Michael Kennedy: So anyway, that's me.
Michael Kennedy: A super, super fan of Python.
Michael Kennedy: Super fan of programming.
Michael Kennedy: Every day I wake up just like, wow, how awesome is today?
Michael Kennedy: Look at all the new stuff that came out that we learned that we can do.
Michael Kennedy: Like new libraries, AI stuff these days.
Christopher Trudeau: Yeah, there's always plenty to talk about.
Michael Kennedy: It's incredible times.
Christopher Trudeau: And you've added a new trophy to the mantle, I guess.
Christopher Trudeau: You've written a book.
Michael Kennedy: I have written a book.
Michael Kennedy: You know, that's a little bit, I'll put it this way.
Michael Kennedy: It's not something I ever saw myself doing, but I'm really excited that I did.
Michael Kennedy: And yeah, it took, I spent a couple of months properly writing it.
Michael Kennedy: You know, I really put in my energy in and like all projects, you think you're about done.
Christopher Trudeau: Yeah, that first 80% is nothing like the last 80%.
Michael Kennedy: No, and the last 5% is long.
Michael Kennedy: You know, and it's not just the book.
Michael Kennedy: It's like, okay, well, where am I going to sell it?
Michael Kennedy: Okay, well, Amazon, and then I'll self-publish, or do I use a publisher?
Michael Kennedy: You end up self-publishing it, but then you're like, how do I?
Michael Kennedy: You know, all these things you learn for the first time.
Michael Kennedy: Like, how do I get it into Amazon to sell even?
Michael Kennedy: And there's a bunch of decisions.
Christopher Trudeau: I can tell you, even with having taken the publishing route, it's no easier.
Christopher Trudeau: It's just that it goes dark for two months and then all of a sudden it's like, you need
Christopher Trudeau: to do this by yesterday.
Christopher Trudeau: So yeah, it's not necessarily an advantage either way, I think.
Christopher Trudeau: Yeah.
Michael Kennedy: Yeah.
Michael Kennedy: I was really on the fence and I thought, look, let me just try this myself.
Michael Kennedy: I got a few podcast listeners.
Michael Kennedy: I can let them know about it.
Michael Kennedy: An audience helps.
Michael Kennedy: I honestly think it was probably the right choice for me.
Christopher Trudeau: And for those who haven't come across it yet, do you want to give us the one paragraph version?
Michael Kennedy: Yeah.
Michael Kennedy: So the book is called Talk Python in Production.
Michael Kennedy: There are other books that are,
Michael Kennedy: I'm pretty sure one is called Python in Production
Michael Kennedy: or other things about how do you get your Python app
Michael Kennedy: into production.
Michael Kennedy: But this is Talk Python in Production
Michael Kennedy: because it's sort of a dual role storytelling vehicle.
Michael Kennedy: Obviously it's nonfiction, it's a technical book.
Michael Kennedy: But the idea was, let me tell not a generic story
Michael Kennedy: of how you might run some of your Python code in production,
Michael Kennedy: mostly APIs, web apps, databases,
Michael Kennedy: like that kind of stuff, right?
Michael Kennedy: not a general story of that but my story right i i've been on this journey of not complete noob
Michael Kennedy: but pretty significantly lost getting my original python app out into the world to pretty confident
Michael Kennedy: running stuff in i think a simpler than usual way in a good way right i one of the things i really
Christopher Trudeau: liked about the book is it's not quite changing gears but you you do a nice mix of sort of the
Christopher Trudeau: decision making process versus the here's exactly what i did um and so you get a little bit of both
Christopher Trudeau: and and honestly the decision making process is something i find often isn't there in a lot of
Christopher Trudeau: work uh you know your your standard blog post is always well and then and then add exactly this to
Christopher Trudeau: exactly this file um but i think i really really sort of enjoyed the and and this is what i tried
Christopher Trudeau: and this is this is why i changed and you're very kind of humble about it like it like a lot of
Christopher Trudeau: folks who write this kind of content it's thou shalt do this and you're like this is the way
Christopher Trudeau: i've told you yeah yeah this worked for me and uh yeah so so i really like the fact that you've
Christopher Trudeau: you've kind of blended that in what what made you decide to do this like that what there so you said
Michael Kennedy: you didn't really have the itch to go down the path so uh what i'm not sure i didn't have the
Michael Kennedy: itch i just didn't think that it was something i was capable of ah i see okay you know what i mean
Michael Kennedy: not not that i didn't think if i literally took two years of my life and went into like a cabin
Michael Kennedy: the rose style or something i could come out with a book i'm pretty sure but given all the
Michael Kennedy: constraints of like i have a family and i gotta keep top python running like in that sense i didn't
Michael Kennedy: I didn't think I would be able to do it, but.
Christopher Trudeau: - Yeah, it's perseverance more than anything else, I think.
Christopher Trudeau: Yeah, yeah, for sure.
Christopher Trudeau: - Exactly.
Michael Kennedy: So, yeah, go ahead.
Michael Kennedy: - Sorry, go ahead.
Michael Kennedy: No, no, go ahead.
Michael Kennedy: - You know, so why did I write it?
Michael Kennedy: Two reasons.
Michael Kennedy: One, I think it's an interesting story,
Michael Kennedy: and I thought people would enjoy hearing it,
Michael Kennedy: like the personal side that you mentioned a little bit.
Michael Kennedy: I thought people would appreciate that.
Michael Kennedy: And maybe more significantly,
Michael Kennedy: I feel like a lot of the advice out there
Michael Kennedy: in the tech space in general,
Michael Kennedy: but for now we're focused on like,
Michael Kennedy: how do I deploy my app sort of like Python plus DevOps
Michael Kennedy: type of thing.
Michael Kennedy: But I think a lot of the advice out there
Michael Kennedy: is a little bit of a flex in the sense that,
Michael Kennedy: oh, look at this, we're using these seven services
Michael Kennedy: and then this technology,
Michael Kennedy: and then we're auto scaling it with that.
Michael Kennedy: And then we have these logs pumped over to this other thing.
Michael Kennedy: You're like, whoa, okay, that's kind of cool.
Michael Kennedy: But a lot of people who just have an app
Michael Kennedy: they just want to go from like it works on my machine to look what I made they see that and go
Michael Kennedy: I can't do that you know what it's not for me it's just like I can't spend $500 on this
Michael Kennedy: infrastructure and I don't feel worthy if I don't have all you know like completely geo distributed
Michael Kennedy: redundant databases and like you don't need that you know what I mean and people keep asking me
Michael Kennedy: like hey Michael can you give me some advice I'm like well not that and finally I'm like let me
Michael Kennedy: just tell the story you know and so that was a big motivation you see it in industry a lot
Christopher Trudeau: it's sometimes referred to as you know resume based architecture right like it's a do we need
Christopher Trudeau: this or is this because i'm trying to learn it um and i think there's always that oh some of it's
Christopher Trudeau: aspirational right i we will be netflix and so you know we need to be on every continent and all
Michael Kennedy: the rest of it and uh right right it's it's very aspirational it's like i'm going to build this app
Michael Kennedy: And the reason I'm building it is it's going to take off.
Michael Kennedy: And that day when the hockey stick hits, I'm ready.
Christopher Trudeau: Yeah.
Michael Kennedy: You know what I mean?
Christopher Trudeau: There's also a, you know, I think there's a lack of recognition of the cost of both in
Christopher Trudeau: energy and money, energy as in human effort.
Christopher Trudeau: I'm not talking about electricity, of the next 1%, right?
Christopher Trudeau: So like getting from 90% uptime to 95% uptime costs something.
Christopher Trudeau: getting from 95 to 96 costs more than that and getting from 96 like and once you're getting into
Christopher Trudeau: like the four nines five nines thing and then you know cloud flare goes down and you're all screwed
Michael Kennedy: anyways right so it's so it's so ironic it is 100 ironic that you take all these steps and you employ
Michael Kennedy: all these services and it's the complexity of those services that went down like yeah you know
Michael Kennedy: this show will come out in a couple of weeks,
Michael Kennedy: but we're just on the eve of basically three weeks
Michael Kennedy: of important things going down.
Michael Kennedy: First AWS, then Azure, and then GitHub.
Michael Kennedy: And also, and then Cloudflare, so let's put that as four,
Michael Kennedy: within three weeks, right?
Michael Kennedy: And the AWS one was like, the reason it went down
Michael Kennedy: is DynamoDB had some sort of DNS problem.
Michael Kennedy: Even if you're not using that, the thing you're using,
Michael Kennedy: Like Lambda depends upon DynamoDB for itself to work.
Michael Kennedy: So it was just like a cascade of kabang, right?
Michael Kennedy: And that's a little bit of this complexity.
Michael Kennedy: Like the more complexity you buy in,
Michael Kennedy: even if it's not yours, it is yours in a sense.
Christopher Trudeau: Yeah, yeah.
Christopher Trudeau: And there's always humans involved, right?
Christopher Trudeau: So there's always fallibility somewhere, right?
Christopher Trudeau: Although one of the arguments I have seen recently
Christopher Trudeau: in response to the Cloudflare outages,
Christopher Trudeau: the good news is if you're, you know,
Christopher Trudeau: I saw some articles that were like,
Christopher Trudeau: well, you shouldn't be dependent on Cloudflare.
Christopher Trudeau: And I saw the counter articles were basically,
Christopher Trudeau: you know what, when half the internet's down,
Christopher Trudeau: no one's hassling you that your app is down
Christopher Trudeau: because half the internet's down.
Christopher Trudeau: So there is an excuse when it isn't your fault.
Christopher Trudeau: So yeah, anyways.
Christopher Trudeau: That is true.
Michael Kennedy: And you don't see what Cloudflare saved people.
Christopher Trudeau: Yes.
Michael Kennedy: Right?
Michael Kennedy: I'm not using Cloudflare.
Michael Kennedy: I actually use bunny.net.
Michael Kennedy: But CDNs make it possible for your app
Michael Kennedy: to survive these spikes in ways
Michael Kennedy: that they very well may not with without and certainly the ddos type of stuff that they protect
Christopher Trudeau: against well and i use it simply for certificates like google decided everyone shall be https even
Christopher Trudeau: my sites that don't need it and rather than try to figure out automation for let's encrypt has
Christopher Trudeau: gotten a lot better but when i first started it it was like and i need this and i need this and i
Christopher Trudeau: need this and then the cron job could go down or it's like or i can stick cloud fire in front of it
Christopher Trudeau: and I never have to think about it ever again, right?
Christopher Trudeau: So yeah, there's a little bit of value that way.
Michael Kennedy: Yeah, there definitely, definitely is.
Michael Kennedy: Another thing I want to kind of bring back a little bit
Michael Kennedy: is that you opened this segment on.
Michael Kennedy: You said, like I shared the human side of the story
Michael Kennedy: in kind of a humble way.
Michael Kennedy: Like that was certainly something,
Michael Kennedy: that was one of the main goals, like I said.
Michael Kennedy: I think it's just a continuation of the podcast, right?
Michael Kennedy: I started the podcast 10 years ago and I'm like,
Michael Kennedy: when I got into Python, there were no Python podcasts.
Michael Kennedy: there had been but there were none at the time and i'm like there's all these cool libraries i want
Michael Kennedy: to hear the stories and the humanity and you go to the documentation and you're like cool
Michael Kennedy: technology sterile as can be and the reason technology is interesting is not just because
Michael Kennedy: there's an api i can call this but it's like it's a journey and it's a story and it's so i just
Christopher Trudeau: wanted to do that again in the book it's all problem solving right and and there has to have
Christopher Trudeau: have been a problem for someone to want to solve it, which means there's going to have been people
Christopher Trudeau: involved in trying to figure out what that is. Yeah. I think a lot of people maybe, I don't know,
Michael Kennedy: I shouldn't speak for people. It seems to me though, like a lot of people, they look at a
Michael Kennedy: technology and they think, they just assess it as a dry, sterile sort of thing on its own. That was
Michael Kennedy: created in a context, right? Why was celery created? Not just so I can send events to it and
Michael Kennedy: like, you know, add more complexity and asynchronous, it solved a real problem.
Michael Kennedy: And if you, if you hear and you understand and you, you follow that journey, you're like,
Michael Kennedy: I see this is where this come from and why it exists.
Michael Kennedy: Then you can decide, is it for me?
Michael Kennedy: Right.
Christopher Trudeau: Well, and, and I think doubly so in the, in the open source space, because like this is
Christopher Trudeau: all volunteer work.
Christopher Trudeau: And so knowing a little bit about who's doing what and, you know, humanizing that a little
Christopher Trudeau: bit.
Christopher Trudeau: Right.
Christopher Trudeau: Their motivation.
Christopher Trudeau: Yeah.
Christopher Trudeau: And it's also easier to be grateful, right?
Christopher Trudeau: Like this isn't some soulless corporate machine.
Christopher Trudeau: There was a reason behind this and a driver behind it.
Michael Kennedy: This portion of Talk Python To Me is brought to you by Sentry.
Michael Kennedy: Let me ask you a question.
Michael Kennedy: What if you could see into the future?
Michael Kennedy: We're talking about Sentry, of course.
Michael Kennedy: So that means seeing potential errors, crashes, and bugs before they happen.
Michael Kennedy: Before you even accept them into your code base.
Michael Kennedy: That's what Sentry's AI Sears code review offers.
Michael Kennedy: You get error prediction based on real production history.
Michael Kennedy: AI Seer Code Review flags the most impactful errors your PR is likely to introduce before merge using your app's error and performance context, not just generic LLM pattern matching.
Michael Kennedy: Seer will then jump in on new PRs with feedback and warning if it finds any potential issues.
Michael Kennedy: Here's a real example.
Michael Kennedy: On a new PR related to a search feature in a web app, we see a comment from seer by sentry bot in the PR.
Michael Kennedy: And it says, potential bug, the process search results function can enter an infinite recursion when a search query finds no matches.
Michael Kennedy: As the recursive call lacks a return statement and a proper termination condition.
Michael Kennedy: And Seer AI code review also provides additional details which you can expand for further information on the issue and suggested fixes.
Michael Kennedy: And bam, just like that, Sear AI Code Review has stopped a bug in its tracks without any
Michael Kennedy: devs in the loop.
Michael Kennedy: A nasty infinite loop bug never made it into production.
Michael Kennedy: Here's how you set it up.
Michael Kennedy: You enable the GitHub Sentry integration on your Sentry account, enable Sear AI on your
Michael Kennedy: Sentry account, and on GitHub, you install the Sear by Sentry app and connect it to your
Michael Kennedy: repositories that you want it to validate.
Michael Kennedy: So jump over to Sentry and set up Code Review for yourself.
Michael Kennedy: Just visit talkpython.fm/seer-code-review.
Michael Kennedy: The link is in your podcast player show notes and on the episode page.
Michael Kennedy: Thank you to Sentry for supporting Talk Python and me.
Christopher Trudeau: Inside the book, you've added a couple of things that are a little sort of non-standard,
Christopher Trudeau: like the audio reader briefs and the galleries.
Christopher Trudeau: You want to give a quick rundown?
Christopher Trudeau: And speaking of motivation, what motivated you to include those things?
Michael Kennedy: - So let me describe what they are first,
Michael Kennedy: 'cause they are weird,
Michael Kennedy: but they're weird in a good way, I think.
Michael Kennedy: So if you go to the book,
Michael Kennedy: my vision was somebody's gonna be reading this,
Michael Kennedy: very likely on a Kindle,
Michael Kennedy: and if I go and put really nice diagrams, pictures, whatever,
Michael Kennedy: how good is that gonna look in a Kindle paper white,
Michael Kennedy: black and white, you know what I mean?
Michael Kennedy: Like how hard is that going to be to read?
Michael Kennedy: I think it's gonna be hard is what I decided.
Michael Kennedy: And so what I ended up doing is I said, okay,
Michael Kennedy: How can I make it better for people so that when they want to work with code, it's not trapped inside your Kindle or your iPad, Apple Books or wherever you read it, but it's super accessible, right?
Michael Kennedy: So what I did is I created some things I called galleries, and there's a code gallery, a figure gallery, and a links gallery.
Michael Kennedy: And these are just like, they're kind of like an index of those things.
Michael Kennedy: So like the links one just says, hey, here's all the URLs that we talked about in chapter 10 or chapter 11.
Michael Kennedy: and just the sentence that contains them.
Michael Kennedy: So instead of trying to go back through
Michael Kennedy: and flipping through the book,
Michael Kennedy: like, where was that thing they talked about, right?
Michael Kennedy: Like, no, you just go to the gallery
Michael Kennedy: and you click on the chapter
Michael Kennedy: or you just do command F.
Michael Kennedy: There it is, you know what I mean?
Michael Kennedy: And also for, especially for the figures,
Michael Kennedy: like it has like 2,000 or 4,000
Michael Kennedy: by whatever level pictures
Michael Kennedy: that you're not even allowed to put into
Michael Kennedy: like a Kindle book.
Michael Kennedy: They're like, no, we're going to redo those,
Michael Kennedy: rescale those images for you
Michael Kennedy: down to something fuzzy, right?
Michael Kennedy: So if you want to read like little tiny texts, I put it there.
Michael Kennedy: So that's the galleries.
Michael Kennedy: And I was just maybe a little bit more backstory here is when I wrote this,
Michael Kennedy: I've worked with other type of editing things, any tools.
Michael Kennedy: I'm just like, I need to write this and I need to get this done in a super fluid
Michael Kennedy: way.
Michael Kennedy: So I'm just going to write in Markdown.
Christopher Trudeau: Right.
Michael Kennedy: Just writing in Markdown.
Michael Kennedy: And so what I did is I, of course there's book publishing things that you can put
Michael Kennedy: Markdown into and so on.
Michael Kennedy: But I'm like, I'm just going to write one markdown file per chapter and then write some Python program to assemble that in interesting ways.
Michael Kennedy: Right.
Michael Kennedy: And then turn that into an EPUB or PDF or Kindle or whatever through something called Pandoc.
Michael Kennedy: Are you familiar with Pandoc?
Christopher Trudeau: I've heard of it.
Christopher Trudeau: Yeah.
Michael Kennedy: If you go and look, for people who don't know what Pandoc is, if you go look at Pandoc, it has right on the web page, it has this like fuzzy thing on the right.
Michael Kennedy: It's like gray fuzzy.
Michael Kennedy: You know, what is that?
Michael Kennedy: this thing on the right shows you all the formats that go in and all the formats that could come out
Michael Kennedy: and it's it's insane like you can't even the line is just the lines connecting the graphs of these
Michael Kennedy: things it's just a black blob like i could put a haddock uh a haddock document whatever that is
Michael Kennedy: it convert that to a doc book four right i mean it's insane okay so what i did is i built this
Michael Kennedy: Python, simple Python thing that reassembles Markdown in certain ways and then feed the
Michael Kennedy: final thing that it built into Pandoc to get the different ebook formats.
Christopher Trudeau: Right, right.
Christopher Trudeau: Okay.
Michael Kennedy: But then it occurred to me, like, so I didn't start out with these gallery type things or
Michael Kennedy: other stuff, but I'm like, well, this is just Python against Markdown.
Michael Kennedy: Surely I can start pulling out all the links and pulling out the images and then writing
Michael Kennedy: them somewhere else and then just committing that to GitHub.
Michael Kennedy: So once, you know, it's kind of just the standard story of Python or programming in general,
Michael Kennedy: but I think it's extra common in Python.
Michael Kennedy: It's like, I started solving the problem with Python.
Michael Kennedy: And once that was in place, it's like the next block and the next thing is just like,
Michael Kennedy: that's easy now.
Michael Kennedy: And that's easy.
Michael Kennedy: And these three things are also easy.
Michael Kennedy: Let's just do that and just keep adding to it.
Michael Kennedy: So that's where they came from is one, wanting to make sure people had a good experience
Michael Kennedy: with like code resources, pictures, and so on.
Michael Kennedy: But also it's just kind of following the lead of like, hey, let's just keep going.
Christopher Trudeau: Well, and it's one of the beauties of an ebook.
Christopher Trudeau: If dead tree copies, those things cost money.
Christopher Trudeau: And so it's like, oh, I've got a great idea for six more appendices.
Christopher Trudeau: And that's when you start going, oh, wait a second.
Christopher Trudeau: I'm not going to add 300 pages to a 200 page book.
Christopher Trudeau: Yeah, exactly.
Christopher Trudeau: With an ebook, you can go, oh, yeah, here, we can make this referenceable in a couple
Christopher Trudeau: different ways.
Michael Kennedy: Right.
Michael Kennedy: Yeah.
Michael Kennedy: It's like it duplicates the images into, you know, maybe 20 more pages or something, but it's an ebook.
Michael Kennedy: Who cares?
Christopher Trudeau: Exactly.
Christopher Trudeau: Yeah.
Christopher Trudeau: So, you know, over the history of the show, I think I've become familiar with your AI journey.
Christopher Trudeau: And recently, it sounds like you've bought.
Christopher Trudeau: It's your fairly big proponent.
Christopher Trudeau: That being said, there's still a Made by Humans logo inside.
Christopher Trudeau: Yeah.
Christopher Trudeau: So I'm going to put you on the spot.
Christopher Trudeau: Do you believe in it or not?
Christopher Trudeau: Do I believe in it or not?
Christopher Trudeau: So why made by humans?
Michael Kennedy: Yeah, it's a really good question.
Michael Kennedy: So I think there's a weariness of content generated by AI or assisted by AI meant to attract attention and build authoritative feelings about a thing.
Michael Kennedy: when that authority or that skill set is not necessarily yours.
Michael Kennedy: And that I still very much do not like.
Michael Kennedy: If I wanted to create a blog, I mean, I guess I could do it.
Michael Kennedy: It'd be a fun experiment, I guess, in sort of an evil way.
Michael Kennedy: Like, what if I just go create a completely random blog
Michael Kennedy: and I just have chat just bust out an article twice a day, every day,
Michael Kennedy: of the thing that's on the top of Hacker News or something?
Michael Kennedy: You know, just like, you could do that.
Michael Kennedy: And actually, it might even be interesting.
Michael Kennedy: I don't really even know.
Michael Kennedy: but I don't want it. I don't want that. Right. And for this, I wanted to share my story,
Michael Kennedy: not have AI create a book that has bullet points of my story. Right. Right. Yeah. So for me,
Michael Kennedy: it was important to like write this. I wrote it a hundred percent by Michael, right. It took me
Michael Kennedy: a lot of work. People's, I know like it got posted on like Reddit and I think hacker news somewhere.
Michael Kennedy: There was a bunch of comp and they're like, Oh, this thing is definitely just AI generated. I'm
Christopher Trudeau: felt not AI generated to me. If it makes you feel any better, I've had actually comments pop up on
Christopher Trudeau: some of my video courses claiming that my voiceover was AI. So that's just the world we live in now.
Michael Kennedy: It's the world we live in and there's not a lot you can do with it. So just kind of put a little
Michael Kennedy: bit of a pushback against that. I did put like a prefix sort of thing and a label that says
Michael Kennedy: made by humans. And you know, what's really funny is I don't know if I can actually find that section.
Michael Kennedy: I don't think I can on just the web part, but I made a picture.
Michael Kennedy: Maybe I did.
Michael Kennedy: Humans?
Michael Kennedy: No.
Michael Kennedy: Anyway, I made a picture that I drew.
Michael Kennedy: I literally, I'm a big fan of Pixelmator Pro.
Michael Kennedy: I went into Pixelmator Pro and I drew it.
Michael Kennedy: And they said, proof that this is AI generated.
Michael Kennedy: Look at that stupid made by humans graphic.
Michael Kennedy: It's clearly AI generated.
Christopher Trudeau: It would be way better if it wasn't generative.
Christopher Trudeau: Yes.
Michael Kennedy: Okay.
Michael Kennedy: So how do I square that with me actually being quite a fan of AI stuff these days?
Michael Kennedy: Like I'm, let's do like a looking back and then looking forward.
Michael Kennedy: So let's go back 30 years.
Michael Kennedy: I'm also a fan of using editors that when I hit dot, tell me what I can do with that function, class, variable, et cetera.
Michael Kennedy: So I'm not constantly in the documentation, right?
Michael Kennedy: Does that make me not a programmer?
Michael Kennedy: I don't think so.
Michael Kennedy: I'm still writing code.
Michael Kennedy: I'm still thinking architecture.
Michael Kennedy: I'm just not in the documentation constantly.
Michael Kennedy: And honestly, I maybe don't memorize every little function and field of everything in the standard library, right?
Michael Kennedy: It's fine.
Michael Kennedy: That's not where our time is best spent.
Michael Kennedy: And I feel that way about AI programming.
Michael Kennedy: I think there's a lot of, there are pitfalls and there are worrisome aspects of it.
Michael Kennedy: But you can use some of these agentic AI tools these days to think in so much higher level building blocks.
Michael Kennedy: Think of like, I'm working in a function and I'm writing this part.
Michael Kennedy: or I'm working in design patterns.
Michael Kennedy: And I can think of these big sort of concepts.
Michael Kennedy: Well, with this AI stuff, you can just say,
Michael Kennedy: what if we had a login page?
Michael Kennedy: Oh, we have a login page.
Michael Kennedy: Now, what other building block do I need?
Michael Kennedy: Like the building blocks are so big
Michael Kennedy: and sort of non-critical software,
Michael Kennedy: non-super important software becomes
Michael Kennedy: so much cheaper than before.
Michael Kennedy: You're like, I wish I had a little utility or app
Michael Kennedy: that would do this,
Michael Kennedy: but it just definitely doesn't justify
Michael Kennedy: two weeks of work to have it. Like, what if it was a couple of prompts and half an hour? Like,
Michael Kennedy: yeah, well then I'll have it. You know what I mean? And you can, that is transformative
Christopher Trudeau: for how we work. Yeah. So much of coding is boilerplate, right? So if we can figure out how
Christopher Trudeau: to make that easier, then why not? Right. And I haven't got there with it myself. I don't know
Christopher Trudeau: whether I will. I'm definitely a little more suspicious of it than you are, but I copy and
Christopher Trudeau: paste code all the time.
Christopher Trudeau: And it's not like I'm like, oh, I have to hand tune that.
Christopher Trudeau: No, it's like, well, I got to copy something that does that.
Michael Kennedy: - Yeah, let me give you a concrete example
Michael Kennedy: because I think it's easy to talk in generalizations
Michael Kennedy: and people are like, well, that's not for me,
Michael Kennedy: a bunch of AI slop, which is fair.
Michael Kennedy: But I'll give you an example of one thing I'm like,
Michael Kennedy: this was just such a nuisance and I'm gonna fix it.
Michael Kennedy: So when I first built Talk Python, the website 10 years ago,
Michael Kennedy: Bootstrap was all the rage, not modern Bootstrap,
Michael Kennedy: like old Bootstrap, right?
Michael Kennedy: Which they've completely redone the way
Michael Kennedy: that you have to structure your HTML and CSS
Michael Kennedy: completely, incompatibly, several times since then.
Michael Kennedy: And until very recently, until this summer,
Michael Kennedy: every time I wanted to add a feature or an aspect,
Michael Kennedy: like for example, this whole section that hosts the book,
Michael Kennedy: I wanna add that, well, you know what I had to do?
Michael Kennedy: I had to go write like 10-year-old Bootstrap.
Michael Kennedy: And I'm like, I hate it so much.
Michael Kennedy: There's so much nicer tools I could be doing this.
Michael Kennedy: but there's 8,000 lines of HTML and almost as many CSS.
Michael Kennedy: Does it justify me rewriting that much UI
Michael Kennedy: so that I can feel a little bit better
Michael Kennedy: and use a little bit nicer UI tooling?
Michael Kennedy: No, it definitely doesn't.
Michael Kennedy: And so for a couple of years, I'm like,
Michael Kennedy: oh, I wish I could do something else,
Michael Kennedy: but it's not worth it.
Michael Kennedy: And then I was sitting on my porch,
Michael Kennedy: little back area with my computer in the summer,
Michael Kennedy: hanging out, I'm like, you know what?
Michael Kennedy: I bet Claude could do it.
Michael Kennedy: Hey, Claude, rewrite all of this site.
Michael Kennedy: make a plan and rewrite it, move it from Bootstrap 3 to Bulma, which is like simple tailwind,
Michael Kennedy: and just completely do it. Four hours later, the whole thing was redone, like 20,000 lines of edits.
Christopher Trudeau: Wow.
Michael Kennedy: Done. And it wasn't perfect. I had to go, you messed up a little bit here. And actually,
Michael Kennedy: that was right, but that doesn't look good anymore. So could you actually just make it look,
Michael Kennedy: you know what I mean? But I mean, it was like half a day. That work was done.
Michael Kennedy: Right.
Christopher Trudeau: And that is a different level.
Michael Kennedy: No, it would have been weeks to a month.
Michael Kennedy: And it's the worst kind.
Christopher Trudeau: It's like, okay, here's how the grid system used to work.
Michael Kennedy: Let me restructure the HTML.
Michael Kennedy: Oh, you lost a div?
Michael Kennedy: Whoopsie.
Michael Kennedy: Now how are you going to untangle this?
Michael Kennedy: You know what I mean?
Michael Kennedy: Like really, really not good stuff.
Michael Kennedy: And you can just turn these tools on it.
Michael Kennedy: And I'm like, you know, love it or hate it.
Michael Kennedy: That is a skill and a power and a tool that is unlike things we've had before.
Michael Kennedy: And so when I started having some of those kinds of experiences, I'm like, all right,
Michael Kennedy: I need to pay attention to this.
Michael Kennedy: I honestly think a lot of these AIs and LLMs,
Michael Kennedy: they're kind of copyright theft and other types of things.
Michael Kennedy: And there's the environmental aspect and all that.
Michael Kennedy: But the thing is out of the box.
Michael Kennedy: Pandora is on the loose, right?
Michael Kennedy: So given that you're putting your head in the sand,
Michael Kennedy: it's not going to make it go away.
Michael Kennedy: Should you use it or not?
Michael Kennedy: It's a very powerful tool.
Michael Kennedy: And so that is what I'm excited about,
Michael Kennedy: but I'm not excited about when I go to YouTube
Michael Kennedy: and I see a video and you can just tell
Michael Kennedy: that it's a voiceover plus some general,
Michael Kennedy: or I go to read a blog and you can tell that it's like,
Michael Kennedy: they didn't even put enough energy into like,
Michael Kennedy: they spent less time writing than I have to read it.
Michael Kennedy: That's not right.
Michael Kennedy: There's something going wrong here.
Christopher Trudeau: - Well, as with all tools,
Christopher Trudeau: we'll figure out what works and what doesn't work.
Christopher Trudeau: Those 8,000 files that you're talking about though,
Christopher Trudeau: those are 8,000 files you have and built over time.
Michael Kennedy: I suspect- - Lines, by the way, not files.
Christopher Trudeau: - Lines, I'm sorry.
Michael Kennedy: - I think it's a couple hundred files probably.
Christopher Trudeau: so, but, so that might be something that folks listening aren't really aware of,
Christopher Trudeau: right?
Christopher Trudeau: Like, you're not just the, you know, the podcasts and the courses, but you're
Christopher Trudeau: the guy behind the engineering behind all of it.
Christopher Trudeau: So why, you know, why do that?
Christopher Trudeau: Why not, you know, Squarespace or something along those lines didn't exist when you came
Christopher Trudeau: out, but you get the idea.
Christopher Trudeau: Like what, what, what, why spin it up yourself?
Christopher Trudeau: How did you, how did you get there?
Michael Kennedy: So it's a good question.
Michael Kennedy: When I started, there were places I could have gone and hosted the podcast.
Michael Kennedy: You know, they were very unappealing.
Michael Kennedy: Not in the sense, like, as a consumer of it, like, they put your show there.
Michael Kennedy: They were really ugly.
Michael Kennedy: And they would do things like, next to your show, here's some other shows you might like.
Michael Kennedy: You're like, no.
Michael Kennedy: No, I don't.
Michael Kennedy: I just got people to come to my page.
Michael Kennedy: You're sending them away.
Michael Kennedy: Like, don't do that.
Michael Kennedy: Right.
Michael Kennedy: But those sites are like Squarespace or whatever, and they're hosting a bunch of them.
Michael Kennedy: And so they want engagement on their platform broadly.
Michael Kennedy: They're not for you.
Michael Kennedy: So initially I thought, well, plus I don't have a ton of experience writing Python code.
Michael Kennedy: And if I'm going to do the podcast, the more I can get my hands on this stuff, get experience.
Michael Kennedy: So I just sat down and really in like three days, I wrote the Talk Python website.
Michael Kennedy: I'm like, I'm doing it this weekend.
Michael Kennedy: You know what I mean?
Michael Kennedy: I had a job at the time.
Michael Kennedy: So I'm like, I got to do it.
Michael Kennedy: It's a long weekend.
Michael Kennedy: We're doing it.
Michael Kennedy: And so I just sat there and cranked it out and really got a really good appreciation for building all the way to the end, you know, like not 60% or following a demo, but like, no, here's a fully working app and all the little nuances.
Michael Kennedy: But then honestly, that's like the genesis of this, the story that is the book is, well, now how do I get it out there?
Michael Kennedy: I built it.
Michael Kennedy: It's fine.
Michael Kennedy: It works great here locally.
Michael Kennedy: Now, like, where do I take it?
Michael Kennedy: Right.
Michael Kennedy: And a lot of places said, well, you just fire up your Linux terminal and your SSH.
Michael Kennedy: And I'm like, these words are making me very nervous.
Michael Kennedy: I need them to not do that.
Michael Kennedy: I need you to stop saying that.
Christopher Trudeau: Don't forget to swing the chicken over your head.
Christopher Trudeau: Exactly.
Michael Kennedy: So I actually started in Python Anywhere, even before Anaconda owned them, which was the
Michael Kennedy: selling point was you go to your browser.
Michael Kennedy: You, I think you give it a get URL, or maybe, maybe you go into a terminally do a get plot.
Michael Kennedy: I can't remember how it worked 10 years ago, but it was basically you go to the webpage,
Michael Kennedy: you type in your domain, you get a terminal, which is basically an SSH connection, but
Michael Kennedy: in the terminal, and then you give it some commands and then they manage it for you.
Michael Kennedy: And I'm like, okay, I don't really have to know any Linux.
Michael Kennedy: I just have to do the two things that says in the terminal.
Michael Kennedy: And then they keep it running and they, they do the SSH key, the SSH certificates, the DNS,
Michael Kennedy: that i'm like this i can do this and i got it going there and i was really proud and i ran
Michael Kennedy: i ran talk python on basically python anywhere and sqlite for like six months first six months
Michael Kennedy: but then it occurred to me that python anywhere is not really intended to host production level
Michael Kennedy: applications and it occurred to me when i got an email from them one day again this is pre-anaconda
Michael Kennedy: and what it said was we're going to be down for four hours as we do some maintenance that's not
Michael Kennedy: going to be the best look for my podcast which is just now starting to gain some traction and getting
Michael Kennedy: a lot of people talking on social media and saying hey there's a new podcast you should check
Michael Kennedy: it out i'm like the four hours are not making me psyched like i understand that things might have
Michael Kennedy: to reboot they might be down for 30 seconds but hours and hours seems a little like this is not
Michael Kennedy: really what they intend this for it's like for hobbyists to put up a thing and i probably don't
Christopher Trudeau: belong there anymore and once you shifted why not aws or azure or something like that so
Michael Kennedy: So I looked around and I went to DigitalOcean.
Michael Kennedy: So I'd done stuff with both Azure and AWS.
Michael Kennedy: A little part that I left out about this web journey
Michael Kennedy: is I had actually run some pretty big websites
Michael Kennedy: in both AWS and Azure,
Michael Kennedy: but they were Windows-based.NET type things, right?
Michael Kennedy: So literally GUI sort of configuration hosting them
Michael Kennedy: or platform as a service.
Michael Kennedy: And I don't know, I looked at both of them,
Michael Kennedy: especially Azure at the time,
Michael Kennedy: I'm like, "Well, this is complicated,"
Michael Kennedy: and like unnecessarily so,
Michael Kennedy: and I'm afraid I'm trading one level of complexity
Michael Kennedy: for another, and also really expensive,
Michael Kennedy: like no joke expensive.
Michael Kennedy: The podcast, like in terms of people viewing the pages,
Michael Kennedy: is nothing insane, I mean, it's certainly popular,
Michael Kennedy: but it's nothing like, how are you gonna handle that?
Michael Kennedy: But the amount of traffic the podcasts and courses do
Michael Kennedy: in terms of video and MP3s and even XML,
Michael Kennedy: Like I think Hawk Python ships about a gigabyte of,
Michael Kennedy: no, a terabyte of XML.
Michael Kennedy: Think about a terabyte of XML every month.
Michael Kennedy: Like it's basically a distributed denial, a DDoS,
Michael Kennedy: and a welcome DDoS attack,
Michael Kennedy: because you'll think how many podcast players are out there
Michael Kennedy: going, got a new one, got a new one,
Michael Kennedy: got a new one, got a new one.
Michael Kennedy: And each one of those requests is like a meg of XML or more.
Michael Kennedy: You know, it's like, got a new one,
Michael Kennedy: got a new one
Michael Kennedy: certainly the courses and my bill was well over a thousand bucks and just bandwidth right and then
Michael Kennedy: I looked at DigitalOcean and I'm like oh you mean it all that bandwidth is free it's included you
Michael Kennedy: get like terabytes of free traffic with DigitalOcean or Hetzner or some of these smaller ones and I'm
Michael Kennedy: just like yeah this is better like I don't know what I don't know what this stuff for is here
Michael Kennedy: where they charge you know a hundred dollars a terabyte yeah just to ship stuff around it's crazy
Christopher Trudeau: I have found, particularly professionally, it's like, oh, you're going to charge me for how many DNS lookups there are.
Christopher Trudeau: That doesn't seem like something I can predict.
Christopher Trudeau: Yes, I know.
Christopher Trudeau: And quite frankly, if it reaches a certain level, I need you to turn it off because something's gone horribly awry.
Michael Kennedy: This portion of Talk Python To Me is brought to you by Agency.
Michael Kennedy: The Agency, spelled A-G-N-T-C-Y, is an open source collective building the Internet of Agents.
Michael Kennedy: We're all very familiar with AI and LLMs these days, but if you have not yet experienced the
Michael Kennedy: massive leap that agentic AI brings, you're in for a treat. Agentic AI takes LLMs from the world's
Michael Kennedy: smartest search engines to truly collaborative software. That's where agency comes in. Agency is
Michael Kennedy: a collaboration layer where AI agents can discover, connect, and work across frameworks.
Michael Kennedy: For developers, this means standardized agent discovery tools, seamless protocols for interagent
Michael Kennedy: communication, and modular components to compose and scale multi-agent workflows.
Michael Kennedy: Agency allows AI agents to discover each other and work together regardless of how they're
Michael Kennedy: built, who built them, or where they run.
Michael Kennedy: And they just announced several key updates, including interoperability with Anthropics,
Michael Kennedy: Model Context Protocol, MCP, a new observability data schema enriched with concepts specific to
Michael Kennedy: multi-agent systems, as well as new extensions to the OpenAgentic Schema Framework, OASF.
Michael Kennedy: So are you ready to build the internet of agents? Get started with Agency and join
Michael Kennedy: Crew AI, LangChain, Llama Index, BrowserBase, Cisco, and dozens more. Visit talkpython.fm
Michael Kennedy: slash agency to get started today.
Michael Kennedy: That's talkpython.fm/agency.
Michael Kennedy: The link is in your podcast player's show notes
Michael Kennedy: and on the episode page.
Michael Kennedy: Thank you to the agency for supporting Talk Python and me.
Michael Kennedy: There's certainly areas where the cloud can go like sideways.
Michael Kennedy: In the book, I mentioned a story about Kara, I believe.
Michael Kennedy: And that was this project that this woman,
Michael Kennedy: I think in Hong Kong or South Korea,
Michael Kennedy: I'm afraid I can't remember which,
Michael Kennedy: I think it's South Korea.
Michael Kennedy: Anyway, created this.
Michael Kennedy: she's a photographer and really hates ai generated art so created this service that would say hey
Michael Kennedy: give me a piece of art and i'll tell you if it's ai generated or not or something vaguely like this
Michael Kennedy: and her thing took off in the app store and was like number six and her cloud bill at versell was
Michael Kennedy: ninety six thousand dollars in a week right as not as a business just as a human who built something
Christopher Trudeau: fun as a side project like oh my yeah and in fairness to a lot of those tools they tend to
Christopher Trudeau: have ways of saying, please limit this and do that.
Christopher Trudeau: Yeah.
Christopher Trudeau: They're not the default.
Christopher Trudeau: And if you're not thinking about that problem and protecting yourself, you know, you'd, you'd
Christopher Trudeau: kind of hope that it would be the other way around.
Christopher Trudeau: It should be, yeah, you know, here's your cap.
Christopher Trudeau: And if you want more than that, you need to do something about it.
Michael Kennedy: Yeah, absolutely.
Michael Kennedy: And to their fairness, they did send her a message saying your bill is going way higher
Michael Kennedy: than you might expect.
Michael Kennedy: And she didn't look at her email or something, but still.
Michael Kennedy: And so one of the things that really appeals to me is when you choose something like a
Michael Kennedy: Hetzner or a DigitalOcean or something, and you say, I'm going to pay for the server.
Michael Kennedy: You're like, okay, that's $40 I'm committing to.
Michael Kennedy: Maybe double that, you know, whatever.
Michael Kennedy: But the bandwidth is basically free or it's included, right?
Michael Kennedy: But for 40 bucks, it feels free.
Michael Kennedy: And then it's only going to cost as much as it costs.
Michael Kennedy: You might have to go, oh my gosh, it's too much traffic.
Michael Kennedy: We're going to have to deal with it.
Michael Kennedy: but it's the upper bound of those systems these days is so high.
Michael Kennedy: It is so high that we, you know, back to that aspirational thing that you mentioned, right?
Michael Kennedy: Like the chances that you blow past what a $50 server can handle,
Michael Kennedy: you're going to be really, really popular with the SaaS or something.
Christopher Trudeau: You were joking earlier about SQLite.
Christopher Trudeau: It's gotten so much better as well.
Christopher Trudeau: And I'm not saying it's the answer to everything,
Christopher Trudeau: But I could probably come pretty close to running your site now too.
Christopher Trudeau: Like it's scary between the processor improvements and the improvements in the software.
Christopher Trudeau: It's made a big difference for that kind of stuff.
Christopher Trudeau: It takes very, very little hardware to handle something that's pretty, pretty impressive.
Michael Kennedy: Yeah.
Christopher Trudeau: So I think the title of chapter four is one of my favorites.
Christopher Trudeau: It gives a little hint as to what approach you took.
Christopher Trudeau: The title is Docker, Docker, Docker.
Christopher Trudeau: so what approach did you take you know what i was really not wanting to do docker on genuinely i mean
Michael Kennedy: that and so what i did when i originally switched over to some vms i'm like okay the story i'm told
Michael Kennedy: of what the cloud is you know i bought the aw the ec2 story well we've got all this extra capacity
Michael Kennedy: oh instead of getting like really expensive heavy metal you know big metal sort of servers you get
Michael Kennedy: a bunch of small ones and they're kind of like cheap and you just make them throw them away
Michael Kennedy: whatever right so I went and made a bunch of small servers in in DigitalOcean I
Michael Kennedy: think I had eight servers at one point and I thought this is gonna give me lots
Michael Kennedy: of isolation if I got to work on this one thing it won't mess with that and
Michael Kennedy: what I realized is they're interconnected enough like that really I
Michael Kennedy: end up just having to reboot eight servers in an orchestrated way than
Michael Kennedy: managing I'm like this is just worse I gotta patch eight servers instead of one
Michael Kennedy: now because this is not better so how do I end up with docker docker docker I
Michael Kennedy: I realized that it would be better to just have one server and basically stepping back just a little bit.
Michael Kennedy: Like, what if you could completely isolate yourself from almost all the complexity of the cloud and all of their services and all that junk and just say, I have a place where I can run apps that's got enough capacity that I can just keep throwing more apps in there if I want.
Michael Kennedy: And it doesn't have any tie in with the specific APIs and services of a particular provider.
Michael Kennedy: So I said, well, what if I just get a big server and I just run all my apps in there?
Michael Kennedy: And if I want a database, I put the database there.
Michael Kennedy: If I want like a Valkey caching, I can put a Valkey caching and things like that.
Michael Kennedy: And that's sort of as much autonomy as I can exert on running something in the cloud.
Michael Kennedy: It's almost like I went and got a big machine and stuck it in my closet.
Michael Kennedy: But that's insane because you get million dollar networking equipment and, you know, failover.
Michael Kennedy: But that doesn't mean you have to go fully pass managed database, this other service.
Michael Kennedy: Like you could just say, just give me a Linux machine where I can then go do my, do my,
Michael Kennedy: my hosting and all my apps and let them party and talk to each other and stuff in there.
Michael Kennedy: Right.
Michael Kennedy: So then I thought, well, I don't have all these little servers for isolation.
Michael Kennedy: I'm not really sure I want to throw all this random stuff together, like completely just
Michael Kennedy: in the same soup in that one big server.
Michael Kennedy: And by the way, the big server right now that it's running
Michael Kennedy: has eight cores, 16 gigs of RAM, and costs $30.
Christopher Trudeau: Right.
Michael Kennedy: It comes with two terabytes of four terabytes traffic,
Michael Kennedy: something like that.
Michael Kennedy: Lots.
Michael Kennedy: $400 of included bandwidth for $30.
Michael Kennedy: So I said, well, what if I took that over?
Michael Kennedy: I think autonomy is a big motivator of this whole journey as well.
Michael Kennedy: Like, I don't want to be tied into all these different things.
Michael Kennedy: I just want a space where I have reliable compute and networking
Michael Kennedy: and Linux, and I can just do whatever.
Michael Kennedy: So then I said, all right, well,
Michael Kennedy: I better figure out some of the stuff with Docker just so that there is some
Michael Kennedy: isolation of all the different pieces living in the same space.
Michael Kennedy: So I forced myself to learn Docker and what it occurred to me was, Oh,
Michael Kennedy: Docker is just writing down in a file what I would normally have to type in the
Michael Kennedy: terminal to make the thing happen.
Michael Kennedy: Except for I put run in front of the command or copy instead of CP and I
Christopher Trudeau: get a repeatability and, and, and someone else has packaged a bunch of this stuff.
Christopher Trudeau: so you don't have to do it yourself.
Michael Kennedy: Exactly.
Michael Kennedy: And I'm like, okay,
Michael Kennedy: I don't know what all my concern was about
Michael Kennedy: because it's not much more complicated.
Michael Kennedy: One of my concerns was sort of monitorability.
Michael Kennedy: Like if I just go there
Michael Kennedy: and I just create a bunch of virtual environments
Michael Kennedy: and run my code,
Michael Kennedy: I can actually go and see the source code.
Michael Kennedy: I can see the config files.
Michael Kennedy: I can see where the logs are being written
Michael Kennedy: and I can sort of manage it through SSH.
Michael Kennedy: And I thought, well,
Michael Kennedy: if I put a bunch of disconnected Docker things together,
Michael Kennedy: that's going to be challenging.
Michael Kennedy: And I realized actually, not really.
Michael Kennedy: like if you set it up the same you could still tail all the logs and you can you can ssh into
Michael Kennedy: the containers if you really have to you know look at something running inside them like what is the
Michael Kennedy: process actually i don't know what does it do how much memory is it using relative to other stuff
Christopher Trudeau: but and i also talk about a bunch of tools for monitoring them yeah so how has that changed over
Christopher Trudeau: time like you started with some fairly bare bones you've got you've got some extra tools what what's
Christopher Trudeau: What does that evolution look like?
Michael Kennedy: Well, I used to rely more on whatever the cloud provider,
Michael Kennedy: DigitalOcean or Hetzner, offered.
Michael Kennedy: You know, they always have like a metrics section.
Michael Kennedy: So I can go see, well, what's the CPU doing?
Michael Kennedy: What's the memory looking like over time?
Michael Kennedy: And that works okay.
Michael Kennedy: And if you've got one app that you're running there,
Michael Kennedy: you're like, okay, well, that must be how much memory the app is using.
Michael Kennedy: But right now, if I go to Talk Python and I ask,
Michael Kennedy: I think there are 27 different containers running,
Michael Kennedy: which you can't ask how's the server doing.
Michael Kennedy: I know very much.
Michael Kennedy: You know, it really matters much more.
Michael Kennedy: Well, it's busy.
Michael Kennedy: I get it.
Michael Kennedy: But which one is the problem?
Michael Kennedy: Which one is busy?
Michael Kennedy: Which one's using all of them?
Michael Kennedy: So I started to look around
Michael Kennedy: and there's actually a bunch of recommendations
Michael Kennedy: that I have for the book.
Michael Kennedy: So one of them,
Michael Kennedy: the first one I used was this thing called Glances
Michael Kennedy: and Glances is excellent.
Michael Kennedy: And by the way,
Michael Kennedy: Glances, the way they talk about often getting it,
Michael Kennedy: I think, where do they talk about installing it here?
Michael Kennedy: Probably is often like apt install glances
Michael Kennedy: or something like that, right?
Michael Kennedy: But a lot of these tools even have Docker versions.
Michael Kennedy: If you share the volumes and sockets just right,
Michael Kennedy: they function just the same.
Michael Kennedy: So you could say Docker run glances XYZ
Michael Kennedy: and it doesn't even install,
Michael Kennedy: it doesn't even touch your one big server
Michael Kennedy: that is kind of like your building space.
Michael Kennedy: So it leaves it a little more pure, right?
Michael Kennedy: So glances is super cool.
Michael Kennedy: And what it does is it gives you this really nice dashboard of what's going on with your app, like your server.
Michael Kennedy: How much memory is being used?
Michael Kennedy: How much CPU is being used?
Michael Kennedy: How has that been over time?
Michael Kennedy: Has there been like extended spikes and so on?
Michael Kennedy: And one of the things that's new to Glances, and I don't think it's in this picture that's on their home screen.
Michael Kennedy: I'm pretty sure it is not.
Michael Kennedy: Oh, no, it is.
Michael Kennedy: It just, mine is inverted because I have so many.
Michael Kennedy: It has a container section.
Michael Kennedy: So when you run it, it actually shows you not just the processes, but also gives you a performance, memory, IO, etc.
Michael Kennedy: for all the running containers and their uptimes and those kind of things.
Michael Kennedy: So this is super cool.
Michael Kennedy: So you construct a certain Docker command and then you have this running dashboard that just goes.
Michael Kennedy: So this is the first thing that I started with and I really like that.
Michael Kennedy: But then I also found something called BTOP.
Michael Kennedy: Are you familiar with BTOP?
Christopher Trudeau: No, I haven't used this one.
Christopher Trudeau: Oh my gosh, BTOP is incredible.
Michael Kennedy: This is so good.
Michael Kennedy: it's really something.
Michael Kennedy: Zoom in on it.
Michael Kennedy: So this gives you moving graphs over time
Michael Kennedy: of all sorts of things.
Michael Kennedy: It shows you graphs of network,
Michael Kennedy: inbound, outbound traffic.
Michael Kennedy: It shows you the CPUs.
Michael Kennedy: It gives you a breakdown of like,
Michael Kennedy: here's all the different distributed work
Michael Kennedy: across your eight CPU cores and over total.
Michael Kennedy: It's really something else.
Michael Kennedy: And so this one is really nice.
Michael Kennedy: You can configure the UI a lot to show
Michael Kennedy: and zoom in on disk activity or whatever.
Michael Kennedy: This is really a nice way to view it.
Michael Kennedy: And again, when you run all these Docker containers,
Michael Kennedy: they feel like they're super isolated and tucked away.
Michael Kennedy: And from their perspective, they are.
Michael Kennedy: But when you look in the process list here,
Michael Kennedy: it just shows the process that Docker is running.
Michael Kennedy: So I have all my web apps and APIs and stuff
Michael Kennedy: setting a process name.
Michael Kennedy: So instead of just Python, Python, Python, Python, Python,
Michael Kennedy: it'll say like, talk Python, Granian Worker 1,
Michael Kennedy: talk Python, Granian Worker 2.
Michael Kennedy: Versus indexing service daemon.
Michael Kennedy: And then when you look into any of these tools, you can see, oh, exactly what is busy.
Michael Kennedy: And those are actually the names inside of Docker, but they still surface exactly like
Michael Kennedy: that to all these tools.
Christopher Trudeau: One of the things you said kind of hit home for me, like it was subtle and it kind of
Christopher Trudeau: moved on, which was like, if you interconnect it correctly, right?
Christopher Trudeau: Like if you get the files and sockets going, this goes smoothly.
Christopher Trudeau: And I think it's one of the things you've done very, very well in the book is sort of
Christopher Trudeau: through that, like, as you talk about the different Docker configurations, like, okay,
Christopher Trudeau: well, this is why we're putting this here rather than in the container, this is going to be shared.
Christopher Trudeau: And, you know, and, and there's, and the reason for this, I assume some of that was experimental.
Christopher Trudeau: You just sort of over time, you kind of went, oh, okay, wait, I need that somewhere else.
Christopher Trudeau: Yeah.
Christopher Trudeau: Or, or was it, you know, did, was there somebody's knowledge that you, depended
Christopher Trudeau: on a lot there?
Christopher Trudeau: How did you get there?
Christopher Trudeau: How, how organic was the journey?
Michael Kennedy: the, I would say half and half, like some of it, for example, the glances stuff, I just found
Michael Kennedy: when I went looking for it, that there was like ways to install. And I said, it just said, Oh,
Michael Kennedy: you could just install it by running this Docker thing. And it's like a big, long command. And I'm
Michael Kennedy: like, Oh, that's cool. Because it doesn't matter how long the command is, what I would do is I'll
Michael Kennedy: go into my dot ZS HRC and say alias glances equals paste. And then I saved that somewhere. And I
Michael Kennedy: never I couldn't tell you what it is at all I just know it has to like do a yeah it has a few things
Michael Kennedy: so it can like look back into the host to see you know what's running and so on um yeah so a lot of
Michael Kennedy: it was was like that and then some of it was definitely you know two whole days of like why
Michael Kennedy: won't that talk to that let me build it again let me do some more devote you know what I mean and
Michael Kennedy: eventually like okay all right but once you get it kind of dialed then it's once you get a little bit
Michael Kennedy: of it working it's a blueprint you just like again again again so so you seem to have taken a bit of
Christopher Trudeau: a like a heavier weight approach here you're just it's it's everything in the kitchen sink that that
Christopher Trudeau: implies that it's not the right amount but it's counter to some of the advice that's out there
Christopher Trudeau: uh sometimes folks talk about you know wanting to have things as minimal as possible why why what
Christopher Trudeau: you've done versus the other how how how are they wrong can we start a flame war on the internet you
Michael Kennedy: Let's do it. Let's see how many, Michael, you're wrong. I can get into the YouTube comments.
Michael Kennedy: Actually, please, that's not a challenge. So here's the deal. I want, especially at the
Michael Kennedy: beginning of this journey, when I was like, I want as much comfort and visibility as I can get
Michael Kennedy: in these containers and other areas. You know what I mean? And I wanted to make it as close to,
Michael Kennedy: if I just set up a VM and just, you know, uv, V, ENV, and just roll from there, right? So what I did
Michael Kennedy: is I said, okay, I could try to go for like the super slim Docker image, or I could just get like
Michael Kennedy: a basic Docker image, but then put, you know, I put like, oh, my Z shell and ZSH on it, right?
Michael Kennedy: Does that need it? No, you could use SH, but do you know what happens when you use SH and you go
Michael Kennedy: in there? It's a brand new start. It doesn't remember anything you've ever, any command you've
Michael Kennedy: ever run, it doesn't give you any help. You know, you hit tab, it doesn't tell you nothing, right?
Michael Kennedy: You're like, oh gosh. But if you use like, oh my Z shell, it'll show you, hey, what version of Python
Michael Kennedy: is your virtual environment activated in? And I can just hit command R and see, you know, filter all
Michael Kennedy: my history and I can hit get tab and it'll auto complete all the get commands that I forgot what
Michael Kennedy: I was supposed to use because I'm freaked out because the site is down and how do I fix this?
Michael Kennedy: I mean, I wouldn't actually be in the container for that, but a lot of times you're in there kind
Michael Kennedy: of exploring because you're like, it's been fine for six months, but I need to see something.
Michael Kennedy: And so in the book, at least in the beginning, I recommended to people that they install
Michael Kennedy: some of these tools that you might install into your own terminal to make you feel more comfortable.
Michael Kennedy: So that my assumption is you're kind of new to Docker. You're feeling a little uncomfortable.
Michael Kennedy: Like who cares if it's another hundred megs on your hard drive? You're not shipping your app
Michael Kennedy: to Docker Hub. You're not going to take your web app, probably. It's not a reusable component.
Michael Kennedy: You've got your source code and you want the thing to just run here. You're not shipping it. So
Michael Kennedy: whoever wants to run, you know, indeed.com can just Docker pull that and run it. Like it's,
Michael Kennedy: that's not what it is. And in that context, you're not so worried about the space. And there's a
Michael Kennedy: couple of tips that you can use for like really, really fast build times, right? So I mean, like
Michael Kennedy: container build times for me are like seconds, a few seconds, even though, you know, there's 250
Michael Kennedy: pip install packages for Talk Python training, you know, build times, and build time is also
Michael Kennedy: installing Python, right? You could make these things fast, so it's not like a huge impedance,
Michael Kennedy: but I think for people who are new to it, having something other than just sh, not even bash,
Christopher Trudeau: you're a lot better off. So that's what I promoted. And I think it's, you know, it kind of comes back
Christopher Trudeau: to sort of the thesis of the book as well, right?
Christopher Trudeau: Which, which is right for you.
Christopher Trudeau: so, you know, if you are going to be running a thousand of these spread
Christopher Trudeau: across a whole bunch of different cores, then yeah, if you optimize this, that
Christopher Trudeau: might change your cost framework and everything else.
Christopher Trudeau: Well, right.
Christopher Trudeau: Or if I was, if you're 27, if you're 27 on eight CPUs works fine, then, you
Christopher Trudeau: know, go for it.
Christopher Trudeau: You know, why, why, why get in your own way?
Michael Kennedy: And that advice is not like, this is why I really emphasize the
Michael Kennedy: context sort of thing, right?
Michael Kennedy: Is this advice is bad if your goal is to ship a container to Docker hub so that people can
Michael Kennedy: self host your open source thing.
Michael Kennedy: You don't want that to have extra crap that they don't need.
Michael Kennedy: But when there's only one of them for your machine and you're building it and you're managing
Michael Kennedy: it, you know, make it as comfy and helpful as possible.
Michael Kennedy: That was my philosophy.
Christopher Trudeau: The, the structure of your site is, it has a lot of different pieces to it using
Christopher Trudeau: different technology. You spend some time talking about like static sites and using static sites for
Christopher Trudeau: part of it versus, you know, Python applications and those kinds of parts. How did you end up here?
Christopher Trudeau: Like oftentimes the answer when you're looking at this kind of stuff is, well, I need a CMS for
Christopher Trudeau: everything. And then I will try to figure out how to square peg my round hole of a CMS or whatever.
Christopher Trudeau: So how did you end up with a collection? Well, you know, like many things that start simple,
Michael Kennedy: And you're like, well, just one more thing.
Michael Kennedy: So I tried, I'd kept pretty much the same web framework across all my different sites thinking,
Michael Kennedy: okay, that's, I'm going to just pick one and go with it.
Michael Kennedy: I think a lot of people do that.
Michael Kennedy: You know, there's people who are like, I use Django.
Michael Kennedy: There's people, I use Flask and so on.
Michael Kennedy: And then just slowly over time, you're like, really, this is, this part is really a hassle.
Michael Kennedy: I'd be a lot better off if I made that part served through the CDN or why am I, you know,
Michael Kennedy: One of the things that I see a lot, and it doesn't drive me crazy, but I'm just like,
Michael Kennedy: yeah, it's probably not necessary, is a lot of people in technology X.
Michael Kennedy: For us, that's Python.
Michael Kennedy: It could be JavaScript.
Michael Kennedy: It could be.NET, whatever, right?
Michael Kennedy: People who work extensively in that and have a lot of their identity tied into that, like
Michael Kennedy: I do and others.
Michael Kennedy: Like, I'm a Python developer, right?
Michael Kennedy: So if I'm going to choose a tool, like, let's say, a CMS or a static site generator or something
Michael Kennedy: like that, I'm going to choose the Python one.
Michael Kennedy: I'm a Python person like okay but are there better options out there than the Python ones for what
Michael Kennedy: you're trying to do because are you going to extend this tool no then what do you care of
Christopher Trudeau: what it's written in right your operating system is not written in Python it's written in yeah yeah
Christopher Trudeau: yeah C or I'm not going to use this word processor because it's not written in Python
Michael Kennedy: exactly so I have to go back in no I need a new service like it doesn't you don't see it you don't
Michael Kennedy: have to work with it you don't care and so I ended up a little bit with the mish match of just trying
Michael Kennedy: to say like what are the best tools like for example for the blog and some of the other static
Michael Kennedy: elements i've used hugo which is written in go it's like okay i type the command the command hugo
Michael Kennedy: you know and it it does its thing i don't really care what it's written in the templating extension
Michael Kennedy: is a little bit annoying but um i kind of just went around and said okay well what what do i think
Michael Kennedy: would be the best fit to make to make my life easy not to reinforce my identity as this type of
Christopher Trudeau: of developer or that type of developer you know yeah it's um the one of things you know i'll show
Christopher Trudeau: my own stripes here and and you can defend your beloved flask if you like but having come from
Christopher Trudeau: the django side uh some of the things that you've kind of learned organically here are forced on you
Christopher Trudeau: in django um so when you so so when you when you like the instructions for putting together a
Christopher Trudeau: production site are, and you will run this command and it will move all of your static content over
Christopher Trudeau: here. So like your mental model, when you come from that side is, oh, my site is actually built
Christopher Trudeau: of these, at least these two different things. And I think coming from Flask, you might've sort of
Christopher Trudeau: that, that discovery might've been a little more organic. You might not have been forced into it
Christopher Trudeau: immediately, but once you've come to that realization of, oh, wait, I have these pieces
Christopher Trudeau: and I can use something like Nginx to tie it all together,
Christopher Trudeau: that means, well, then I don't have to figure out
Christopher Trudeau: how to use a CMS for this thing
Christopher Trudeau: that's very unnatural for a CMS.
Christopher Trudeau: I can just mount it under slash blog
Christopher Trudeau: and it'll work fine, yeah.
Michael Kennedy: Yeah, Django is very powerful.
Michael Kennedy: It definitely is.
Michael Kennedy: And I actually talked a lot about that in the book,
Christopher Trudeau: which evaluating web frameworks.
Michael Kennedy: But I would say before we, if we're going to that,
Michael Kennedy: but before we do, I think your point about using Nginx
Michael Kennedy: to piece them together,
Michael Kennedy: things together or caddy or traffic or whatever it doesn't matter like some front end web server
Christopher Trudeau: they all do it yep yeah is so often people think i have this python app let's say i have a django
Michael Kennedy: app so i want to add a cms to it what could i possibly add is it static content well maybe what
Michael Kennedy: you should add is hugo i don't know i'm just making this up right like it might actually be a bad
Michael Kennedy: option but well hugo is not a python thing so how do i put it into my django app i mean they're very
Michael Kennedy: very different in the way they work so they don't really go that super well together if you were to
Michael Kennedy: like how does one literally source code wise go into another but if you just made like a hugo site
Michael Kennedy: or other static site however you make it and then put it on the same server and then in nginx when
Michael Kennedy: you say if you go to this domain slash docs it goes completely over here and if it goes anywhere
Michael Kennedy: else it goes just to django and all of a sudden from the outside it looks like a very cohesive
Michael Kennedy: single thing with just different sub urls but you get to choose the best technology for the static
Michael Kennedy: bits and you get to choose the best technology for your dynamic data-driven bits and that is all just
Michael Kennedy: done by configuring the front-end web server that you don't even have visibility to in python and i
Michael Kennedy: think that that's a big mental shift but it's like those kinds of things that bring a both the
Michael Kennedy: flexibility to make these choices and the simplicity to not try to jam them together
Christopher Trudeau: there's a uh there's a a third-party library for django that i use once in a while which is called
Christopher Trudeau: distill and it's a static site generator based on django so say you had your url was like books
Christopher Trudeau: you know it's books slash one book slash two book slash three well you tell distill i want book and
Christopher Trudeau: i want all the possible queries of this number and it will generate the results as static so even
Christopher Trudeau: when you've got a dynamic site you can actually carve off the static portion and then have that
Christopher Trudeau: fed straight out of nginx and if it isn't if there's no actual dynamic content on the page and
Christopher Trudeau: if it only updates when the database updates or something like that and you can do it nightly like
Christopher Trudeau: this gives you all sorts of other options and you know to come back to your my eight processor
Christopher Trudeau: whatever's well the static sites are almost free you do not even need that you don't even need it
Christopher Trudeau: it's nothing so like you can scale way down and have an absolutely mammoth site just by properly
Michael Kennedy: fine-tuning what's dynamic and what's static yeah you could go to millions and millions of requests
Michael Kennedy: if you just converted all that stuff to static and then put the x the extra resources css image
Michael Kennedy: javascript etc on a cdn yeah like i mean that is like almost web that's like web on easy mode right
Michael Kennedy: there because you it can't go down unless the server literally almost almost can't yeah i mean
Michael Kennedy: Let's not say we're in the eve of like, are we in the eve of a fifth going down?
Michael Kennedy: But I mean, like it can't go down because the code is wrong or there's a race condition
Michael Kennedy: or you're out of memory.
Michael Kennedy: Like it's really close to just if, if the, if the web server is up and you put a CDN
Michael Kennedy: in front of it and then it's not even necessarily that it's like the CDN has to go.
Michael Kennedy: You've got to have a cloud flare level incident.
Christopher Trudeau: Yeah.
Christopher Trudeau: And, and fully distributed in often cases.
Christopher Trudeau: Right.
Christopher Trudeau: So people in, you know, in continents, other than where you are based are getting fantastic load times because it's cached locally for them.
Michael Kennedy: Yeah, I just want to give a little shout out.
Michael Kennedy: I'm going to give a little shout out to Bunny.net.
Michael Kennedy: Like, I know people are all about Cloudflare, but this is a cool European company that focuses on privacy, has some really nice features.
Michael Kennedy: The pricing is great.
Michael Kennedy: And they have, you go here, go to the CDN.
Michael Kennedy: They've got somewhere way down here, you know, like 119 different places, including all over Africa.
Michael Kennedy: And this is just super, super cheap for traffic.
Christopher Trudeau: Nice.
Christopher Trudeau: Yeah.
Christopher Trudeau: So I wasn't, earlier there, I wasn't intending to force a fistfight.
Christopher Trudeau: And, you know, we're on the opposite side of the continent, so that would be a challenge when I, Jango versus Flash, go.
Christopher Trudeau: But, you know, I think one of my favorite chapters was actually chapter 13, which was titled Picking a Python Web Framework.
Christopher Trudeau: I really liked the nuance of this.
Christopher Trudeau: It's unusual for folks to sort of reveal their reasoning.
Christopher Trudeau: And honestly, I think, like, because I had no intention of tomorrow going and using Docker, the Docker chapters were interesting because I like to see how other people do things.
Christopher Trudeau: But like I could grab the picking a Python web framework, pull that chapter out and hand it to almost any of my students.
Christopher Trudeau: Right. Like it's this, you know, how do I make these kinds of decisions?
Christopher Trudeau: How is this different? Why do I think about these things?
Christopher Trudeau: And so often the content on this is really just religious war.
Christopher Trudeau: And you've done like a really, really good job there of just sort of conveying this, you know, hey, here are pros and cons for each.
Christopher Trudeau: And this is why I picked this.
Christopher Trudeau: And so I really, really liked how you, how you covered that.
Christopher Trudeau: Thank you so much.
Christopher Trudeau: What you, I guess it's maybe the answer is obvious, but, but why?
Christopher Trudeau: Like you were fine.
Christopher Trudeau: You were just doing configuration file after configuration file and then a little bit editorial.
Christopher Trudeau: What, what caused you, what, what was the emphasis for the impetus for spicing it up a little?
Michael Kennedy: Well, I mean, I think it's an important part of the journey is, is picking a technology to run your code on. So there's actually a couple of places that I kind of have that like I have that for I'm trying to create a term because I don't think we do a good job of disambiguating it from from like engine X of Python, like production app servers, like where your code runs, I think these a little more disambiguation, I'm talking like granian, unicorn, those kinds of things.
Michael Kennedy: Vercorn, Uveacorn now, all those places you run your Python code.
Michael Kennedy: So I kind of went through a debate on those from Michael's context, right?
Michael Kennedy: And then I did the same for Python web frameworks.
Michael Kennedy: And it was, you know, I told the story of the bootstrap and how I just, every time I have
Michael Kennedy: to write new code, I'm like, here we go.
Michael Kennedy: I'm in the relic, right in the relic code.
Michael Kennedy: I kind of felt the same way for, so everything was based on Pyramid and I loved Pyramid and
Michael Kennedy: I still have a lot of respect for it.
Michael Kennedy: The reason I chose Pyramid in 2015 was when I went to the Flask page, it said, you may potentially be able to use Python 3, but we are not supporting it and we don't recommend it.
Michael Kennedy: And I'm like, wait a minute, didn't Python 3 come out in 2008?
Michael Kennedy: That's like seven years later.
Michael Kennedy: You know what?
Michael Kennedy: No, I'm not doing that.
Michael Kennedy: I'm starting this project beyond this problem and I'm not going back to be in the, you know what I mean?
Michael Kennedy: As they've since obviously moved on from that.
Michael Kennedy: So Flask was out.
Michael Kennedy: I looked at Django and I thought, I'm really like a microservice guy.
Michael Kennedy: I really want to use Mongo.
Michael Kennedy: A lot of things were not quite good fits.
Michael Kennedy: They actually would be better fits now, right?
Michael Kennedy: Even then.
Christopher Trudeau: Yeah, no, if you want to do Mongo, that's, yeah, that's almost a deal breaker.
Christopher Trudeau: Yeah.
Michael Kennedy: Yeah, I know.
Michael Kennedy: Almost.
Michael Kennedy: And so I'm like, all right, well, maybe not Django.
Michael Kennedy: Well, you had a pyramid.
Michael Kennedy: They're like, we are trying to embrace the latest standards.
Michael Kennedy: We're Python 3 first, et cetera, et cetera.
Michael Kennedy: And I'm like, all right, I'm gonna give this a chance,
Michael Kennedy: even though it wasn't as popular, like this is great.
Michael Kennedy: And I used it for eight years, seven years,
Michael Kennedy: something like that, it was really good.
Michael Kennedy: But things evolved over time, right?
Michael Kennedy: Like Pydantic came out and Pydantic was great.
Michael Kennedy: What's a really nice way to talk to the database
Michael Kennedy: with Pydantic, Beanie, okay?
Michael Kennedy: So I can do Beanie and I can do Pydantic and wow,
Michael Kennedy: what a really nice, clever way to write databases.
Michael Kennedy: And oh, Beanie's all async only,
Michael Kennedy: Pyramid's synchronous only.
Michael Kennedy: When was the last commit to Pyramid?
Michael Kennedy: Oh, it was two and a half years ago.
Michael Kennedy: Chances that it gets async support are low
Michael Kennedy: 'cause that was just like a minor bug fix.
Michael Kennedy: You know what I mean?
Michael Kennedy: It's just like, it's fine.
Michael Kennedy: Open source projects, they ebb and they flow
Michael Kennedy: and they come and they go.
Michael Kennedy: But I'm just like, I should really move this forward
Michael Kennedy: to something that feels like it's active, right?
Michael Kennedy: I mean, stuff in the web makes me nervous.
Michael Kennedy: I'm always just, did you put a port open on the internet?
Michael Kennedy: Well, that's scary.
Christopher Trudeau: - Yep.
Michael Kennedy: And so a framework that felt like things were not on top of it as it could have been made
Michael Kennedy: me nervous.
Michael Kennedy: To be fair, I don't know that they had any security incidents or very, very few because
Michael Kennedy: it did so little, right?
Michael Kennedy: It's not like it had a bunch of admin pages or something where there's like accepting
Michael Kennedy: input, but still, still same reason.
Michael Kennedy: So I'm like, I really want to use these more modern tools, typing, async, identic, et cetera.
Michael Kennedy: And I kind of would not like to continue building on something that feels like it's no longer being supported.
Christopher Trudeau: And similarly, you, with chapter 13, sort of that, you know, the different thought process there.
Christopher Trudeau: You also provide chapter 15, which is a retrospective on Hetzner, which is the hosting provider that you chose.
Christopher Trudeau: and again, I think it's pretty clear.
Christopher Trudeau: I think I've said it three different ways.
Christopher Trudeau: My favorite stuff in the book really is sort of this, you know, that the little, the little, insight into Michael's brain, right?
Christopher Trudeau: Like how did he make this decision and how happy is he with these decisions?
Christopher Trudeau: Right.
Christopher Trudeau: I think that's the stuff that's, that's, globally applicable to a reader, which is nice.
Christopher Trudeau: so you've, it's now even a few months further on with Hetzner.
Christopher Trudeau: So you, you still happy?
Christopher Trudeau: Any regrets yet?
Michael Kennedy: Yeah, no, no regrets.
Michael Kennedy: It hasn't been absolutely a hundred percent smooth.
Michael Kennedy: Let's see.
Michael Kennedy: I could tell you how long it's been if I can get past all the ads.
Michael Kennedy: There we go.
Michael Kennedy: So I actually blogged about this.
Michael Kennedy: And yeah, so it's been about a year, I guess.
Michael Kennedy: No regrets.
Michael Kennedy: I would say if people are out there looking around, to me, it really,
Michael Kennedy: and you want to follow the philosophy of Michael,
Michael Kennedy: like carve yourself a space out in a multimillion dollar data center
Michael Kennedy: that doesn't have anything to do with it.
Michael Kennedy: And you just run your code in your own space.
Michael Kennedy: DigitalOcean and Hetzner are the two ones.
Michael Kennedy: And I did DigitalOcean for a long time.
Michael Kennedy: When Hetzner came out, I thought they just had some really interesting appeal.
Michael Kennedy: I started seeing a lot of people talking about them.
Michael Kennedy: And they are a German company.
Michael Kennedy: And they were just in Europe.
Michael Kennedy: And I'm like, I love Europe, but the majority of my customers are in the U.S.
Michael Kennedy: So what is the best place for my server?
Michael Kennedy: Probably the east coast of the United States, because that serves the U.S. really well.
Michael Kennedy: But then it's like one hop across the ocean to all of Europe as well.
Michael Kennedy: So it's still really fast from there and so on.
Michael Kennedy: So I didn't want to move my server to Europe
Michael Kennedy: when I felt like being closer to the US was more important.
Michael Kennedy: Not so much because I needed to manage it.
Michael Kennedy: I could SSH to wherever, but just East Coast to the US.
Michael Kennedy: And then they're like, hey, we have two new US data centers.
Michael Kennedy: One near Virginia, right by the US East 1,
Michael Kennedy: the infamous AWS US East 1.
Michael Kennedy: And the other one actually in Hillsborough, Oregon,
Michael Kennedy: just down the street from me, which is funny.
Michael Kennedy: Yeah, it's like I could drive to it in like 20 minutes,
Michael Kennedy: which of all places in the world is relatively close.
Michael Kennedy: So I went and looked at it and I said,
Michael Kennedy: let me just check it out.
Michael Kennedy: And the prices are super cheap.
Michael Kennedy: You get a little bit less support
Michael Kennedy: and I think a little bit less top tier data center
Michael Kennedy: than DigitalOcean,
Michael Kennedy: but the prices are like insane there.
Michael Kennedy: Like I said, eight core server for 30 bucks.
Michael Kennedy: You know, that's insane.
Michael Kennedy: And when I first signed up,
Michael Kennedy: that came with 20 terabytes of free traffic.
Christopher Trudeau: Wow.
Michael Kennedy: Which is about $1,700 out of AWS.
Christopher Trudeau: Right.
Michael Kennedy: Included in your $30 bill.
Michael Kennedy: You know what I mean?
Michael Kennedy: Like, oh my gosh.
Christopher Trudeau: Yeah.
Michael Kennedy: So yeah, I talk a lot about it in the book,
Michael Kennedy: but yeah, I went over and moved my stuff over there
Michael Kennedy: and it's been good.
Michael Kennedy: I've had one incident where the machine
Michael Kennedy: that it was on died.
Michael Kennedy: The one big server, wherever it was, it died
Michael Kennedy: and they had to move it,
Michael Kennedy: which blows my mind,
Michael Kennedy: they were able to hot relocate it to another server.
Michael Kennedy: But the problem is it has an external,
Michael Kennedy: like a 300 gig external drive,
Michael Kennedy: and that didn't move location.
Michael Kennedy: So all of a sudden, a lot of the IO operations
Michael Kennedy: were much slower 'cause they weren't close
Michael Kennedy: to the server anymore.
Michael Kennedy: - Right, right.
Michael Kennedy: - Why, why did my Docker builds take two minutes?
Michael Kennedy: They used to take about three or four seconds.
Michael Kennedy: I cannot figure it out.
Michael Kennedy: And I wrote them, they're like, no, we've tested it.
Michael Kennedy: There's no problem.
Michael Kennedy: I don't care what you say, there's a huge problem.
Michael Kennedy: eventually there's like we moved it again it's fine and then it was fine right so you know if
Christopher Trudeau: if folks are looking for something slightly lighter weight and this is going to sound like a commercial
Christopher Trudeau: i'm just a happy customer i don't know sponsorship or whatever but i use opal stack with a lot of my
Christopher Trudeau: clients um what do you go opal stack opal um yeah and you wouldn't go full docker with it um but
Christopher Trudeau: but they do give you access full SSH to the box.
Christopher Trudeau: And they've got a neat little sort of packaging thing.
Christopher Trudeau: They don't support a lot of things,
Christopher Trudeau: but if you've got like Django or Flask
Christopher Trudeau: or static files for Nginx or whatever,
Christopher Trudeau: you hit a couple of buttons in the dashboard
Christopher Trudeau: and it spawns it up.
Christopher Trudeau: But a lot of tools like that, it spawns it up
Christopher Trudeau: and then you're not allowed to touch it.
Christopher Trudeau: What they do is create all the entries in the directories
Christopher Trudeau: and then you can SSH into the box
Christopher Trudeau: and get at the files themselves.
Christopher Trudeau: So I find it's a nice little compromise between the two.
Christopher Trudeau: It would not scale to what you're doing.
Christopher Trudeau: But if folks are looking for a relatively inexpensive thing to experiment with, I find it's a nice little stopgap.
Michael Kennedy: Yeah, that's awesome.
Michael Kennedy: I'm always interested in finding those types of things.
Michael Kennedy: This one is new to me.
Michael Kennedy: This is cool.
Christopher Trudeau: Yeah, this is I'm trying to remember there was a site I used to use.
Christopher Trudeau: It got bought.
Christopher Trudeau: The half of the founders went, we don't want to be bought and took their baseball bat and created Opal Stack.
Christopher Trudeau: So I used to be a client of the original and followed them along.
Christopher Trudeau: So yeah.
Christopher Trudeau: Cool.
Christopher Trudeau: And very happy with like the service as well.
Christopher Trudeau: They're like you open a ticket and things are very, very human, which is nice in this day and age.
Christopher Trudeau: You usually, I'm usually expecting to talk to a bot.
Michael Kennedy: You're getting about as much support as you get out of Gmail.
Christopher Trudeau: Yeah, exactly.
Michael Kennedy: Google Docs, which is done.
Michael Kennedy: Another thing worth a shout out here is sort of an alternate way of working with Docker and Docker Compose directly
Michael Kennedy: that I propose in the book is something called Coolify.
Michael Kennedy: Are you familiar with Coolify?
Christopher Trudeau: No, this one I don't know.
Michael Kennedy: Yeah, this is super interesting.
Michael Kennedy: So what this does is it knows how to run Docker, Docker Compose,
Michael Kennedy: but it also gives you all sorts of easier ways.
Michael Kennedy: So if people look at what I'm proposing,
Michael Kennedy: they're like, no, Michael, too complicated.
Michael Kennedy: This is interesting because what it gives you
Michael Kennedy: is it basically gives you your own private Heroku
Michael Kennedy: or Netlify or Vercel or Railway,
Michael Kennedy: or you can go in, I don't know how to find it,
Michael Kennedy: from here, but you can also go in and say,
Michael Kennedy: let me find any self-hosted app.
Michael Kennedy: - Okay.
Michael Kennedy: - And they've got hundreds of them in there.
Michael Kennedy: And then you just type in the name and say,
Michael Kennedy: install this set of Docker containers
Michael Kennedy: as a Docker compose file into my server.
Michael Kennedy: So you could create the one big server,
Michael Kennedy: which is your own space in someone's cloud.
Michael Kennedy: And then you can install this
Michael Kennedy: or you can pay them five bucks a month
Michael Kennedy: and they'll actually manage the server,
Michael Kennedy: manage the deployments,
Michael Kennedy: do like rollouts of new versions of your app.
Michael Kennedy: stuff like that right it sounds like it sounds like it makes it way easier right it actually makes it
Michael Kennedy: it's like two steps forward 1.8 steps backwards right because you know instead of using dot env
Michael Kennedy: files you've got these like a ui to enter a bunch of environment variables and the saving of them
Michael Kennedy: is weird and you're like oh i forgot to press save on these three even though i saved the page i mean
Michael Kennedy: there's just right right it's it promises more ease than you would think and i'm not necessarily
Michael Kennedy: switch i do like i've played with it some i'm not saying i would switch to it given a choice
Michael Kennedy: but it does it does ease you in it's a little bit like python anywhere like i'm sure when i started
Michael Kennedy: there were things that could have gotten in my way but the stuff the support that it gave me made it
Michael Kennedy: possible for me to feel like comfortable and get going i feel like this might be an option for
Michael Kennedy: people who care.
Christopher Trudeau: Right.
Michael Kennedy: But let me give you an example.
Michael Kennedy: For example, I could go install an app that has Postgres, Valkey, and the web app.
Michael Kennedy: If I, then I just click install that from wherever self-hosted definition that comes
Michael Kennedy: from, it creates those three containers.
Michael Kennedy: And then on the container setting through the image setting, I don't know really how
Michael Kennedy: you think of it.
Michael Kennedy: I mean, they're not, I guess it's image sort of, you can go to the web part and say, and
Michael Kennedy: just use this URL and it'll automatically do the SSL generation as part of that.
Michael Kennedy: Then you go to the database, the Postgres thing, you say, oh, and make backups for
Michael Kennedy: me daily and store them in this S3 compatible storage.
Michael Kennedy: And that kind of stuff is a lot of extra when you're doing it yourself and you
Michael Kennedy: just go check those boxes.
Michael Kennedy: So that's the one point forward, that's the two forward, but then there's the
Michael Kennedy: step back.
Christopher Trudeau: Yeah.
Christopher Trudeau: Well, and that tends to be also what makes people nervous, right?
Christopher Trudeau: So like that, and that's, you know, I still use managed database simply because I don't want to
Christopher Trudeau: have to think about it, right? Like it's like, yeah, okay. I'm perfectly fine with pointing my
Christopher Trudeau: app at a managed database and let somebody else think about backing it up and all the rest of it.
Michael Kennedy: Yeah. Yeah. You know, one thing about managed databases that I don't like, and I can't speak
Michael Kennedy: to all potential hosts of them, but certainly some of them, some well-known ones, some names I've
Michael Kennedy: already said, if you get a managed database there, that database server is listening on the public
Michael Kennedy: internet. I very much do not espouse having a database listening. Yeah, it has a password,
Michael Kennedy: but I mean, that's that database. I'm always worried about what is in the database.
Christopher Trudeau: That's interesting. I've never thought to even check that.
Michael Kennedy: And on my setup, not only is it not listening on the internet, it's not even listening on the
Michael Kennedy: host there's like a private docker network that only things right in the docker shared docker
Michael Kennedy: network can even know about or see the data you know what i mean so there's yep it's it's less
Michael Kennedy: likely to fewer holes but i have to make backups and if i don't it's bad if it goes down it's real
Michael Kennedy: bad so and it did one time this year i was down for like 10 minutes about a hair out there goes
Christopher Trudeau: - That was your sixth nine, yes.
Christopher Trudeau: - Exactly, I know.
Michael Kennedy: So the problem was just for people who wanna benefit
Michael Kennedy: from my suffering and not suffer themselves,
Michael Kennedy: is I did not, on the Docker pull for the database image,
Michael Kennedy: I didn't pin it to a major version.
Michael Kennedy: And so it upgraded and then it said,
Michael Kennedy: well, you have old data in your file system
Michael Kennedy: and we're not gonna upgrade it for you automatically.
Michael Kennedy: So we're not gonna run.
Michael Kennedy: I'm like, why is the database server not running?
Michael Kennedy: It just, and it was like a weird update.
Michael Kennedy: It was like 8.2.1 that broke.
Michael Kennedy: Well, why?
Michael Kennedy: Point one.
Michael Kennedy: Surely, surely a bigger number needs to be like, this will never run again.
Michael Kennedy: Anyway, you know, you find the stuff out the hard way, but yes.
Michael Kennedy: Well, yeah, that that's the negative, not using a managed database.
Christopher Trudeau: Yes.
Christopher Trudeau: Yeah.
Christopher Trudeau: Cause you have to deal with some of that kind of stuff yourself.
Christopher Trudeau: Yeah.
Christopher Trudeau: So I thought we would wrap up by reviving an old tradition.
Christopher Trudeau: I have two questions for you.
Christopher Trudeau: What is, what, what, what is your development environment?
Christopher Trudeau: and what library are you excited about?
Michael Kennedy: So the development environment right now
Michael Kennedy: is a mix of Cursor and PyCharm for sort of editing.
Michael Kennedy: And despite this very detailed conversation about Docker,
Michael Kennedy: I don't use Docker very much locally for development.
Michael Kennedy: I just use virtual environments.
Michael Kennedy: And I want to give a shout out to Hynek,
Michael Kennedy: who I had some back and forth about
Michael Kennedy: when I was writing some of this stuff
Michael Kennedy: that gave me some really good ideas.
Michael Kennedy: And he has a really good article,
Michael Kennedy: which I referenced in the book,
Michael Kennedy: about you just use virtual environments.
Michael Kennedy: Keep everything consistent, right?
Michael Kennedy: That's an interesting debate that we don't have time for,
Michael Kennedy: but it's very fun.
Michael Kennedy: So uv, I'm a huge fan of uv.
Christopher Trudeau: - Particularly in Docker, that makes things that much faster.
Michael Kennedy: - Yeah, because you can just say in your Docker,
Michael Kennedy: it used to be you're like, okay, well,
Michael Kennedy: I gotta use Docker and I need to use Python.
Michael Kennedy: So let me use the official Python distribution for Docker
Michael Kennedy: because I need to have Python.
Michael Kennedy: And then, well, that excludes 99.9%
Michael Kennedy: have all the other things you could build upon
Michael Kennedy: that already have something that's harder to manage
Michael Kennedy: set up for you, right?
Michael Kennedy: But in your Docker file, you just say,
Michael Kennedy: run uvvenv-python3.14,
Michael Kennedy: you've installed Python 3.14 in two seconds.
Michael Kennedy: And it's cached, right?
Michael Kennedy: It's like, yeah, it just, it makes it so much faster
Michael Kennedy: and so powerful, but also just in general, right?
Michael Kennedy: Like it's unified so many tools that I like
Michael Kennedy: that are just, it's all there together.
Michael Kennedy: And then library, oh my goodness.
Christopher Trudeau: - Now you know how it feels
Michael Kennedy: like i know how it feels and now i didn't warn you on purpose i love it i love it so there's
Michael Kennedy: there are a bunch of ones i've been playing with lately and i'm trying to think which one i've
Michael Kennedy: i've used i don't really have a great answer to this chris i'm i'm afraid to say i would say
Michael Kennedy: let's keep it let's keep it flowing with some of the vibes that we had here i would say
Michael Kennedy: let me give a shout out to set proc title which there you go sounds insanely silly like the goal
Michael Kennedy: of that is so in your process and your Python process and I actually use this
Michael Kennedy: on a bunch of different things in your Python process you can say set proc
Michael Kennedy: title dot set title and you give it the name of whatever you want your process
Michael Kennedy: to be so why does that matter when you pull up all these tools like glances be
Michael Kennedy: top or others anything that looks at processes basically instead of seeing
Michael Kennedy: Python Python Python node node node postgres postgres postgres at least the
Michael Kennedy: Python ones now have meaningful names and you might be thinking well Michael
Michael Kennedy: that much production, useless to me.
Michael Kennedy: No, it's good for development too.
Michael Kennedy: Have you ever had the idea,
Michael Kennedy: like I wanna know how much memory my process is using.
Michael Kennedy: Is it using a lot or a little?
Michael Kennedy: So you pull up, you know, activity monitor,
Michael Kennedy: task manager, whatever, you see Python, Python, Python,
Michael Kennedy: you're like, oh man, I know my editor's using one of these
Michael Kennedy: or whatever, but which one is it?
Christopher Trudeau: - And if you're using the right terminal,
Christopher Trudeau: it'll change the terminal's title too,
Christopher Trudeau: because most terminals respond to the proc name.
Michael Kennedy: Oh, that's a very nice touch. Yeah. Okay. Yeah. So, but if you, if you do that in development,
Michael Kennedy: if you just set the name of your process to be like, you know, my utility or whatever the heck
Michael Kennedy: you call it, right. Then when you go into process management tools, like even just for Mac or
Michael Kennedy: windows or whatever, you'll see it and you can see how much CPU is it using? Is it using a lot of RAM?
Michael Kennedy: If you've got to end task it, like we now have another way reason that this is something we've
Michael Kennedy: got to do all the time is the, sometimes the agentic AI things go mad and they start a bunch
Michael Kennedy: servers and then they lose track of them and then you can't run anymore because it says um port is
Michael Kennedy: in use you're like but where like something in that stream of text that shot by for five minutes
Michael Kennedy: it started one and then it left it going but then you pull it up it says python python python and
Michael Kennedy: like well i don't want to kill the other thing that's running you know what i mean and so it also
Michael Kennedy: gives you a way to kill off your ai abandoned stuff that it went mad on so there you go setting
Christopher Trudeau: a process name might save you a reboot. There's your little nugget to take away from the podcast.
Michael Kennedy: Exactly. It's a package with one function, but it's a good one.
Christopher Trudeau: Excellent. Well, thank you for having me on. This has been fun to sort of reverse the tables on you.
Christopher Trudeau: It's been great.
Michael Kennedy: Yeah. Chris, thank you so much. I really appreciate it. And always great to catch up with you. Bye.
Christopher Trudeau: It's been fun to be here.
Michael Kennedy: This has been another episode of Talk Python To Me. Thank you to our sponsors. Be sure to check
Michael Kennedy: out what they're offering. It really helps support the show. Look into the future and see bugs before
Michael Kennedy: they make it to production. Sentry's Seer AI code review uses historical error and performance
Michael Kennedy: information at Sentry to find and flag bugs in your PRs before you even start to review them.
Michael Kennedy: Stop bugs before they enter your code base. Get started at talkpython.fm/seer-code-review.
Michael Kennedy: Agency. Discover agentic AI with agency. Their layer lets agents find, connect, and work together.
Michael Kennedy: any stack, anywhere. Start building the internet of agents at talkpython.fm/agency spelled
Michael Kennedy: A-G-N-T-C-Y. If you or your team needs to learn Python, we have over 270 hours of beginner and
Michael Kennedy: advanced courses on topics ranging from complete beginners to async code, Flask, Django, HTMX,
Michael Kennedy: and even LLMs. Best of all, there's no subscription in sight. Browse the catalog at talkpython.fm.
Michael Kennedy: And if you're not already subscribed to the show on your favorite podcast player,
Michael Kennedy: What are you waiting for?
Michael Kennedy: Just search for Python in your podcast player.
Michael Kennedy: We should be right at the top.
Michael Kennedy: If you enjoyed that geeky rap song,
Michael Kennedy: you can download the full track.
Michael Kennedy: The link is actually in your podcast player show notes.
Michael Kennedy: This is your host, Michael Kennedy.
Michael Kennedy: Thank you so much for listening.
Michael Kennedy: I really appreciate it.
Michael Kennedy: I'll see you next time.
Michael Kennedy: Thank you.