Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#460: Overlooked Python Typing

Published Mon, Dec 1, 2025, recorded Mon, Dec 1, 2025
Watch this episode on YouTube
Play on YouTube
Watch the live stream replay

About the show

Sponsored by us! Support our work through:

Connect with the hosts

Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.

Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.

Brian #1: Advent of Code starts today

Michael #2: Django 6 is coming

  • Expected December 2025
  • Django 6.0 supports Python 3.12, 3.13, and 3.14
  • Built-in support for the Content Security Policy (CSP) standard is now available, making it easier to protect web applications against content injection attacks such as cross-site scripting (XSS).
  • The Django Template Language now supports template partials, making it easier to encapsulate and reuse small named fragments within a template file.
  • Django now includes a built-in Tasks framework for running code outside the HTTP request–response cycle. This enables offloading work, such as sending emails or processing data, to background workers.
  • Email handling in Django now uses Python’s modern email API, introduced in Python 3.6. This API, centered around the <code>email.message.EmailMessage</code> class

Brian #3: Advanced, Overlooked Python Typing

  • get_args, TypeGuard, TypeIs, and more goodies

Michael #4: codespell

  • Learned from this PR for the Talk Python book.
  • Fix common misspellings in text files.
  • It's designed primarily for checking misspelled words in source code (backslash escapes are skipped), but it can be used with other files as well.
  • It does not check for word membership in a complete dictionary, but instead looks for a set of common misspellings. Therefore it should catch errors like "adn", but it will not catch "adnasdfasdf".
  • It shouldn't generate false-positives when you use a niche term it doesn't know about.

Extras

Brian:

Michael:

  • Follow up on tach from Gerben Dekker:
    • tach has been unmaintained for a bit but is not anymore. It was the main product from Gauge which is a Y combinator startup that pivoted to something unrelated and abandoned tach. However, https://github.com/DetachHead forked it but now got access to the main repo and has committed to maintaining it.
    • ruff analyze graph is fully independent of tach - we actually started to look into alternatives for tach when it became unmaintained and then found ruff analyze graph.
    • For our use case, with just a bit of manipulation on top of ruff analyze graph we replaced our use of deptry (which was slower - and I try to be careful depending on one-man projects).
  • A Review of Michael Kennedy’s book, “Talk Python in Production” - Thanks Doug

Joke: NoaaS

Episode Transcript

Collapse transcript

00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.

00:05 This is episode 460, recorded, unbelievably, December 1st.

00:12 I'm Michael Kennedy.

00:13 And I'm Brian Okken.

00:14 And this episode is brought to you by us, especially Black Friday things that we have on offer.

00:21 I don't know, it's been a great Black Friday for me.

00:23 A lot of people really interested in the stuff that I put together, hopefully for you as well, Brian.

00:28 Yeah, I kind of forgot about Black Friday.

00:30 Well, the Black Friday has been going good.

00:31 What I forgot about was Cyber Monday.

00:33 So I did add today so people can use Cyber Monday code for the course today.

00:41 But yeah, I just added that this morning.

00:44 Well, people can look for an email from me if they're signed up to the newsletters.

00:49 Is your stuff, what's yours through?

00:51 Is it through today?

00:53 I think I'm going to have it end just tomorrow morning.

00:57 So in case people are like, oh, no, I always get emails like, I missed it by an hour.

01:00 Or just let it go another day and then turn it off.

01:04 So if you're not watching this live, you're kind of SOL.

01:06 Sorry.

01:08 No, I mean, they can listen today.

01:10 Like, this is timely news.

01:12 People have got to stay on top of Python by saying can't let it accumulate.

01:16 No, it's fine if you listen backwards.

01:17 There's a lot of stuff that's not that timely.

01:19 But one of my topics certainly is.

01:21 Anyway, yeah, that's going good.

01:24 Subscribe to the newsletter.

01:25 Follow us on the socials.

01:27 Make sure to subscribe here on YouTube as well if you're interested in catching that.

01:32 We intend the podcast to be an audio podcast.

01:35 But while we're doing the live stream, we do put stuff up on the screen.

01:38 And sometimes it helps to see it, you know, even though we do our best to keep it audio friendly.

01:42 Yeah.

01:43 Speaking of putting stuff on the screen, what do you got for us, Brian?

01:47 Well, today is December 1st, and that means that it's the first day of Advent of Code.

