← Back to Show Notes

Transcript: Deploy on Day One - Calvin Hendryx-Parker

Will Vincent

This episode is brought to you by Six Feet Up, the Python Django and AI experts who solve hard

software problems. Whether it's scaling an application, deriving insights from data,

or getting results from AI, Six Feet Up helps you move forward faster.

See what's possible at sixfeetup.com.

Hi, welcome to another episode of Django Chat. I'm Will Vincent with Carlton Gibson. Hey, Carlton.

Hello, Will.

And we're very pleased to welcome back Calvin Hendricks-Parker from Six Feet Up.

Hey, Calvin.

Thanks, Will.

It's nice to be back here.

Welcome back on the show.

So we were just discussing, last time you were on, you were making the pitch for this

Scaf Kubernetes approach that you have that Carlton is especially hesitant about.

So maybe give us the context and then we'll dive-

Carlton Gibson

No, no, no, no, no, no, no, no, no, no.

I'm not hesitant.

Will Vincent

Wow, we're really, really, really jumping right in, like both feet.

Here we go.

Let's do this.

All right, so tell us, give us a quick refresher of what it is, and then we'll talk about how

it's been going because i think this was you know at least a year maybe two years ago since

Calvin Hendryx-Parker

oh i mean this is this has been a journey since at least 2018 for us when we kind of started doing

more django based work is figuring out what the developer experience should be like for folks

joining a team getting on a project starting from fresh you know what does a greenfield project look

like for a django developer and there's been lots of attempts i think out there in the community and

we've we've taken what we thought were some of the best pieces from here and there and combine them

with our own opinionated framework

for how we think Django development should be done.

My goal has always been for a developer

to get a new MacBook or a framework laptop

or whatever in the mail.

And I'd love to see them commit changes

within an hour of like turning it on.

I mean, this is a dream even anywhere,

like every startup, every new company.

Will Vincent

Yeah, it's hard to do.

Calvin Hendryx-Parker

But I think we've done it.

I honestly believe that the framework

we put in place with Scaf.

So Scaf is a scaffolding tool.

It's been built on the shoulders of giants.

Obviously, we're using Django as one of the example apps in there.

But we actually started creating many different apps now that we've moved over to Copier as a framework.

So it used to be using Cookie Cutter under the covers.

And so it was a little more monolithic since we have moved over to Copier in the last year and a half.

And that's allowed us to actually modularize and start building some other pieces alongside it

that now give us the ability to do a AWS serverless SCAF implementation or a Wagtail SCAF or what

we've been typically doing has been the Django full stack app which is the one I talk about kind

of the most because it's got the most complicated sets of opinions built into it and it's kind of

built towards developers who are working on maybe more sophisticated projects where you need you

know you've got a mail service like so we got mail hog on the back end for developers but maybe when

you're deploying you're using simple mail or ses on amazon or you want to use mailgun or some other

third-party service where you've got an api and integrating mail into your app or you've got

you know redis cache or valkey and now you've got postgres on the back end and so it's it's bigger

than a kind of one-off you know toy that you've built to to demonstrate something locally but we

want that same experience whether it's local and you're in your sandbox environment or you're off

into your production environment that's been a key bit for us is how do we make you know day

zero really a deployable event that i could you know build out a scaf project greenfield

and literally type scaf deploy and have it build out that infrastructure into a target environment

whether it be amazon or gcp or digital ocean i don't care and that that i don't care piece for

where i put it is part of what drove some of the decisions behind choosing something like

kubernetes and so i know i can see carlton already bristling a little bit around that

Carlton Gibson

that choice i'm nodding everything you said makes total sense to me so far

Calvin Hendryx-Parker

because that that is levels of playing field something to think about like i've come from

the same journey many of you have like i mean i say many of you i mean even the people who are

in the audience. I was a person back in the day who would build his own kernel because I needed

to turn on some specific device driver. But today we don't think about the Linux kernel. I don't

compile kernels anymore. Those just work for me out of the box. Or I use my Mac because it just

works. I don't care about the kernel in my OS. Almost in the same breath, I don't care about

the orchestration layer of my containers at this point because it blends into the background.

There are really great developer tools right now that are enabling us to have that same experience, whether it's local or in a cloud or in a machine sitting beside my desk.

Like Tilt, for example, has enabled a lot of that ease of use for me in the Kubernetes world.

I was resistant, very resistant to containers up until about 2020.

And that's when, well, there was something that happened in 2020.

Some event, big things went on.

But we moved virtual, and that's when we built the Loudsword platform to do Python Web Conference as a personal passion project.

And at that point, I picked, like, how do I deploy as quickly as possible?

It's my own thing.

It's what 6VIP is building.

We're not beholden to any other customers, you know, their processes, their policies, whatever it is.

I said, we're going to try containers.

We're also going to try things like serverless.

So we deployed it initially on Fargate, you know, using basically an AWS managed service for running containers.

and it was wonderful because I didn't have to worry about how it scaled and how it operated

but I was locked into a platform and there were slight edge cases here and there um you know

there there were essentially I always go back to xenopython and if you think about xenopython

the simple is better than complex but complex is always better than complicated yes these

serverless platforms these platform as a service pieces they can get complicated they seem simple

on the outset, but you're learning some new CLI. You've got some set of constraints you don't know

