diff --git a/transcripts/496-scaf-deploys.txt b/transcripts/496-scaf-deploys.txt index affecd4e..11128777 100644 --- a/transcripts/496-scaf-deploys.txt +++ b/transcripts/496-scaf-deploys.txt @@ -2,7 +2,7 @@ 00:00:05 We'll tackle some of the biggest challenges in taking a Python app from "it works on my machine" to production, covering inconsistent environments, conflicting dependencies, and sneaky security pitfalls. -00:00:17 Along the way, Calvin shares how containerization with Docker and Kubernetes can both simplify and complicate deployments, especially for smaller teams. +00:00:17 Along the way, Calvin shares how containerization with Docker and Kubectl can both simplify and complicate deployments, especially for smaller teams. 00:00:26 Finally, we'll introduce SCATH, a powerful project blueprint designed to give developers a rock-solid start on Python web projects of all sizes. @@ -44,7 +44,7 @@ 00:02:14 This episode has something unique and special. -00:02:17 I thought it'd be fun if I could come up with a song that was about deploying code, about Kubernetes, about the cloud, all the different things that Calvin's gonna come on and tell us all about. +00:02:17 I thought it'd be fun if I could come up with a song that was about deploying code, about Kubectl, about the cloud, all the different things that Calvin's gonna come on and tell us all about. 00:02:30 I turned that into a song and I stuck it at the end of the show. @@ -96,7 +96,7 @@ 00:04:07 - I don't know, not being on your show, I guess. -00:04:09 I actually was super excited when you asked that I could be on here, This has been like a life goal, at least a goal since ClockPython to me has ever existed. +00:04:09 I actually was super excited when you asked that I could be on here, This has been like a life goal, at least a goal since Talk Python to me has ever existed. 00:04:17 >> I really appreciate that. That's very kind. @@ -212,7 +212,7 @@ 00:07:19 And I'm still friends with those people today. -00:07:20 You know, people like Paul Everett and Trey Seaver. +00:07:20 You know, people like Paul Everett and Tres Seaver. 00:07:22 And those folks were really part of my upbringing into the Python community. @@ -380,7 +380,7 @@ 00:12:41 You must need to deliver these applications often in a way that people can continue to let keep them going on their own without you constantly going back. Yeah, there's a there's some pip updates. So we'll take care of that for you. -00:12:51 Well, and that definitely reaches into the longer tale of the whole story. I think if you go back to the beginning of the story of deployment, a lot of us started out or a lot of us older ones, more seasoned veteran developer folks in a world where if you wanted to deploy your web application, you threw some PHP into a web root. And as long as you had modphp installed, the stuff ran. +00:12:51 Well, and that definitely reaches into the longer tale of the whole story. I think if you go back to the beginning of the story of deployment, a lot of us started out or a lot of us older ones, more seasoned veteran developer folks in a world where if you wanted to deploy your web application, you threw some PHP into a web root. And as long as you had mod PHP installed, the stuff ran. 00:13:13 Like you didn't have to think about configuring ingress and egress routes. @@ -510,7 +510,7 @@ 00:19:21 like it was a struggle. -00:19:22 Whereas you just tell someone Git pull and then we'll tilt up, in our case for Skaff, we've adopted the tilt management tool, they're running and they can start making, contributing code within an hour. +00:19:22 Whereas you just tell someone Git pull and then we'll Tilt up, in our case for Scaf, we've adopted the Tilt management tool, they're running and they can start making, contributing code within an hour. 00:19:35 That's my goal. @@ -538,7 +538,7 @@ 00:20:35 You can upload your own internal packages to share or import packages directly from PyPI. -00:20:40 Your team members can install from these repos in normal ways using tools like pip, poetry, and ub. +00:20:40 Your team members can install from these repos in normal ways using tools like pip, poetry, and UV 00:20:47 Posit Package Manager can help you manage updates ensuring you're using the latest, most secure versions of your packages. @@ -562,15 +562,15 @@ 00:21:42 - No, everything's in containers. -00:21:44 That was, Scaf primarily, And some people will see Skaff as a deployment tool. +00:21:44 That was, Scaf primarily, And some people will see Scaf as a deployment tool. -00:21:49 I see Skaff as a developer experience tool and a deployment tool. +00:21:49 I see Scaf as a developer experience tool and a deployment tool. 00:21:52 I covered both ends of that spectrum because everything starts obviously with the developer and an idea and some building some software. 00:21:59 Well, if they can't build the software easily or they can't collaborate with another contributor on that software, it slows things down. -00:22:06 So part of what we, you know, that Skaff tool is, it's gonna be able to give you the scaffolding to build out of an initial project. +00:22:06 So part of what we, you know, that Scaf tool is, it's gonna be able to give you the scaffolding to build out of an initial project. 00:22:13 Like starting from scratch, you have nothing on the file system, Scaf will build out those initial tools, but then Scaf is a set of opinions, more importantly, because lots of scaffolding tools exist out there. @@ -598,7 +598,7 @@ 00:23:39 - Yeah, absolutely. -00:23:40 So let's dive in, let's dive into Skaff. +00:23:40 So let's dive in, let's dive into Scaf. 00:23:43 But before we do, have you seen, I think it was in the last episode, this new AI computer thing that NVIDIA announced? @@ -664,7 +664,7 @@ 00:25:12 >> -00:25:12 All right. Here we are, six feet up slash Scaf on GitHub. +00:25:12 All right. Here we are, six feet up/Scaf on GitHub. 00:25:15 >> Yep. @@ -686,7 +686,7 @@ 00:25:55 So that was the original, like, kind of kernel of where this started. -00:25:59 And then we grew a lot more around the deployment story and some of the developer tools so that we could be on Kubernetes. +00:25:59 And then we grew a lot more around the deployment story and some of the developer tools so that we could be on Kubernetes 00:26:06 We could standardize on Kubernetes as a container platform, so we could launch into any cloud, whether it's a managed Kubernetes or whether you're bare metal and are running like VMs and EC2, or it doesn't matter. @@ -698,7 +698,7 @@ 00:26:38 So we wanted to focus on things like CI/CD, and could you make that simple? -00:26:41 So SCAF includes opinions around Argo CD, for example. +00:26:41 So Scaf includes opinions around Argo CD, for example. 00:26:46 So when you deploy into Sandbox, it deploys the Argo CD operator, and then it sits and watches your repository for changes. @@ -948,13 +948,13 @@ 00:33:08 And that one liner will install a lot of the opinions. -00:33:12 I've mentioned this before to some people that Skaff gives you all of those kind of cool opinions, cool tools, like neat techniques that as a developer, like it takes like decades to refine and hone and kind of gain into your toolbox. +00:33:12 I've mentioned this before to some people that Scaf gives you all of those kind of cool opinions, cool tools, like neat techniques that as a developer, like it takes like decades to refine and hone and kind of gain into your toolbox. -00:33:28 Skaff tries to give those to you like right away. +00:33:28 Scaf tries to give those to you like right away. -00:33:30 Like, so it's, for example, it's going to install kubectl and kind and tilt and a couple of other tools if they're not found on your system and it'll use, if homebrew installed, it'll just use homebrew out of the box to do that and it puts it into your home directory. It doesn't, it shouldn't require, you know, one of my goals is not to require sudo anywhere in this process, you know, there's no sudo needed here for that curl command to run. And so it should be less impactful on your system than a lot of other tools, but it gives you a lot of power for what you are installing. So you run that one liner, it will now give you in like your dot local bin directory, a scaf CLI command that you'll be able to run. +00:33:30 Like, so it's, for example, it's going to install Kubectl and kind and Tilt and a couple of other tools if they're not found on your system and it'll use, if homebrew installed, it'll just use homebrew out of the box to do that and it puts it into your home directory. It doesn't, it shouldn't require, you know, one of my goals is not to require sudo anywhere in this process, you know, there's no sudo needed here for that curl command to run. And so it should be less impactful on your system than a lot of other tools, but it gives you a lot of power for what you are installing. So you run that one liner, it will now give you in like your dot local bin directory, a Scaf CLI command that you'll be able to run. -00:34:10 And you can just run scaf and then the name of the project you want to build. +00:34:10 And you can just run Scaf and then the name of the project you want to build. 00:34:14 And it'll ask you some questions. @@ -982,17 +982,17 @@ 00:35:10 What database we're using, what if we're using Celery, we're going to use Redis, actually we should change that. -00:35:16 We're changing from Redis over to Valky at the moment as well. +00:35:16 We're changing from Redis over to Valkey at the moment as well. -00:35:21 >> Valky, what is this? +00:35:21 >> Valkey, what is this? -00:35:23 >> So Valky, V-A-L-K-E-Y. +00:35:23 >> So Valkey, V-A-L-K-E-Y. 00:35:26 >> Close. -00:35:27 >> Valky, which is the Redis. +00:35:27 >> Valkey, which is the Redis. -00:35:29 >> Valky, okay. +00:35:29 >> Valkey, okay. 00:35:31 >> The Redis for Blake's Code. @@ -1004,13 +1004,13 @@ 00:35:38 I think that's another whole, we could do a whole other podcast on just open source licensing and interesting history. -00:35:44 You know, the Elastic folks did this with ElasticCache. +00:35:44 You know, the Elastic folks did this with Elastic Cache. 00:35:47 I think the Reddit folks kind of were following suit, but then you now-- - I think Mongo did 00:35:51 maybe a little bit as well. -00:35:52 - Well, now you've seen the Elastic folks kind of go back on that, heading back toward the more open open source licensing. +00:35:52 - Well, now you've seen the Elastic folks kind of go back on that, heading back toward the more open source licensing. 00:35:59 We'll see. @@ -1056,9 +1056,9 @@ 00:39:08 Russ out there asks, "Wagtail?" Not yet. I don't believe we have a Wagtail template, but I'll talk about that in the roadmap. That's coming. -00:39:19 I guess it's worth pointing out to people that this is sort of at its core Django philosophy, right? +00:39:19 I guess it's worth pointing out to people that this is sort of at its core Django curl philosophy, right? -00:39:25 Currently. We have some other use cases that we want to be able to satisfy with Skaff as well. +00:39:25 Currently. We have some other use cases that we want to be able to satisfy with Scaf as well. 00:39:32 For example, instead of deploying into a cloud and like you've got Argo CD, watching for like continuous deployment type stuff. What if you were deploying an appliance like into someone's data center. @@ -1068,19 +1068,19 @@ 00:39:49 We want to be able to, I'd love to be able to support a fully serverless, you know, SCAF lite type environment where maybe we're using Lambdas and DynamoDB and API Gateway to deploy the backend in a totally serverless manner. -00:40:03 SCAF should be able to support that too. +00:40:03 Scaf should be able to support that too. 00:40:04 It's not there yet. 00:40:05 That's definitely, that's the roadmap piece for sure. -00:40:08 There probably is some, I'm not totally up on it, but it's probably some open source Valky equivalent Docker based Lambda type stuff as well that you might be able to say, we want to have a self-contained serverless as part of this. +00:40:08 There probably is some, I'm not totally up on it, but it's probably some open source Valkey equivalent Docker based Lambda type stuff as well that you might be able to say, we want to have a self-contained serverless as part of this. 00:40:21 - Yeah, for example, the Scaf challenge. 00:40:25 So if you went to DjangoCon last year, 6PF ran a Scaf challenge where it was to see how fast you could basically run and get a running Django project on your machine in Kubernetes, running locally, ready to develop. -00:40:36 The winner did it in 26 seconds from running Skaff to Django, actually ready to respond to HTTP requests. +00:40:36 The winner did it in 26 seconds from running Scaf to Django, actually ready to respond to HTTP requests. 00:40:45 Wow. @@ -1090,7 +1090,7 @@ 00:41:01 You just do SAM serve or whatever, SAM start, and it spins up containers locally, you spin up your Dynamo container locally. -00:41:09 So I had the whole thing running on my own machine, much in a way that's why I like about Skaff because it all runs locally, it all is contained and I can play with it, I can destroy it, I can make mistakes, and then when I'm ready, I make a pull request. +00:41:09 So I had the whole thing running on my own machine, much in a way that's why I like about Scaf because it all runs locally, it all is contained and I can play with it, I can destroy it, I can make mistakes, and then when I'm ready, I make a pull request. 00:41:22 >> Yeah. One of the things that I'm always apprehensive about is building apps that have to have lots of Cloud services constantly active, and not just because I want to be able to say, work in a coffee shop with poor internet connectivity or on an airplane or something like that. But also I feel like there's probably some leakage. I mean I just heard an ad on some podcast about it for a company that whose job is to go and look at all the AWS or Azure stuff you're doing that you might have left running and is costing you $10,000 a month. People just forgot about it. @@ -1098,7 +1098,7 @@ 00:41:56 >> Oh really? Tell us a story. -00:41:57 >> Yeah, that's another reason for parts we're adding into SCAF around compliance and cost controls. +00:41:57 >> Yeah, that's another reason for parts we're adding into Scaf around compliance and cost controls. 00:42:04 I'm a big fan of an open source tool called Cloud Custodian, which is a event-driven Cloud compliance tool. @@ -1140,7 +1140,7 @@ 00:43:39 This is great. -00:43:39 - And that's why they're all packaged into SCAP because not everyone knows about all these things. +00:43:39 - And that's why they're all packaged into SCAF because not everyone knows about all these things. 00:43:43 So we're trying to take our kind of cumulative six feet up journey of 25 years of being on the internet and deploying software and developing software and packaging those opinions into like one spot where it's kind of like someone took our brains, collective brains, and put them into a code repository and now we can deploy and develop like we've been doing @@ -1170,11 +1170,11 @@ 00:44:28 - Yeah, I honestly work in the cloud, it's super scary in that regard, you know, when it's overly automated. -00:44:34 So, one of the things, speaking of deployments and all this that I do when I'm working with my Docker stuff is I'll set up a Docker compose file, that's kind of my zen right now. +00:44:34 So, one of the things, speaking of deployments and all this that I do when I'm working with my Docker stuff is I'll set up a Docker compose file, that's kind of my Zen right now. 00:44:42 - Yeah. -00:44:43 - And in there you can set deployment limits, like this container can only use so much CPU, more significantly for me usually is like, this container can only use one gig of RAM, even though the server's got 16, tell it it has one. +00:44:43 - And in there you can set deployment limits, like this container can only use so much CPU, more significantly for me usually is like, this container can only use one gig of RAM, even though the server's got 16, tell it has one. 00:44:55 And the reason that I think that's super useful is, something goes crazy or starts using too much memory or something like that, you could say, "Oh, there's something going on here without it taking down everything else." And there's other things, especially databases. They're like, "Oh, I've got 16 gigs. I was just going to load everything into memory because that'll be more efficient." Like, no, no, no, you're sharing this with everyone. Could you just load the indexes into your two gigs? That would be good, right? Is there stuff like that here? @@ -1184,9 +1184,7 @@ 00:45:29 Again, all of our experience you get to benefit from. -00:45:32 If you aren't careful with Kubernetes. - -00:45:34 >> +00:45:32 If you aren't careful with Kubernetes 00:45:34 I think every one of these that have a little double dagger thing, you click on it. @@ -1216,8 +1214,6 @@ 00:46:19 Oh, because I asked for a full backup. -00:46:21 >> - 00:46:21 Well, and I tell you what it'll do is it'll consume all the resources on one node and then it'll fail over, orchestrated, it'll fail over to the second node and then use all the resources on the second node and then it'll corrupt your database and crash the whole thing. 00:46:33 Now, if you put in the resource limits and the priorities, because what it should do is it should go off and be like, there's a lot of Django instances running that I don't need to be, I can kill those first. @@ -1270,7 +1266,7 @@ 00:47:43 Sure, let's get Celery installed. -00:47:46 If you're doing something with a fancy front end React, where our opinion is really to use Next.js. And if you install Next.js, you'll get like the strawberry GraphQL stuff out of the box, which is kind of nice and Apollo on the front end, if the Next.js is also chosen. So some GraphQL opinions have been made and the plumbing laid to make it just work, which is kind of hard sometimes. If you're diving into a new technology like React and GraphQL, it's nice to have some opinions and to have them pre-wired up for you. So you can just just kind of follow the pattern that's already been laid for you. +00:47:46 If you're doing something with a fancy front end React, where our opinion is really to use Next.js. And if you install Next.js, you'll get like the strawberry GraphQL stuff out of the box, which is kind of nice and Apollo on the front end, if the Next.js is also chosen. So some GraphQL opinions have been made and the plumbing laid to make it just work, which is kind of hard sometimes. If you're diving into a new technology like React and GraphQL, it's nice to have some opinions and to have them pre-wired up for you. So you can just kind of follow the pattern that's already been laid for you. 00:48:20 Okay. I'm told that Next.js is really, really popular. @@ -1336,7 +1332,7 @@ 00:50:42 It's Postgres and then you better justify why you're not using Postgres. -00:50:47 >> Then if you're going to run Postgres and you're running Kubernetes, you're going to want to have some kind of an operator to manage it for you. +00:50:47 >> Then if you're going to run Postgres and you're running Kubernetes you're going to want to have some kind of an operator to manage it for you. 00:50:53 If you want to have high availability, you want to have data backups, and that's what Cloud Native PG gives you. @@ -1350,9 +1346,9 @@ 00:51:22 It gives you UI and a way to configure it and away you go. -00:51:26 - And then after that, we have Valky. +00:51:26 - And then after that, we have Valkey. -00:51:27 - Yeah, Valky. +00:51:27 - Yeah, Valkey. 00:51:29 Which is our Redis drop-in replacement. @@ -1388,9 +1384,9 @@ 00:52:38 Yep. Right. Just pick a different branch and have it watch that. Right. -00:52:41 But that's what we do. So inside the SCAF built skeleton you get on your file system, you're going to have a Kubernetes manifest directory that has a base set of manifests, which are, this is what's needed to define the deployment and the services and all the bits. +00:52:41 But that's what we do. So inside the Scaf built skeleton you get on your file system, you're going to have a Kubernetes manifest directory that has a base set of manifests, which are, this is what's needed to define the deployment and the services and all the bits. -00:52:57 And then each environment, for example, like the sandbox environment, has an Argo running that'll be watching for sandbox changes, and the production environment will be watching for production changes. Another thing we standardize on here that's not listed is things like sealed secrets. So you can check in your secrets to your Git repository for sandbox, for example, but the only machine on the planet that can decrypt them is the sandbox instance, because you actually use the sealed secrets operator to do the encryption. And the only The only way it can be decrypted is if those things are sitting in that cluster, in the sandbox cluster or in the production cluster. +00:52:57 And then each environment, for example, like the sandbox environment, has an Argo running that'll be watching for sandbox changes, and the production environment will be watching for production changes. Another thing we standardize on here that's not listed is things like sealed secrets. So you can check in your secrets to your Git repository for sandbox, for example, but the only machine on the planet that can decrypt them is the sandbox instance, because you actually use the sealed secrets operator to do the encryption. And the only the only way it can be decrypted is if those things are sitting in that cluster, in the sandbox cluster or in the production cluster. 00:53:30 So what's nice is the sandbox cluster cannot decrypt the production secrets. @@ -1450,23 +1446,23 @@ 00:56:57 Yeah. Very nice. -00:56:57 Traffic. +00:56:57 Traefik -00:56:58 Traffic's just an ingress controller. it's like a load balancer type thing. +00:56:58 Traefik's just an ingress controller. it's like a load balancer type thing. 00:57:02 Yeah. It's a load balancer kind of cloud. -00:57:04 If you rethought about a web server and it was cloud native and containers and understood clusters like Kubernetes clusters, this is what traffic is. +00:57:04 If you rethought about a web server and it was cloud native and containers and understood clusters like Kubernetes clusters, this is what Traefik is. 00:57:13 I see. -00:57:14 So maybe a better analogy would be like IngenX or yeah. +00:57:14 So maybe a better analogy would be like NGINX or yeah. 00:57:19 Yeah. -00:57:19 I mean, I think we all grew up, we all grew up on IngenX and made it do all the crazy reverse proxy things like traffic is the one born in the cloud native world version of that. +00:57:19 I mean, I think we all grew up, we all grew up on NGINX and made it do all the crazy reverse proxy things like Traefik is the one born in the cloud native world version of that. -00:57:29 Now IngenX has their own ingress controller as well that they've re rewritten to be more cloud native. +00:57:29 Now NGINX has their own ingress controller as well that they've re rewritten to be more cloud native. 00:57:35 That's just what traffic is for us. @@ -1484,7 +1480,7 @@ 00:57:58 Well, because a lot of the, again, another beauty of Kubernetes that I don't think a lot of people talk about is the operators. -00:58:04 These are like, you know, extensions or plugins to the Kubernetes cluster that give you superpowers to do things like make sure the certs are always, you know, renewed, make sure the latest code is always deployed. +00:58:04 These are like, you know, extensions or plugins to the Kubernetes cluster that give you superpowers to do things like make sure the Certs are always, you know, renewed, make sure the latest code is always deployed. 00:58:14 Make sure the database is highly available and backed up. @@ -1492,9 +1488,9 @@ 00:58:21 Is there like just plugins to your cluster that give you these extended capabilities? -00:58:25 And that's what CertManager is, it's another one of those. +00:58:25 And that's what Certmanager is, it's another one of those. -00:58:27 So, and that handles the certificates and grass routes. +00:58:27 So, and that handles the certificates and Ingress routes. 00:58:30 That's all like kind of traffic CertManager certificates. @@ -1506,7 +1502,7 @@ 00:58:41 And yeah, it's great, but it does get a little complicated in Docker already. -00:58:45 And then I can imagine auto scaling blusters that gets thrown away. +00:58:45 And then I can imagine auto scaling clusters that gets thrown away. 00:58:49 You want it all just to work. @@ -1556,15 +1552,15 @@ 01:00:42 Yeah, I'm sure all the IT folks, they all just cringe to like, "Oh my God, he just said it." Some -01:00:48 people cringe and say, "Yes, they're speaking my language." Out there, my goal in the audience, the Media Cube from EPS is all of the pre-configured dashboards for Yeah, it's out of the box. +01:00:48 people cringe and say, "Yes, they're speaking my language." Out there, my goal in the audience, the beauty of Kube Prometheus is all of the pre-configured dashboards for Yeah, it's out of the box. 01:00:58 Yeah, yeah, yeah, yeah, definitely. -01:01:00 I mean, there's there's so many good example dashboards under Fanta that it is no reason not to be using this for durability. +01:01:00 I mean, there's so many good example dashboards under Grafana that it is no reason not to be using this for durability. 01:01:07 And this is like the table stakes, like you better start here and you better just do it. -01:01:10 But a lot of people deploy an app and then they they I mean, how many times have you worked within a developer and you're like, well, if something's wrong, I can't figure out why. +01:01:10 But a lot of people deploy an app and then they I mean, how many times have you worked within a developer and you're like, well, if something's wrong, I can't figure out why. 01:01:18 And the first thing you tell them, I guarantee you, Michael, the first thing you tell them to do is did you look in the logs? @@ -1594,7 +1590,7 @@ 01:01:44 story? -01:01:44 Yeah, I mean, we're using containers, so things should be set up to log as we would expect them in Kubernetes. +01:01:44 Yeah, I mean, we're using containers, so things should be set up to log as we would expect them in Kubernetes 01:01:51 So it's kind of like the if you've ever looked at the 12 factor app, you know, there's opinions about how logging should happen. @@ -1610,7 +1606,7 @@ 01:02:27 Talos Linux has the ability to launch Kubernetes clusters. -01:02:30 So you can use kubectl to manage your Kubernetes, but then you have the Talos CTL to manage Talos. +01:02:30 So you can use Kubectl to manage your Kubernetes, but then you have the Talos CTL to manage Talos. 01:02:36 There's no reason to shell into a box. @@ -1618,8 +1614,6 @@ 01:02:42 >> Yeah. Very interesting. There's a couple of these single-purpose Linux distributions out there that are really, really cool. -01:02:48 >> - 01:02:48 We've evaluated quite a few, And this is the one we picked. 01:02:51 I liked its opinions. @@ -1632,7 +1626,7 @@ 01:02:58 You need to see how active they are. -01:02:59 You need to understand, is this going to be a viable project, you know, five years from now? +01:02:59 You need to understand, is this going to be a viable project, you know, five years from now 01:03:03 'Cause these are opinions you'll pick now and you'll have to live with potentially a long time. @@ -1698,7 +1692,7 @@ 01:05:35 But the killer feature for Tilt was two-way sync between your cluster and your local machine. -01:05:41 So again, if you're running locally and using Kine, you probably don't notice anything because Tilt is watching your file system, synchronizing your files into the Kubernetes cluster for you to work, but it also does the reverse. +01:05:41 So again, if you're running locally and using KIND, you probably don't notice anything because Tilt is watching your file system, synchronizing your files into the Kubernetes cluster for you to work, but it also does the reverse. 01:05:51 One of the key bits I wanted was when you do a compilation of your requirements for your project, you're running Django and you've got a whole set of requirements, if you get into some trickier things, like around the data science world, there may be things that compile differently on macOS than on Linux, than on Windows, because they use some slightly different dependencies. @@ -1716,21 +1710,21 @@ 01:06:44 Again, it has a lot of other cool things, nice UI. -01:06:47 If you fire up Scaf, at the very end of it, it'll tell you, "Congratulations, you got a new project on your file system. +01:06:47 If you fire up Scaf at the very end of it, it'll tell you, "Congratulations, you got a new project on your file system. 01:06:53 CD in your project and just type Tilt up." You type Tilt up and you hit space bar, I think it is, and it launches a web browser with all the status of all the containers that are running locally. -01:07:03 You can see all the logging, you can tilt watches for changes to your local file system for the code, tilt watches for changes to the Docker files. +01:07:03 You can see all the logging, you can Tilt watches for changes to your local file system for the code, Tilt watches for changes to the Docker files. -01:07:11 If you change the Docker file out from underneath tilt, like while you're developing, say you're adding a new layer, a new dependency or something that's needed in Docker and not in your Python, tilt will rebuild the container immediately for you. +01:07:11 If you change the Docker file out from underneath Tilt, like while you're developing, say you're adding a new layer, a new dependency or something that's needed in Docker and not in your Python, Tilt will rebuild the container immediately for you. -01:07:22 Like without you having to do anything, like you just kind of, you just code along and tilt keeps up. +01:07:22 Like without you having to do anything, like you just kind of, you just code along and Tilt keeps up. 01:07:27 - Wow, that's awesome. 01:07:28 - Yeah. -01:07:29 setting your unit has to run on every save. +01:07:29 setting your unit test to run on every save. 01:07:31 >> Exactly. @@ -1800,15 +1794,15 @@ 01:09:27 Like you blew out your template onto the file system, you've got your code. That's the last time you would touch cookie cutter. -01:09:33 But if new opinions come around, which we're constantly adding new opinions to SCAF about how we do dev and how we do deployment, you would want those to roll back into old projects that had been built with that same tool. +01:09:33 But if new opinions come around, which we're constantly adding new opinions to Scaf about how we do dev and how we do deployment, you would want those to roll back into old projects that had been built with that same tool. 01:09:43 Copier enables this. -01:09:44 Copier now allows us to rerun against an existing project and adopt new opinions that have been made from the source template. And that's another change we're making is we're actually allowing Skaff to have multiple template types. +01:09:44 Copier now allows us to rerun against an existing project and adopt new opinions that have been made from the source template. And that's another change we're making is we're actually allowing Scaf to have multiple template types. -01:09:58 So right now, the Skaff kind of runs in a full stack Django app mode. +01:09:58 So right now, the Scaf kind of runs in a full stack Django app mode. -01:10:03 We're going to have the Skaff Lite version, which may be serverless. +01:10:03 We're going to have the Scaf Lite version, which may be serverless. 01:10:06 We're going to have the appliance mode, which would enable not using Argo CD, for example, but different ways of updating. @@ -1816,15 +1810,15 @@ 01:10:15 They may be more data pipeline versions of your apps. -01:10:19 And so those will be templates that can be updated and and redeployed and kept up to date with Copier. +01:10:19 And so those will be templates that can be updated and redeployed and kept up to date with Copier. -01:10:24 That's cool. Yeah, I can see a whole idea, a whole concept of this for ML workloads and science +01:10:24 That's cool. Yeah, I can see a whole idea, a whole concept of this for ML workloads and data science 01:10:29 workloads. And we don't actually need a web app. Exactly. -01:10:32 What we need is data ingestion and intel and we want results, either a notebook or just something in a database on the other end of them. +01:10:32 What we need is data ingestion and ETL and we want results, either a notebook or just something in a database on the other end of them. -01:10:39 Yeah. Yeah, that's a big, that's a big deal. And that's another thing that is included in Skap Opinions is the CI pipeline, the GitHub actions, Bitbucket Act, you know, workflows or whatever their CI thing is called. Because those Those are important, those need to be there day one, 'cause they're so hard to tack on later, or you just get busy and you don't tack them on when you should have. +01:10:39 Yeah. Yeah, that's a big, that's a big deal. And that's another thing that is included in Scaf Opinions is the CI pipeline, the GitHub actions, Bitbucket Act, you know, workflows or whatever their CI thing is called. Because those are important, those need to be there day one, 'cause they're so hard to tack on later, or you just get busy and you don't tack them on when you should have. 01:10:58 - Yeah, it's good to have all this experience and all these rounded off rough edges put together in one box for you, very cool. @@ -1832,13 +1826,13 @@ 01:11:13 So let's close it out with a final call to action. -01:11:15 People are interested in SCAF. +01:11:15 People are interested in Scaf. -01:11:17 - Yeah, they should definitely go to-- - Should I go to Starrett? +01:11:17 - Yeah, they should definitely go to-- - Should I go to Star it? -01:11:20 - Yep, go to Starrett. +01:11:20 - Yep, go to Star it. -01:11:20 log in apparently. Yeah, go hang out, go to the 6github/scaph GitHub repository. It's a one-liner to install. I would love to hear your feedback, you know, any feature requests, you know, any bugs you find. We've worked really hard on ironing out a lot of those issues over the last year as we kind of pushed toward DjangoCon last year. It's amazing and mind-blowing to see how fast you can get a Django project up and running on your own machine with Kubernetes in the mix. Maybe people a little background information, like they're like, I heard of Kubernetes. +01:11:20 log in apparently. Yeah, go hang out, go to the 6github/Scaf GitHub repository. It's a one-liner to install. I would love to hear your feedback, you know, any feature requests, you know, any bugs you find. We've worked really hard on ironing out a lot of those issues over the last year as we kind of pushed toward DjangoCon last year. It's amazing and mind-blowing to see how fast you can get a Django project up and running on your own machine with Kubernetes in the mix. Maybe people a little background information, like they're like, I heard of Kubernetes. 01:11:54 What do I do with it? @@ -1906,9 +1900,9 @@ 01:13:20 - Yeah, so here's the thing. -01:13:21 If you like Linkin Park and that style of music, you're gonna love it. +01:13:21 If you like LinkIn Park and that style of music, you're gonna love it. -01:13:24 If you hate Linkin Park, maybe call it a show. +01:13:24 If you hate LinkIn Park, maybe call it a show. 01:13:27 Anyway, it's gonna be super fun. @@ -1928,7 +1922,7 @@ 01:14:11 Every line in the repo, a key to set us free And now we break through on Talk Python To Me! -01:14:18 Deploy the dream Shake the ground under your feet Surge forward in the stream Python code is moving heat With Talk Python To Me We ignite the synergy Let's tear down walls, let's own the scene Deploy the dream ♪ Deploy the dream Shake the ground under your feet Search forward in the street ♪ Python code is moving heat ♪ With talk Python to me We ignite the synergy ♪ ♪ Let's tear down walls ♪ ♪ Let's own the scene ♪ ♪ Deploy the dream Shards of GML swirling in the night ♪ ♪ Argo CDs overhead guiding by its light ♪ ♪ We watch the pipeline triggers ♪ ♪ Silent countdown clock ♪ ♪ From dev to prod, we're unstoppable stock ♪ ♪ The logs are rolling in, Prometheus can see ♪ ♪ Our metrics rise like signals, a living symphony ♪ ♪ Mailog sends illusions to the test in the sky ♪ ♪ While Sentry's capturing errors with an all-seeing eye ♪ ♪ We commit, we build, we test once more ♪ ♪ Containers racing onward to the cloud's front door ♪ ♪ Resilience in the code, watch the pods come free ♪ ♪ The stage is set now on top, Python to May Deploy the dream Shatter limits that confine A brand new scheme Pushing progress down the line We're unstoppable now Calvin's leading strategy Let's break the mold, let's rewrite souls Deploy the dream Deploy the cap Offtense beat and build dealing intensity ♪ I see the server lights blinking in the distance ♪ ♪ Code commits illusion smashing with persistence ♪ ♪ Dive deep into the backlog we're forging the path ♪ ♪ Docker image at the ready time to feel the wrath ♪ ♪ Python in my veins blueprint on the screen ♪ ♪ Dev to stage to prod no in between ♪ ♪ We scale up, scale out then break the routine ♪ ♪ This is talk Python to me ♪ ♪ A new reality ♪ Toss the girls belt, belt them ♪ ♪ No code left behind ♪ ♪ We share the knowledge so all devs can find ♪ ♪ A way to unify the spark ♪ ♪ A chance to break free ♪ ♪ Join Calvin, Hendrix, Parker ♪ ♪ Let's make history ♪ Deploy the dream ♪ ♪ High voltage in our core Evolve the theme We're unstoppable once more ♪ Untalk Python to me ♪ ♪ Our voices ring in synergy ♪ Now let's ascend ♪ ♪ Let's set this free ♪ I dream +01:14:18 Deploy the dream Shake the ground under your feet Surge forward in the stream Python code is moving heat With Talk Python To Me We ignite the synergy Let's tear down walls, let's own the scene Deploy the dream ♪ Deploy the dream Shake the ground under your feet Search forward in the street ♪ Python code is moving heat ♪ With talk Python to me We ignite the synergy ♪ ♪ Let's tear down walls ♪ ♪ Let's own the scene ♪ ♪ Deploy the dream Shards of GML swirling in the night ♪ ♪ Argo CDs overhead guiding by its light ♪ ♪ We watch the pipeline triggers ♪ ♪ Silent countdown clock ♪ ♪ From dev to prod, we're unstoppable stock ♪ ♪ The logs are rolling in, Prometheus can see ♪ ♪ Our metrics rise like signals, a living symphony ♪ ♪ Mailog sends illusions to the test in the sky ♪ ♪ While Sentry's capturing errors with an all-seeing eye ♪ ♪ We commit, we build, we test once more ♪ ♪ Containers racing onward to the cloud's front door ♪ ♪ Resilience in the code, watch the pods come free ♪ ♪ The stage is set now on top, Python to May Deploy the dream Shatter limits that confine A brand new scheme Pushing progress down the line We're unstoppable now Calvin's leading strategy Let's break the mold, let's rewrite souls Deploy the dream Deploy the cap Offtense beat and build dealing intensity ♪ I see the server lights blinking in the distance ♪ ♪ Code commits illusion smashing with persistence ♪ ♪ Dive deep into the backlog we're forging the path ♪ ♪ Docker image at the ready time to feel the wrath ♪ ♪ Python in my veins blueprint on the screen ♪ ♪ Dev to stage to prod no in between ♪ ♪ We scale up, scale out then break the routine ♪ ♪ This is talk Python to me ♪ ♪ A new reality ♪ Toss the girls belt, belt them ♪ ♪ No code left behind ♪ ♪ We share the knowledge so all devs can find ♪ ♪ A way to unify the spark ♪ ♪ A chance to break free ♪ ♪ Join Calvin, Hendrix, Parker ♪ ♪ Let's make history ♪ Deploy the dream ♪ ♪ High voltage in our core Evolve the theme We're unstoppable once more ♪ on talk Python to me ♪ ♪ Our voices ring in synergy ♪ Now let's ascend ♪ ♪ Let's set this free ♪ I dream 01:17:01 the dream This has been another episode of Talk Python to Me. @@ -1958,7 +1952,6 @@ 01:18:40 Be sure to subscribe to the show, open your favorite podcast app, and search for Python. -01:18:45 We should be right at the top. You can also find the iTunes feed at /itunes, the Google play feed at /play and the direct RSS feed at /rss on talkpython.fm. We're live streaming most of our recordings these days. If you want to be part of the show and have your comments featured on the air, be sure to subscribe to our YouTube channel at talkpython.fm/youtube. +01:18:45 We should be right at the top. You can also find the iTunes feed at /iTunes, the Google play feed at /play and the direct RSS feed at /rss on talkpython.fm. We're live streaming most of our recordings these days. If you want to be part of the show and have your comments featured on the air, be sure to subscribe to our YouTube channel at talkpython.fm/youtube. 01:19:07 This is your host Michael Kennedy. Thanks so much for listening. I really appreciate it. Now get out there and write some Python code. -