01:52 So I want to look to see how long this has been going on.

01:57 And I guess I don't.

01:58 I'll have to look harder.

01:59 I don't know how long this has been going on.

02:01 This is, so what this is, it's code puzzles that you can do in any language.

02:08 The intent is to do them in any language.

02:09 But of course, our listeners are probably doing them in Python.

02:12 Maybe Rust this year.

02:13 Who knows?

02:14 But this is from Eric.

02:16 Assembly as a stretch goal?

02:17 Come on.

02:17 Yeah.

02:20 This is from Eric Wassel.

02:22 And I really appreciate it.

02:24 This year's a couple changes.

02:26 There's no, let's see, there's 12 days.

02:28 And actually, I'm kind of grateful because I've never actually gotten through all 25.

02:34 And I might, or 24, or how many of them anywhere.

02:37 But so I'm kind of grateful for a shorter one.

02:40 So I can take a couple days to try them out.

02:42 I might try this year.

02:44 And there's, what are the other couple changes?

02:47 There's the global leaderboard has gone away for maintenance reasons.

02:52 So I do appreciate, it's one of the things is we should say thanks for people doing cool stuff.

02:57 So Adventic culture is cool.

02:59 It is sponsored.

03:00 There are some sponsors that have helped keep this going.

03:04 But one of the things I noticed this year, and maybe it's been there and I just haven't noticed,

03:08 is there's a swag page.

03:12 You can go look at some cool stuff and you can grab a mug or a shirt or something kind of fun.

03:20 One of the things I kind of like about it is it's not, the year isn't on there.

03:24 So this can be one that you can just, you can pull out and wear every year around Christmas.

03:30 Evergreen swag.

03:31 Yeah, I like it.

03:33 So fun thing.

03:34 I'd love to hear if other people are using or doing the Advent of Code this year.

03:40 Yeah, I'd like to hear about how it's going.

03:44 Another kind of associated with this, I saw this up on Reddit.

03:49 Somebody wrote a, I know there's been other helpers out there, but there is a Python project that is called Elf, which is a modern advent of code helper that fetches inputs, submits answers and tracks your progress.

04:03 So we're going to link to that as well.

04:05 Just saw this.

04:08 Oh, they've been working on it for a few months, getting ready for it.

04:11 That's cool.

04:12 So Elf is a command line interface to kind of play with the advent of code stuff.

04:17 So we'll link to that as well.

04:18 Yeah, very cool. The advent of code stuff is interesting, but I've never really put much time and energy into it personally. I just have so many projects that I have ideas for and I want to build and I can't even focus on them. So it's like, it is cool. I'm personally thankful for surviving Hocktoberfest without 10 PRs suggesting that I put a comma in my readme.

04:45 Did you get any?

04:46 No, I used to.

04:47 I used to get a bunch.

04:48 Like, hey, we've improved your readme.

04:50 And it's like, you're looking to do a PR is what you're looking to do.

04:54 You're just wasting my time.

04:56 But actually, no, maybe people put up rules around it or they just put up admonishment.

05:02 Like, please don't bother people like that.

05:04 But yeah, not this year.

05:05 Yeah, cool.

05:08 Let's talk about Django, huh?

05:10 That's what I want to cover next.

05:12 Yeah, Django.

05:13 And what's cool is Django is coming up with a major new release.

05:20 They're knocking out the versions pretty quickly.

05:23 And as I did point out at the opening, this is expected December 2025.

05:28 So I'm expecting this any moment now, Brian.

05:31 Okay.

05:31 Seriously, Django 6 has some really cool features, actually some genuinely useful ones.

05:36 The first thing I want to point out about it is how aggressive they are at saying no to older versions.

05:42 Like no old Python.

05:44 They only support Python 3.12 and above.

05:46 That's pretty hardcore, honestly.

05:49 Yeah, but it's an application.

05:51 So you get to decide.

05:53 It's not like if you're building on top of Django, you have to support backwards compatible stuff.

05:59 Yeah, but you may have a five-year-old Django app you want to upgrade that has some weird dependency

06:05 that goes up to 3.10.

06:06 You know what I mean?

06:07 And I'm not saying this is a bad thing.

06:10 I think this is awesome.

06:11 I think there's a lot of benefit that people are missing out.

06:15 Like when I did the year in review sort of thing, article at JetBrains earlier this year,

06:21 one of the areas I worked on and like sort of did a bunch of math