about because it's hidden behind some wall of abstraction. And even if you write plugins to,

say, for example, Django Simple Deploy, you're now still dealing with different abstractions,

different sharp edges along the way. I find that complicated. Kubernetes, some people may call it

complex, but it is the complexity you need now. And it fades away and becomes simple because of

other tools we wrapped around it. That's kind of my base thesis for this. And so I was very hesitant

to go into containers, but I immediately saw the value of it. They are the way to distribute

applications in a repeatable way. And any place I want to put them, I can just throw a container.

I mean, in Amazon, you've got 21 different ways to run a container. And there's a reason why it's

because it's a great way for developers and non-developers like data scientists, anybody who

writes code, they know they can deploy code easily using a container. So then the next logical step

is how to orchestrate those containers

and how to do the same thing locally

that I would do in my production environment.

Will Vincent

It does require, I'll just say one thing

and then you and Carlton can carry on the conversation,

but it does require, you need a good computer

to run Kubernetes on top of everything else.

Am I right about that?

Because I recall, you know, Docker, especially,

Docker like was like two, you know,

I guess I'm really dating myself,

but was out of reach for many regular laptops

back in the day.

So as much as I got super excited about it, I realized for my students, let's call them, a lot of them were like, I can't run Docker in a meaningful way.

Calvin Hendryx-Parker

If you've got four gig of RAM, you're having trouble in any way.

But there's two things I think that Kubernetes can unlock here on the local environment.

And it still requires Docker because you're still running containers in some way.

But if you can run, originally we've developed Scaf with the Kind Kubernetes distribution in mind.

So for those of you who don't know, Kind is a way for Kubernetes developers to run a local Kubernetes in a Docker container using Docker's Docker Desktop or OrbStack or whatever local container runner you want to use for developing on Kubernetes.

Because it's basically a full Kubernetes distribution that runs as the nodes run as containers.

And you can run a single-node container very simply, and so that enables you to run a one-node, one-container, Docker-based Kubernetes distribution.

There is an even lighter-weight version of this, if you're familiar with the various distributions that are out there.

When we deploy kind of full-blown, we use Talos Linux, typically, which is like a full Linux distribution that has no SSH into it.

It has a control plane running, and it has a Talos control plane running.

You only interact with it over APIs.

You cannot SSH into it.

So again, limiting security, vulnerability, surface area.

But Talos is, again, a full Kubernetes distribution.

It's powerful.

It's great.

And it gives you kind of peace of mind from a security standpoint.

The other way we typically deploy Kubernetes is using K3S.

So K8s is a very lightweight version of Kubernetes that can meant to run on the edge, single

node multi-node but it has made some concessions around how it runs certain things so for example

the control plane doesn't use etcd it just uses a simple lightweight sqlite database under the

covers there is a k3d version which is basically k3s on docker so run a single container with all

these lightweight compromises so you you obviously sacrifice high availability but i'm on my local

machine i don't care what i care about is compatibility with the control plane being

able to run kubectl commands being able to run tilt and be able to run the same things i'm running

locally that i would run in the cloud but do it in a way that's not requiring so much system

resources that is bogging down my system i mean it can actually run live reload of django inside

kubernetes containers so as you type code and your ide auto saves you're automatically getting

reloads hot reloads in the kubernetes cluster on your local machine so it feels very local feels

very native to people who are like i want to run just run server you know in develop mode locally

that is what you're doing it is and it runs very very fast uh and with again less overhead so that

i think that approaches the resource constraint issue the second thing i want to mention is that

running something like tilt and using kubernetes means that parts of my infrastructure that i'm

developing on could run on a sidecar machine in another if i had a desktop and a laptop but my

laptop was underpowered, I could develop locally on the laptop, run the Redis and the database and

the other pieces on the other machine as part of one cluster. Or it could be running in EKS or in

ECS on the cloud. It doesn't matter where these containers necessarily live. You can now extend

your resources into places where resources can be paid for by the hour. That's more complicated,

obviously to do such a thing but it is possible i'm sorry carlton one more so with all that said

Will Vincent

if i'm if i'm a new employee or working on a new project at six feet up by the way we should

Calvin Hendryx-Parker

mention you're hiring right you're yes we are hiring i'm looking for full stack devs i'm looking

for devops folks i'm looking for people who are passionate about solving hard problems

that is something that is like near and dear to our heart is actually going out there in the world

and taking the vision of impactful impactful tech leaders and helping them solve these hard

problems and so if you wanted to come play and have fun and do cool stuff with us we're looking

for people right now so go to sixchev.com slash careers that's the last plug i will give for the

Carlton Gibson

company yeah no i prompted it yeah we'll do that again at the end because that's a good thing i

mean you you do you work remotely wait i didn't get to my no no no we'll come back to that we're

Calvin Hendryx-Parker

doing the joke we're doing the fact that calvin's hiring now we are fully remote we only have we

Carlton Gibson

don't have an office we are fully remote first company i've seen some amazing photos of the

company get together i don't know where in the caribbean right as well no correct we do a once

Calvin Hendryx-Parker

a year uh company retreat in dominican republic where we bring everybody together for a full week

together we don't do any customer work we just work on building the better team so wow okay that

Will Vincent

sounds like i might apply that sounds well so my question to you was with all this complexity

as a new hire what is that experience of okay so i'm sitting in boston in a laptop what what is

experience for me, right? Because obviously all that work is to make it simple to do this same

Calvin Hendryx-Parker

day deploy. What does that look like? So Scaf builds out a skeleton onto your file system as

a greenfield part of the development process. You check that into GitHub or whatever your Git

repository of choice may be. As a new developer, I'm expected to get credentials for our organization.

So maybe I'm using Microsoft Entra or whatever it is, and I've got a GitHub enterprise organization.

So I log into my GitHub, I clone the repo, I should literally just be able to type tilt

up as long as I've got an actually till our scaf will check for dependencies.

I mean, really the bare minimum, you just need to have like kubectl installed, you just

need to have tilt installed.

And another thing we've started embracing has been Nix for some of the development environment.

So if you're not familiar with Nix, that's a whole nother level of stuff that, um, it's

not a pain I'm, I'm fully sold on, but I see the promise of is that I can see the, if I've

got Durham, if you're not playing with Durham, it's a lifesaver when, especially when doing

all these API keys and environment variables, I see the end of my project directory, it

will bootstrap the Nix environment and make sure that all my development, uh, tools are

installed at the right versions expected for that project, the right version of black,

the right version of rough, the right version of eyesort, the right version of you name,

whatever tool poof magic happens i type tilt up the cluster you know blossoms into life and i

actually end up with a running you know instance of whatever project i'm working on i may have to

go grab some data from some place but typically we try to have a scaffolding of of data you know

just bootstrapped into the the local developer experience because we typically don't want to

develop with production data we're typically developing with some kind of staging set of data

that's already built into the project.

I go take a GitHub issue and I start working

because it's ready to go.

I open up my favorite IDE.

We don't mandate any specific IDEs.

We've got people who like PyCharm.

We've got people who like VS Code.

We had someone ask for Cursor the other day.

I mean, it's whatever you want,

whatever you're comfortable with.

Like the power of senior developers.

Carlton, shout out.

You could use BBEdit.

I mean, I was an old school TextMate user

at some point in time.

Will Vincent

Yeah, yeah.

I like TextMate.

Yeah, sorry. And that's relevant because Carlton and some of the steering council and board are just looking over the Django survey that's going to come out at DjangoCon Europe.

And there's, you know, figuring out the questions around. And there was one about BBEdit, but Carlton, based on historical, it has to go in the other category because it was less than 1%.

Carlton Gibson

Yeah, yeah. No, no, no. That's fine. It's like, which editor do you use? And every single year I take other BBEdit.

Calvin Hendryx-Parker

Wow. I mean, I'm a longtime old school VI Vim user, but I've shifted. I really do enjoy PyCharm. They changed my mind a couple years back. Probably when you saw me start doing some videos with Paul over there at JetBrains, but the speed following got to a point where I felt like it was reasonable. The VI emulation was very good. So I felt productive.

It was a funny story because it was a PyCon where I did a lightning talk.

And at some point, the VI emulation mode got shifted off on my editor and I couldn't use my computer on stage.

It just like my mind got broken and like I had to use a mouse and it just got weird.

Carlton Gibson

It just goes from worse, bad to worse, right?

Will Vincent

I mean, I'll just say as one, just as one thing, you know, being on the inside at PyCharm, it is, it's non-trivial to do an IDE well.

Like it's, you know, there's way, I sort of suspected, but there's so much more involved.

Calvin Hendryx-Parker

But the ID has never been front and focused.

Like the ID has never been the forefront of my developer tool chain.

It typically has been all the extras around the edges, like the PyFlix and the iSorts and the Blacks and now Ruff.

I mean, it's just those things are just such lifesavers as developers because I can kind of get to the root of the problem and not think about all the outside edges and make sure that I'm still delivering well-formatted good code.

And I think that's even more important today with all the ID and agentic AI tools as well, that I want them still to behave like how I would lay down code.

I don't think that'll always be the way it will be because I think at some point we will probably just not even look at the code.

I think there's going to, that's going to come a time.

It's out there.

Will Vincent

Winsing, Carlton and I are wincing for audio viewers.

I mean, yeah, I mean, maybe.

I certainly wouldn't say no, but.

Calvin Hendryx-Parker

We care about outcomes.

We care about the, what the users, the end users,

the people who are wanting the value out of the software,

we care what the outcomes are.

They don't care what was written in the middle.

We as developers love our craft and I'm one of them.

I absolutely love crafting fun, interesting code

and solving a problem beautifully and elegantly

has always been a priority or excitement in my life,

that's shifting and it hasn't gone away.

I still enjoy, I mean, I'm using the tools,

I enjoy building, but it's been a fun new experience

and I still love guiding the tools

into, say, an elegant solution.

Carlton Gibson

Well, that's the point, right?

Is they can write okay code,

like absolutely no question they can write okay code.

the latest models and all the rest and there has been a change in the last few months they are much

more capable but you still have to watch them like a hawk if you want oh yeah good architectural

decisions now when you say we won't look at the code at all that i wince because i think

but you know i i will see them make a change at an abstraction layer that's just totally

inappropriate and you know that like six months down the road that change if it's not dealt with

Calvin Hendryx-Parker