06:25 and like predictions or stats on or whatever was this what version of Python are people running on?

06:32 And a huge bunch of people are still running on 310 or older.

06:36 And your code is so much faster and uses less memory and just so much better.

06:40 Like forget the new features that you get to use.

06:43 Just literally it's like 50% faster or something just by changing what version of Python you're running on.

06:50 And this sort of encourages the Python people who also Django

06:53 to ride at the further out on the edge of that wave, I suppose,

06:57 which is really good because, yeah, it definitely helps.

07:01 So 5.2 is the last one to support, 3.10 and 3.11.

07:04 So they dropped two years worth of Python in one year.

07:06 Pretty good.

07:08 So features, content security policy.

07:11 We all do not love our cross-site scripting and other badnesses.

07:15 So it comes now with a built-in support for the content security policy standard.

07:21 So that's cool.

07:23 Avoid CSS or XSS and those kinds of things.

07:26 Just install it and configure it.

07:28 Basically, it sets some headers, which then tell the web browsers how they're allowed to behave, cross-site, and that kind of thing.

07:34 Another one, I feel like this one probably has Carlton Gibson fingerprints on it here,

07:40 is they now have template partials.

07:43 This is super cool.

07:44 So I'm really surprised how much HTMX, the JavaScript where you run in framework,

07:51 where you write no JavaScript sort of thing, is how popular it has become in Django.

07:56 It's featured in a lot of talks and stuff.

07:59 And one of the things that you really, really need to focus on

08:02 when you're doing that kind of programming is how do I take portions of my page and then return them

08:08 from server-side code. And you can end up with lots of duplication or other weirdnesses. So this

08:14 basically addresses that if you want to return a fragment of a page, then you can say, I know here's

08:19 the whole page, the whole template of HTML markup with a Django syntax. But in this view, when somebody

08:27 makes this request, I want to return just this portion of it.

08:30 And you can even do things like, is the request coming in a regular request?

08:35 We'll return the whole page.

08:36 No, is it an HTMLX partial request?

08:38 Then just return the partial.

08:40 So this is really, really valuable and basically makes those kinds of frameworks that exchange

08:44 partial bits of HTML, regardless of whether it's HTML, nicer.

08:48 That's pretty cool.

08:48 Yeah.

08:49 Another really nice one is a background tasks.

08:52 So just a thread that cruises around in the background that you can throw stuff at.

08:57 way more useful than you would think.

09:00 Sometimes you want to process something that takes a little bit longer,

09:04 but you don't want to block up the request response.

09:07 Like, hey, I want to sign up for your newsletter.

09:09 If you want to send them a welcome to my newsletter or whatever email, you could on that request block

09:16 and let it sit there and spin, fire up your email API, connect, send,

09:21 wait for that actually to send, get a response back and then say, welcome, we've sent you an email, right?

09:26 That's one way, but that makes your code potentially slow.

09:30 It'd be nice to go instantly, hey, thanks for signing up.

09:34 You're on the newsletter.

09:36 And then kick off a task to the background, like send that person an email.

09:40 For one email, it's not that big of a deal.

09:41 If you've got to send a lot or do a bunch of stuff, it can time out your web requests.

09:46 You get normally 20 seconds or something like that.

09:48 And if it takes longer than that, it's a problem.

09:50 Of course, people are going to be freaked out and reload or whatever as well.

09:54 But anyway, this is like a real simple way so you don't have to run other servers and message queues

10:00 and all that kind of stuff.

10:01 You just put it in the background of your app and let it go.

10:03 It's not as durable, but it's great.

10:05 Almost every app needs some sort of background task.

10:07 So this is awesome that it's included now.

10:10 It's cool that it's included, absolutely.

10:12 Speaking of email, email handling in Django now uses the Python's modern API introduced in 3.6

10:18 using email.message.emailmessage.

10:20 Super cool.

10:21 Easier to send that way.

10:22 and then a bunch of minor features that I'm not going to go into.

10:25 Anyway, that's a pretty big set of releases or features for a year.

10:30 Yeah.

10:30 Yeah, so now we have to see how many people are going to update

10:34 all of their Django books and tutorials and everything, Django 6.

10:41 It's both an opportunity and a bit of a challenge.

10:44 Yeah.

10:45 So Django's not a-- that isn't just a year, though, is it?

10:50 Doesn't there is the release cycle like a year and a half or two years or something like that?