here and then will be a that's why right now these these tools are so powerful in the hands

of seniors because of exactly what you just said you recognize by by pattern when there's going to

be a future problem coming to bite you later that's harder for people who haven't had that

experience to to grasp or to code with so there i think there's a lot of people out there creating

tech debt today that can be could be avoided if a good senior was in the loop how do we train how

do we instill like years of experience into a new developer so that they can climb those ranks i

would love to be able to solve this problem we don't have any juniors in our team that the person

with the least amount of experience is like 15 years in our team and so that makes a difference

in kind of how we deliver and what we deliver i not i still think it's a problem though that

we don't have that there aren't juniors in the ranks i don't know how we bring them through like

I benefit from people going out and working in other places and experience all the pain along

the way and then coming to work with Six Feet Up and enjoying the senior life. I think, I don't

know, it's kind of a wayward home for senior developers and open source people who love

solving hard problems. There you are. There's your hiring ad again. It totally is. Yeah,

it totally is. Yeah, it's true. I mean, I've hired some of the most amazing people in the

last few months that I never thought I'd work with. And I'm just so ecstatic that they're part

Carlton Gibson

of the team now okay i'd so given that you said that about um hiring seniors and that you're all

very skilled and um we'll come back to the ai question i think momentarily i just want to cut

back to scaf because everything sounds wonderful and i love the setup and i love that you've

resounding endorsement from carlton for scaf philosophically it cuts like absolutely the

opposite direction i can't i've spent my entire career looking for a smaller hammer a more precise

and like delicate thing and i love what you've done and the example you gave was loud swarm and

serverless and and you know that when you're running all those different instances of services

and whatnot absolutely the containerized kubernetes approach it all makes massive sense but when

you're running your kind of small to medium-sized django app it feels like you're deploying i said

when we talked before about it feels like you're using a jumbo jet when you you just want the two

seats of light aircraft right and you know all of the tooling that you've built and it's an amazing

thing that you've got going there and it's like the sort of um full-on high-tech everything

approach to the and it's it's a good solution but the opposite end of the extreme is that is that

Calvin Hendryx-Parker

the the the nice craftsman's hammer right i i will agree with you the nice craftsman's hammer

i also i think this is i thought i thought i knew this was coming and i knew exactly where

this that i would be confronted with this opinion on on the topic and i i still believe

that having that same set of tooling in that local environment as into a larger environment

it it plays into the uh well i'll go back to xenopython again the uh explicit is better than

implicit and in many ways that the um i'll put this out there kubernetes with tilt is more complex

than a platform as a service uh it's more explicit and then through that explicitness it's just

documentation you can run is I think if I look at what you're just put you when you start pushing

complexity around you've got environment variables you've got them they run differently in your paths

or on your fly.io or in your ec2 instance differently than you've got them locally you've

got secrets management you've got how do I set up the database locally versus how do I set up the

database I'm using RDS or if I'm using a installed version of Postgres or SQLite or how I deploy

those databases how do i manage those versions of the data how do i back up the data how do i handle

all these surrounding bits of the application and the the full stack app has opinions on all those

things and it runs the same locally as it does in that in whatever cloud you pointed at yeah and

Carlton Gibson

there's there's something you said um you didn't say it here but you said before which is something

along the lines of kctl is like the standard api it's like this this one one universal and i rarely

Calvin Hendryx-Parker

touch it uh honestly uh you may think that but basing my whole opinions around development

environment developer experience on kubernetes means that i'm a kubernetes kubectl expert i am

not uh i know i don't ever claim to be although the llms are very good at telling me how to go

tail my logs and check for running nodes and these kinds of things but that's about the maximum i do

like i the the the other key bit of this is that and i know it sounds like overkill is having cicd

and using things like argo cd for deployment means that i've got a tool that's basically

fact checking me along the way if i make a change to a manifest you know argo will reject it before

it gets to deploy it out into any any space before me any change i make if it's on the right branch

and it's in the right place and i've followed my my own process is ended up in the right environment

like it's either in my testing or sandbox environment now or it's once i've merged domain

that release goes to production because it's been approved and tested and i've got good tests and

the ci running it just helps me keep all the good practices always going in the right direction

without any cognitive overhead and load on my part as a developer to think about it because it just

runs like these things just happen if i go and you know django admin you know create a new project

now i've got a whole bunch of things i got to think about you know to put in place all those

practices so even when i'm starting a a dummy little pet project i will go use the full-blown

scaf uh template that that said that there is a cost to the that thing to run a base scaf in

kubernetes and like amazon may cost you over a hundred dollars a month uh for that level of

infrastructure that can be made cheaper you can deploy it on a single node in hetzner for

a fraction of that cost and i've been playing with those tools too actually i've been playing

with fast api i've actually been playing with the fast api cloud i got an early access to that and

that's a lot of fun but boy howdy if i want to move that someplace else i'm locked in on that

environment for the moment but boy was the experience fun and exciting as a solo developer

i put the front end on cloudflare pages and workers with the api gateway on cloudflare i put

the fast api which is running lily fast api deploy and poof magic happened there and i i threw up a

database in neon which is databricks is hosted postgres as a service okay it's all free tier

Will Vincent

this portion of django chat is brought to you by six feet up what's stopping you maybe it's an