10:54 Let's see.

10:55 I feel like, where's the release?

10:57 Here we go.

10:58 It's yearly.

10:59 Yeah, it's yearly.

11:00 Okay.

11:00 Well, yeah.

11:01 Hold on.

11:02 It depends on what you call.

11:03 Like, what is the version bump?

11:05 There is a release every year, but it's not always a major version bump.

11:09 Like, 6 is coming, but then 6.1 and 6.2 are planned.

11:12 And I think 6.2 might be the LTS.

11:15 Yeah.

11:15 So it bumps between LTSs.

11:17 And the LTSs are on a three-year cycle.

11:20 long-term support so you're not forced to keep rolling to get security fixes and stuff yeah

11:24 yeah and i think that's because of some deprecation uh stuff and everything so

11:29 all right cool gotta love advancements in django yep um okay well i um i'm gonna look take a look

11:36 at some typing stuff how's that sound i love typing let's do it um so there's a there's an article

11:42 um called advanced overlooked python typing and there's some goodies in here that i didn't know

11:48 about, which is cool.

11:49 So I was slow to come on board with typing, but I like all of the extra.

11:54 I'm kind of a fan now.

11:56 Plus, it only takes having one package that's kind of popular

12:00 that people will demand that you--

12:02 so anyway, so some cool extra things if you possibly may not have known about.

12:09 The first I'll jump into is--

12:12 oh, there's a disclaimer here that it says that it's looking at modern stuff.

12:16 So Python 312 or 313 or newer for some of this stuff.

12:22 So assert never.

12:23 I didn't know this was a thing.

12:25 So let's say you've got a match case thing like switches.

12:31 And you've got your catch all at the end.

12:33 And you want to never hit that.

12:36 Usually I'll throw an assert there or something just in case.

12:40 But there's an assert never.

12:42 That comes from typing.

12:44 Didn't know that was there.

12:45 that you can make sure that this default case has never hit,

12:49 or if you have other cases that should never be hit.

12:51 Throw that in there.

12:52 That's cool.

12:53 Didn't know that existed.

12:55 There's getArgs.

12:56 And the idea around getArgs is, oh, this is a little small,

13:00 so I'm going to see if I can make this a little bigger.

13:04 The idea around getArgs is, so if you've got,

13:10 like here we've got frozen sets to have literals.

13:13 There's literals before, but you kind of had to have a duplication of all the actual literals for typing for different things.

13:22 And that's in a set of literals, and that's sort of a pain.

13:25 So instead of that, you can do get args, which creates essentially a set of literals for types, for things that are in something.

13:37 So you kind of have to see the code here to understand that.

13:40 It helps with keeping it in line so that when you create an extra element in your set, it automatically gets an extra type.

13:51 TypeGuard we've covered before.

13:53 I think we've covered it.

13:55 It gets you the exact type-narrowing logic.

13:59 I haven't used TypeGuard a lot, but there's sort of a pickier version.

14:04 Type is a stricter and more prophesied type-narrowing than TypeGuard.

14:09 by enabling bidirectional narrowing.

14:11 Okay, so kind of fun with type is.

14:14 Anyway, some extra, oh, we've got unpacking and concatenation for callables.

14:22 Oh, callable with dot, dot.

14:23 Anyway, a lot of goodies for if you want to like really get into some of the nitty gritty

14:28 and some of the extra fun things with typing.

14:30 This is a fun article.

14:31 Yeah, very nice.

14:32 I actually have an interesting one to add to that is no return.

14:37 Oh, really?

14:38 Okay.

14:39 So you can go to a function and you can say arrow, I mean, goes to int,

14:43 goes to stir, goes to optional customer, whatever.

14:47 You can even say it returns none, which is literally it returns none.

14:51 But no return is, it's not like a void.

14:54 It's different.

14:55 It basically says the only way that this function exits is through an exception.

15:00 There's no way out of it.

15:01 So you might have a while application is still running.

15:05 And then in some case, if it decides it needs to stop, it raises an aborted, task aborted exception.

15:11 And it's like, while true, if exit, raise task aborted.

15:14 Like there's no regular way out.

15:16 The only way out is through an exception than this.

15:20 So you might think, why would I ever do that?

15:22 Well, some of the web frameworks, when you do a redirect, the way they do the redirect is they raise an HTTP redirect sort of exception type thing,

15:30 which is more likely to just like make it get all the way out right away rather than if you forget

15:36 to say return redirect, right? Something like that. So you'd put a no return there. Isn't that a weird

15:40 one? Yeah. Yeah. So I would have expected like one of the commenters, I thought no return was

15:47 equivalent to return none. So if you don't have a return, that's not what it means. I'm like, oh,

15:54 this is a really cool way to say it only returns none ever, which is the case if you never, if you

15:59 don't say the keyword return, it still returns none.

16:01 But no, this says the only way it gets out is through exceptions.

16:07 Yeah, it was weird, right?

16:08 Timing module, annotate functions that never return normally.

16:11 I wanted a void.

16:14 Where's my void?

16:15 You know what I mean?

16:16 There's nothing coming out of this.

16:17 This is not it, but this is something else in that realm

16:21 of advanced type.

16:21 Yeah, and those things do exist.

16:23 So yeah, interesting.

16:25 They sure do.

16:26 So you know what else exists is misspellings.

16:29 So I got on my Talk Python in production book, Christian Klaus was kind enough to send me a message saying,

16:34 hey, you know, so you may have some misspellings.

16:38 And he sent me this thing, right?

16:40 As a PR.

16:41 However, it says fixed typos discovered by code spell,

16:46 all one word, code spell.

16:47 - Okay. - Wait, what is this code spell?

16:49 Well, code spell is a tool that checks for common misspellings in source code.

16:55 It works on other files as well, but it especially works on different types of source files

17:01 'cause it ignores backslash escapes and other things that are common in code.

17:07 But it's not a spell checker.

17:09 It's a misspelling finder, let's say.

17:12 So what it does is it goes and it says, I'm gonna look for words that are commonly misspelled.

17:17 Like in my example, what two things had I misspelled.

17:20 I had FOM instead of from, F-O-M.

17:23 had plausible with able instead of able on it. Right. So it looks for common misspellings. It

17:29 doesn't look for words. It doesn't know because those are super annoying. You're like, here's

17:34 723 misspellings. Like, no, those are acronyms. You know what I mean? Yeah. like that is a

17:40 library I'm importing. It's not misspelled. If I change it, it doesn't work. Right. Like that

17:45 kind of stuff. So what this does is it looks for like common misspellings, like ADN or, TEH

17:51 or what, you know, stuff like that.

17:53 Anyway, there's not a whole lot more to say about it other than it's pretty cool, it's configurable,

17:56 you can like put words that are, you know, learn the spelling equivalents

18:00 and put other types of config files and whatnot.

18:04 Oh, this is cool.

18:05 Yeah, you can even put it into a pyproject.toml in settings if you wish.

18:09 Cool.

18:09 Yeah, it's got 2.3,000, 2,300 GitHub stars.

18:13 So yeah, pretty popular actually.

18:15 As somebody that uses a code editor exclusively for all of my text writing needs.

18:22 This will be good.

18:23 Yeah, indeed.

18:24 I think Christian even set it up as a pre-commit hook.

18:28 Oh, that's a good idea.

18:29 Which is kind of interesting because it's apparently pretty fast.

18:32 I think this is the one we were talking about.

18:34 Yeah, it has like, there's something about pre-commit

18:36 like right there in the last commit.

18:38 So I'm guessing it does something with that.

18:40 All right.

18:40 How are you feeling on your extras?

18:42 I got a few extras.

18:44 Okay.

18:45 Yeah, go for it.

18:46 Okay.

18:47 Let's see.

18:47 I'll start with Hatch.

18:50 So Hatch 1.16 came out.

18:54 So some exciting features of Hatch.

18:59 So for Hatch backends and Hatch itself, what do we got?

19:04 We got dependency groups and there are workspaces.

19:08 So workspaces allow you to, like if you have a monorepo and you have a bunch of different projects within a monorepo,

19:14 this might help with that.

19:16 And then there's one, this is interesting.

19:19 It supports software bill of materials now.

19:22 So that's going to be, that's becoming a growing thing.

19:25 So update to Hatch and another update on a different project we talked about last week.

19:32 Was it last week?

19:32 We talked about in one of the things we talked about was Zensicle.

19:37 And a listener over on Mastodon, Fasodon said, one of the things we forgot to mention is Zensicle is a replacement for MakeDocs

19:46 plus, what was it, material theme?