application that won't scale or an ai initiative that just isn't delivering that's where six feet

up comes in with deep expertise in python django and ai they solve hard software problems modernize

platforms and get teams to market faster their impact speaks for itself automating health care

pipelines for hospitals helping nasa explore pluto building severe weather prediction tools

and applying ai to connect farmers with vital crop data when the stakes are high and the problems

are hard six feet up is the partner that delivers see what's possible at six feet up

Carlton Gibson

right and they're targeting that kind of um yeah that meeting heroku space right that

well which is a good place to be right now yeah right okay yeah well i i gotta i gotta ask you

Will Vincent

calvin so i so carlton and i were just at this pi tv event in amsterdam um and sarah boyce jango

Fellow gave a talk on Django has a marketing problem. And it was a great talk. We'll have

links to it. But I wonder, as the Django community with FastAPI, I don't feel like we have a great

story for, you know, of course, we say they're different tools, like Sebastian, the FastAPI team

are great. But I don't think we've nailed the marketing pitch for why Django. And I'm about

to go to PyCon US. And I'm going to get this question 100 times a day. What would you say

to someone who comes to you you know a client or someone else who says you know how would you make

that decision tree between one versus the other it's it's hard to argue with the batteries included

Calvin Hendryx-Parker

aspects of django and i i feel like we've maybe i don't know if it's a lot of the projects i don't

think the project's lost its way on that i don't think we talk about it enough that if i just

marketing problem it totally is i i think that they're right um on that that that point that if

I mean, I think HTMX plus Django is a really fast way to solve some problems without building

your API twice. If you're in the fast API land and you're building a React app, well, you've now

had to build your API twice, basically. And now you're maintaining that thing in both places and

you have to always have tests to ensure that they stay in parallel with one another. Where if I can

just build the backend and I can enable the single page web app experience on the front end with low

overhead wow is that a that's powerful that's a powerful way to get an idea across to your client

your customer to internal stakeholders without you know spending a lot of time and effort now

you can take that to the next level maybe you do want to build react apps or have it depends on

your needs like at that point you're gonna you're gonna recognize that there's a absolute usability

need or user experience need for those level of tools but it may be that htmx is really all you

need on top of Django because it's got all the templates built in. It's got all the templating

engine, the ORM. It's got all the helpers, which really, I think a lot of folks don't go explore

the docs enough. Well, they think they're doing new things, right? I think that's the other thing

Will Vincent

is they don't realize that everything they're trying to do has been done and probably perfected

and thought about, and they just don't know where to look. Well, they've missed that in the docs.

Calvin Hendryx-Parker

they miss the html helpers and those those bits that you feel like i don't know you i think a lot

of people may just jump in two feet and not think about reaching for the manual when the manual may

say there's already solutions for all this built into django you don't need to reinvent wheels

i see we've seen that a lot over the years with multiple frameworks but django seems to particularly

have good docs and good good helpers built in uh more folks probably just need to get exposed to

them i mean i think that that's an interesting part about like conferences too is you go to

conferences and i think people like people pitching talks to conferences are always looking to pitch

the latest newest fanciest like cool way to solve a problem we probably still need some base level

talks about the framework and the built-ins and the pieces that make django really fun and easy

and a breath of fresh air when talking because a lot of people got attracted to flask and now

obviously they're getting attracted to like fast api because it sounds fun and neat and it's it's

fairly lightweight it's lightweight and fast to get started but then you're you're on the hook

to build all the stuff all right no disagreements there well yeah and it's just i think but i think

Will Vincent

we could learn a lot from again the fast api team you know in terms of they're doing a great job on

Calvin Hendryx-Parker

marketing um but a great whether they like to not fast did a good job as a as a april fool's joke

Will Vincent

on marketing too yeah well and and david lord has been doing a heroic job for oh my god i don't know

10 plus years uh on everything so you got to find the david lord to keep your the longest running

april fool's joke in the history of april fool's jokes pretty much um all right one more and i

promise i'll shut up carlton um i wanted to ask you calvin about typing because this is

i don't know if it's hot but it's it's on everyone's mind and i you know pie charm is

there's all these new type checkers we're integrating you know all of them we're trying

to decide if we have an opinion um and then i'll just say that leads into carlton gave a talk that

you'll see versions of on django mantle that has a take on typing so where do you fall i fall on i

see people trying to turn python into java and arguing that llms want static types um but what

Calvin Hendryx-Parker

do you see oh boy that that's a hard one i i kind of i'm a bit of a person of two minds like uh i

i've always appreciated the python staying out of my way and just letting me code through a problem

but i understand the structural beauty then of of types one thing that i gets me when i talk to

folks is they'll say that python doesn't have strong types i'm like you're you're absolutely

wrong python is very strongly typed it's just never had static typing associated to it and in

when when you say that to someone who says those opinions back to you they think again now and go

look at the language differently and so i think the fact that we've added in static typing and

type hints into the language has been a boost i think it's a good thing i think it's brought over

a whole new set of people who were skeptical before and i i like the fact that i'm not forced

to use it if i don't want to um but it's pretty nice uh i think for ide's and for a lot of the

tooling and for again for the ais and the llms who are doing a lot of coding it's probably a net good

um in in general um it's nice because i don't have to type at all like i don't have to literally type

it like with a keyboard um but the typing can get added for me and then i can have static type

checks and i can have the the you know my my test environment and my integration integration

environment all can validate that what was said is true so from a convenience standpoint i'm still

like i love the ability to just rip off some python and not worry about it but from a building

important big important software standpoint i think it's a big boost because there's a lot of

who feel like they need that level of safety which is probably right they're they're absolutely right

if i'm building software in a life or death health care space or dealing with people's finances and

money or those kinds of things you need that level of extra belt and suspenders it's guard rails

Carlton Gibson

isn't it it's more guard rails around the the code can go wrong it's proactive yeah it's it's

Calvin Hendryx-Parker

you're definitely being proactive about your intent when writing the code

Carlton Gibson

yeah and this is up to you though yeah my take on this is not is that is the types are wonderful

and we should use them where they add value but what i what my only sort of push back there is i

don't i don't want us to let go of the dynamic patterns where they are useful and i think if

we do that we're leaving power on the table that python needs because if we just if we just try and

treat it as a static language well it's not a very good rust is it's slower and it's the type

system's not as good and there's no compiler enforcing it and well okay it is a dynamic

language we shouldn't abandon that is my take and then because i'm obviously in the django community

i link that back to django django was written with dynamic patterns in mind and so when you come down

to the core of it it's very hard to type in because well it's it's dynamic to the core and

we should be careful about trying to enforce unhelpful type hints on on the sort of core

highly dynamic bits of django and you know so that's my kind of take is like absolutely type

integrate but what's your opinion that python has dynamic powers let's not just what's your opinion

Calvin Hendryx-Parker

on the implicit return on what sorry like implicit returns in functions like in methods what like

returning none from yeah right yeah well just not if you don't even type it it's just going to do

that for you yeah i feel like that was a mistake like it was it was less implicit than it should

Carlton Gibson

be explicit it's less explicit yeah i mean i've that's not my one particular bug pair

Calvin Hendryx-Parker

no no money there but you know it was convenient obviously as a new person learning a language

i didn't forget about you know typing return at the end of a thing if it wasn't returning anything

but then you get the side effect of it returned none yeah and then you get some error none type

Carlton Gibson

is not fallible later on and you're like why have i got a none type here it's like i didn't return

Will Vincent

anything from the right yeah yeah yeah no it's a rite of passage that's how you earn your senior

Carlton Gibson

stripes right true true true true sure sure sure so yeah that's the kind of thing that a type

checker might uh might pick up and i the other thing i like is of forcing you into a um into a

match statement to handle optional so you've explicitly handled the none case and i i think

those kind of patterns that we pick up from russ say or and try and bring across are lovely and

they do add value but you know um dynamically creating a class at runtime and you know using

it to do superpowers in a very few in a very concise way is not something we should just walk

Calvin Hendryx-Parker

away from right in my in my right yeah i think it's super powerful especially in a data-driven

world when you want to be able to create like a data data classes for example like that

Will Vincent

yeah yeah well that leads in in my head anyways to the next one which okay ai i'm going to ask

you about it. So you've published on the company blog, a guide to AI coding assistance. I can see

that you seem to be getting a lot out of them. And you sort of touched on this, like, what are

you finding are ways that are working and some things that are still not there yet? I'll just

say for me, the agentic stuff, I'm not quite there yet. Just the security and the hands-offness,

I'm not quite there yet. And friends call me a dinosaur for that. And I may be, but

I'm still walking the earth. So where do you fall on the spectrum of AI, you know,

Calvin Hendryx-Parker

tooling that helps developers? I mean, I think if you've been following along, I, I, I, I have

been playing with them all. Like I've put out posts about, you know, comparing five or six of

them at once and, and, and the, the, the ground moves very, very quickly underneath you. It's

like quicksand and it's, it's, it's hard to follow. I think there's a lot of fear of missing

out uh from folks which maybe why they're calling you a dinosaur i think that's okay to have a

skeptic view it's probably healthy to have a skeptical view of them because they are capable

of doing things um that you may have side effects later so our team is very very adept and very much

using all the agentic ai tooling but we're using it again more like a senior developer would is to

augment the powers of the existing human in the loop who understands how to solve or loves the

the act of creation and solving fun and hard problems so i don't care about some of the busy

work on the side or creating a scaffolding or creating a you know a framework for a little

piece of this or that those those are the less interesting part of the problems and so we can

we can assign those easily to the agentic ai's to take care of that piece or to to build you know

most of what we're doing we're becoming very good at uh specifying and planning and using tools like

spec kit which can integrate into all most all the agentic ai tools that are out there that's

Carlton Gibson

what i'm talking about kind of most recently on the linkedin post spec driven development it's

Calvin Hendryx-Parker

yeah yeah so spec driven development spec kit is from github it's open source and it provides the

ability for you to create in addition to so most folks are probably familiar with agents.md or the

cloud.md file that you put at the root of your project it kind of expresses your opinions about

things agents or the spec kit takes us a step further with allowing you to the beginning of

the project or as as a developer to establish your constitution that both the these are the

things i believe these are the things that should be true for this project and so it's a more

extensive version of that agents.md and it's meant to probably work alongside the agents.md

and then you start in on the specification part of the process and it actively asks you questions