19:49 And also one of the things they talked about was MakeDocs doesn't seem like it's been maintained

19:55 since the middle of 2024.

19:57 So there's a link in here to, is MakeDocs still maintained?

20:02 And I scrolled.

20:04 It's an interesting read, but I kind of think the answer is maybe-ish,

20:11 but maybe not.

20:15 So if you always have to, you always have to split that difference of like,

20:19 it could just be done, you know, certain things are just,

20:22 they really don't need more and they're supposed to be simple,

20:24 but I feel like MK docs is something that could continually take on new

20:28 variations and features and updates.

20:30 Yeah.

20:32 So not even to say no, we're not longer being maintained.

20:36 Is this the, anyway, interesting read if you're curious and want to depend on that,

20:40 but I think I'll be, I'll be checking out Zensicle as well.

20:43 Right.

20:43 And as you pointed out last week, you said, for sure that it's a rewrite.

20:49 Zensicle is not just building on MKDocs.

20:52 It's just the people that were working on material for MKDocs

20:55 are now building a completely from scratch documentation thing, right?

20:59 Yeah, it's backwards compatible if you used MKDocs before,

21:03 but it is something completely different.

21:05 All right.

21:07 All right.

21:07 How about, do you have any extras?

21:09 Or something completely different?

21:10 I do.

21:10 Let's go back to, was it last week or week before?

21:13 I talked about TAC, T-A-C-H, and how it creates one of those basically architectural layered

21:21 graphs that let you show which parts of your app depend upon which other parts of your app,

21:25 that kind of thing.

21:26 And it was pointed out that, hey, hey, that thing looks kind of unmaintained.

21:31 Well, Gerber Decker sent me a message and says, TAC has been unmaintained for a bit,

21:37 but it's not anymore.

21:39 It was the main project of Gage, which is a Y Combinator startup that pivoted to something

21:43 unrelated and based on AI, surprise, surprise. And they abandoned TAC. However, detached head from

21:49 GitHub forked it and now has access to the main repo and has committed to maintaining it. So it's

21:54 back. Also rough analyzed graph. It is fully independent of TAC. And they actually looked

21:58 into using that as an alternative once it became unmaintained. But yeah, anyway, that's

22:04 TAC is back. TAC is back. TAC is back. Also quick shout out to Doug Farrell and thanks. He wrote a

22:13 Review my book and yeah, very nice. So I linked over to that if people are interested. Thank you, Doug for writing that

22:20 TLDR says recommended so appreciate that. All right Are we ready to joke about something? Yeah. Okay, so you've heard of

22:29 Platform as a service PA AS you've heard about infrastructure as a service IAS or IAAS DB as a service DB as

22:39 A-A-S.

22:40 Sometimes, though, your productivity just demands that you stay focused and you just say no.

22:46 Right, Brian?

22:47 Yeah.

22:48 So I present to you no as a service.

22:53 So this is an API that will simply return a random but realistic excuse for saying no.

22:59 So you can turn it down and stop.

23:01 Oh, nice.

23:02 Yeah.

23:03 Built by humans, excuses, and humor.

23:05 This project is sponsored by Git Ads.

23:08 Git Ads.

23:08 I don't know what that is.

23:09 but anyway so if you pull it up it's um n-a-a-s i think it's n-o-a-s but you know whatever it's

23:16 that's not the domain they got and you just get a little bit of json reason i'm finding an invisible

23:21 dragon at home it's taking longer than expected or not my circus not my monkey so definitely not

23:26 my act to perform cinderella left one shoe here and i need to help her find it instead of going out

23:31 I would come, but I'm trying this new thing where I just don't.

23:38 So if you need to integrate no for whatever reason into your application,

23:43 well, here's the API right here.

23:44 You get a JSON response.

23:45 It is built as an API.

23:47 This is great.

23:48 You can just query it.

23:50 Yeah, we're going to get probably an MCP built over as well.

23:52 So you can integrate into your AI workflow as well.

23:55 I mean, it's going to be powerful.

23:58 Why use a constant when you can call an API?

24:01 guy exactly anyway I thought no as a service is a pretty good joke I I love this last one I would

24:07 come but I'm trying this new thing where I just don't exactly I my favorite is I can't make it

24:14 because I don't want to exactly no don't want to all right well uh fun episode as always thank

24:23 you everyone for listening thanks thanks Brian thank you thanks all yeah bye


Want to go deeper? Check our projects