It helps you resolve ambiguity and unknowns.

It helps you write the user stories and helps you get to a better

better set of outcomes, not just output from these AI tools. I think there's a problem where a lot of

developers are focused on the output, not the outcome. Like where their AIs and LLMs are

incredible output machines. They can output tokens till the cows come home, but to get good outcome

requires a great developer in the mix still. We're not at the point where they're fully autonomous

automatons that can go off and do all the things we're still on the humans are still understanding

what the requirements are we're still trying to document those requirements it's actually making

us better developers because we are becoming better at specifying how we want something

to be done or to actually operate once it's been delivered on the other side of that software

Carlton Gibson

equation it's amazing we spent like 30 years saying no we're not going to write specs and

Calvin Hendryx-Parker

now we're all like yeah we're going to write specs all the specs all the time and you get

great docs and you get great tests and you get great use cases and you there's some great flows

out there too i mean we we've been leveraging the figma make platform which is an agentic

version of figma to build prototypes um relatively quickly for even prospects people who aren't who

haven't even signed a contract with us yet we can basically help convey understanding at that level

with them and then we take it into building the real the real tool using you know those are those

are high i think actually for us tools like lovable bolt.new replit are going to be a boom

for our business because these are high bandwidth tools for business users to convey to us what they

meant like how they envisioned a piece of software to work and now they're like make it real uh i

think a lot of people recognize relatively quickly those tools have been given system prompts to make

you very successful early on in building something but i don't they lack i believe in the success on

deployment in the the what's next the day two operations pieces of that so a lot of people

will build early in those tools and then come back into the i don't want to say come back into the

real world they're going to still use it we're going to still use agentic tooling but in a

different way to build the real version of those things but now we've got a high bandwidth high

highly communicated to us what the needs were what the requirements were what the the outcomes should

be for this software like it's much easier to understand that through those pictures and through

actual working uis than it is for them to try and just have a zoom call for an hour and understand

Carlton Gibson

what they want and you talk about that pre and that point before signing a contract because it

it's there's always this kind of um like almost mexican standoff where you say mexican standoff

these days i'm still allowed there's this i don't know i don't know if it is if it's not

um like but there's always a standoff between the client who doesn't want to pay until they're sure

you're going to deliver the right thing and then from your side or my you know my side i don't want

to do too much work without getting some guarantee of some payment that discovery phase if you can

put together a prototype yeah at very low cost then you can do that during the conversation

Calvin Hendryx-Parker

yeah we're seeing less and less of that contention and now because of these tools

that are available you still have the problem though that the client's like let's just ship

the prototype well you know i had to be very good about explaining reality to people there's a lot

of education that goes on in my world and telling people what's real and what's hype and that's also

been a problem I think you're seeing I think there's a lot of people with FOMO and that FOMO

is around what I'm calling just keynote where people are showing off something on a stage

that is half-baked they figured out the happy path they figured out a great demo that showcased it

really well on stage and boy is that not really reality and it's it's doing a disservice like

people should show the realistic version of these these tools because they're still incredible I

think they're really equally as incredible as a developer who's been around for a long time

i want to see the reality of it like how does this actually get me in a day-to-day usage

Will Vincent

productivity value you know the outcomes yeah i like that if i may i might switch to books and

projects time okay so i think we gave you a heads up i'll go first just to break the ice

uh i'm actually not doing a book and carlton i forget if you've done this but i'm gonna say

i did le monde diplomatique so you can okay okay right i'll take i'll take london review of books

which i owe to carlton introduced me introducing me to it it's basically a novel every other

fortnightly um but it's pretty for me in a world of uh you know how to how to say it's nice to see

educated opinionated takes on things that are relevant and some things that are completely

non-relevant but you know tapestry in 16th century whatever and they find ways to make

Calvin Hendryx-Parker

it interesting so i feel i would feel better you shared that and i immediately went and read

like three three little like novels and i was like this is incredible oh my gosh where'd the

time go like it was really that it sucked me in yeah oh good yeah um there it was that's my

Will Vincent

that's my shout out uh either either one of you who wants to go go on california okay uh mine is

Calvin Hendryx-Parker

also a non-technical related thing but i think very prescient in this time of what feels like

a very fast-paced moving world uh one of the so each year uh the team gets a book from gabrielle

who's our ceo um and my co-founder at the team and said two years ago i think it was we gave

everyone the book big panda and tiny dragon um and it's a really really fun animated story of

a journey of two friends who go places, see things. Uh, but it's really the, the one big

theme in there is that the slowing down in a world of, uh, that pushes constant busyness

is something that you, you, we need to take a moment and see. And it was, I think the number

one for me, like the, I, that I took away from that book was this. It's a lot of times people

talk about, um, it's not about the destination. It's about the journey. And then this book takes

set a step further it's not about the journey it's actually who you go on the journey with

who are your friends in life and i found that one to be like about ready to tear up but thinking

about it because it's really important to me who i go on journeys with don't focus on the

destination don't focus so much on the journey it's focus on your friends and that that one's

really i love that that makes me feel good there's a couple books in the series but definitely get

the first one you won't regret it and you will be a better person for it okay super we can't

Carlton Gibson

that's up and up there in our top book recommendations for the for the series um

i'm gonna um just show you um this book here called universal principles of typography you

probably can't see the principles bit because it's like got a silver background there it's by

elliot elliot j stocks who is a font designer he's worked for google he's worked for adobe he's

worked for all everyone and it's a hundred key concepts for choosing and using type and i've

it's a couple of years old now and i've had it on the shelf and i've i remember talking about it

when i first got it but i pulled it off the shelf the other day to look at again i was just like

gobsmacked by how just gorgeous absolutely every page is just beautiful to look at it's it's a it's

an utter delight of a book and you know for us developers who you know all design it's so hard

it's really accessible it makes the principles really clear and yeah it's just a wonderful book

so universal principles of divine of typography by elliot j stocks and um you know typography is

Calvin Hendryx-Parker

95 of design right you know i don't know if you know this but i i got my start in technology

in journalism doing desktop publishing and typography and then i got a degree i have a

Carlton Gibson

degree in technical graphics oh so you're one of those ones yeah okay right yeah so that's a cool

book no it is a cool book i really recommend it um you know as i pulled it off the shelf

and was looking through to find my specific thing

that I wanted to look up.

I was, again, just taken by its sheer beauty

as a physical artifact.

So I do recommend getting it.

Calvin Hendryx-Parker

Nice.

Will Vincent

All right.

Projects, I'll just go quickly.

I'm going to shout out to Django MailAuth from Coding Joe,

which is Django Auth via login, URLs, no passwords.

It's kind of a lightweight package, a newer one.

I've been playing around with that

and I think it's pretty interesting

because Auth is way more complex than people think

And sometimes you need a full-featured thing, but sometimes you need less.

And certainly passwords, no one can remember them.

So that's a pretty interesting one.

Calvin Hendryx-Parker

And you have poor typography that actually looks like Django Molloth.

Will Vincent

Yeah.

Oh, did I?

Okay, I didn't.

Calvin Hendryx-Parker

No, no, it says Molloth.

I didn't mistype it.

The Arial.

Yeah, in our little notes, the Arial font, it does look like Molloth.

It looks like Molloth, but I had to read it twice.

Carlton Gibson

We need to get Joe on the show.

Sorry, Calvin, before you go.

We need to get Joe in the show because we recommended his projects, you know, a number of episodes running.

I think we'll need to hit him up.

Calvin Hendryx-Parker

I put a couple projects in here that I'm interested in right now because I'm building a little side app for the family.

And one of the things I've done is I've made it multi-tenant and I want to be able to deploy it to the world.

So this is the thing I was talking about where I was using FastAPI and Cloudflare for the front end.

But being able to keep random bots from creating a bazillion accounts in your app is pretty

important.

And so there's a project out there called Disposable Email Domains, and you can use

it across multiple languages, not just for Python, but it has basically a blacklist or

block list of bogus email domains that bots typically sign up with.

So you can actually reduce a tremendous amount of your account creation spam by putting that

into your middleware or your pipeline to basically reject both disposable or bogus email domains.

The second one is the project from Cloudflare itself called Turnstile. It is a free privacy

focused capture replacement. You don't have to be a Cloudflare customer or use the Cloudflare

front ends to put that in place. But I really appreciate Cloudflare's dedication to security,

privacy, zero trust technologies. I feel like they got my best interest at heart,

given the type of tools that they are putting out there into the community.

So check out TurnStyle.

It's a drop-in.

It will detect based on browser behavior, your behavior.

Most folks won't see it when they go to your forums.

If your browser looks sus or you're a bot, you will get a captcha in its place.

Carlton Gibson

Okay.

Well, that's a good recommendation.

I saw a project came up called Django Modern REST,

which is from some of the people involved in the Django Stubs project.

And it's another take on a REST solution for Django.

So, you know, we've got REST Framework, we've got Django Ninja,

there's, I don't know, Farhan put out one, Emma's put out one.

Here's another one.

But the take here is types and async support is the headline that they've gone for there.

But I wanted to put that out as, you know,

just in case you felt that we didn't have a REST story in Django,

that there's yet another one for us.

It's a fertile time, I think.

People are picking up the mantle of, you know,

okay, let's solve this.

Let's push forward.

Oh, yeah, Django Mantle.

Yeah, but I'm changing.

You're too modest, Carlton.

But anyways.

But yeah, so there's another one to check out.

As I say, it's by the people from the Django Stubs project,

and they put a lot of work in there,

and they're talented people.

So, you know, it's worth having a look.

Django for modern rest.

Will Vincent

As we depart, Calvin, is there anything

Calvin Hendryx-Parker

we didn't ask you or you wanted to mention no this has been a great conversation i really appreciate

what you are doing in the community i want to send my greatest gratitude for the both of you

thank you so much and thank you for coming back on oh my yeah thank you for you know sharing real

Will Vincent

world insights mixed with exploring which um it's a tricky balance to do but i see you doing it so

Calvin Hendryx-Parker

it's it's so fun to be curious i think that's what most folks need to do more of yes yeah no

Will Vincent

that's that's a good moral to take out of the show all right with that we are at jango chat.com

we're on youtube links to everything in the show notes and we'll see you next time bye-bye

thanks again to six feet up the python jango and ai experts you call for the hardest software

problems from scaling applications to simplifying data complexity and unlocking ai outcomes