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

#456: You're so wrong

Published Mon, Nov 3, 2025, recorded Mon, Nov 3, 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: The PSF has withdrawn a $1.5 million proposal to US government grant program

  • Related post from Simon Willison
  • ARS Technica: Python plan to boost software security foiled by Trump admin’s anti-DEI rules
  • The Register: Python Foundation goes ride or DEI, rejects government grant with strings attached
  • In Jan 2025, the PSF submitted a proposal for a US NSF grant under the Safety, Security, and Privacy of Open Source Ecosystems program. After months of work by the PSF, the proposal was recommended for funding.
  • If the PSF accepted it, however, they would need to agree to the some terms and conditions, including, affirming that the PSF doesn't support diversity. The restriction wouldn't just be around the security work, but around all activity of the PSF as a whole. And further, that any deemed violation would give the NSF the right to ask for the money back.
  • That just won't work, as the PSF would have already spent the money.
  • The PSF mission statement includes "The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers." The money would have obviously been very valuable, but the restrictions are just too unacceptable.
  • The PSF withdrew the proposal. This couldn't have been an easy decision, that was a lot of money, but I think the PSF did the right thing.

Michael #2: A Binary Serializer for Pydantic Models

  • 7× Smaller Than JSON
  • A compact binary serializer for Pydantic models that dramatically reduces RAM usage compared to JSON.
  • The library is designed for high-load systems (e.g., Redis caching), where millions of models are stored in memory and every byte matters.
  • It serializes Pydantic models into a minimal binary format and deserializes them back with zero extra metadata overhead.
  • Target Audience: This project is intended for developers working with:
    • high-load APIs
    • in-memory caches (Redis, Memcached)
    • message queues
    • cost-sensitive environments where object size matters

Brian #3: T-strings: Python's Fifth String Formatting Technique?

  • Trey Hunner
  • Python 3.14 has t-strings. How do they fit in with the rest of the string story?
  • History
    • percent-style (%) strings - been around for a very long time
    • string.Template - and t.substitute() - from Python 2.4, but I don’t think I’ve ever used them
    • bracket variables and .format() - Since Python 2.6
    • f-strings - Python 3.6 - Now I feel old. These still seem new to me
    • t-strings - Python 3.14, but a totally different beast. These don’t return strings.
  • Trey then covers a problem with f-strings in that the substitution happens at definition time.
  • t-strings have substitution happen later. this is essentially “lazy string interpolation”
  • This still takes a bit to get your head around, but I appreciate Trey taking a whack at the explanation.

Michael #4: Cronboard

  • Cronboard is a terminal application that allows you to manage and schedule cronjobs on local and remote servers.
  • With Cronboard, you can easily add, edit, and delete cronjobs, as well as view their status.
  • ✨ Features
    • ✔️ Check cron jobs
    • ✔️ Create cron jobs with validation and human-readable feedback
    • ✔️ Pause and resume cron jobs
    • ✔️ Edit existing cron jobs
    • ✔️ Delete cron jobs
    • ✔️ View formatted last and next run times
    • ✔️ Accepts special expressions like @daily, @yearly, @monthly, etc.
    • ✔️ Connect to servers using SSH, using password or SSH keys
    • ✔️ Choose another user to manage cron jobs if you have the permissions to do so (sudo)

Extras

Brian:

Joke: You are so wrong!

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 456, recorded November 3rd, 2025. I am Michael Kennedy.

00:12 And I am Brian Okken.

00:13 And Brian, I'm getting Guns N' Roses vibes. It's raining outside, it's November. Come on.

00:20 Guns N' Roses?

00:21 That's one of their songs. That's like, once they were kind of cool, then they became some other band that was more of like love ballads.

00:28 November Rain, it's a Guns N' Roses song.

00:29 Oh, okay. November rain. Okay. Got it. I'm like, yeah, it's, it's rainy in the Northwest. That's

00:34 just not that much news, but no, that's like, no, I got to go back. We're going to do music

00:39 that completely entirely encompasses all of Pearl Jam, all the Nirvana, all the Soundgarden period.

00:46 November rain or rainy in the Northwest, like the whole grunge movement. Right. Yeah, definitely.

00:51 And I would just, I mean, look, I'm getting some support from the audience here. Rhett out there

00:55 already saying November Rain is one of the greatest rock ballads of all time. And I agree.

01:00 Thank you, Rhett. Although I will throw a Tesla out there

01:02 as the greatest rock ballads of all time band. Alright. Are we

01:06 off track yet, Brian?

01:07 This episode is brought to you by us.

01:10 We've got a bunch of fun things.

01:12 We have Tesla the band. Not the scientist. Not the company.

01:17 We both have awesome books. You should check them out. Brian, yours has been around for a while.

01:22 I don't know if you're ever going to write another one,

01:24 but we'll see. And how many How many people write the second book, right?

01:27 You know, I imagine that you might do something like this.

01:30 And my book's going really well.

01:32 The Talk Python in production.

01:34 Like, hey, maybe we could do simplified, affordable, but still fast and professional.

01:38 Posting of our apps without hyperscale clouds.

01:41 And 100 services and cloud engineers and all that.

01:44 And if you want to be part of this show live, you can join us live.

01:50 Are we changing times, Ryan?

01:51 It's 11.

01:52 We're good now, isn't it?

01:53 Well, as far as my work schedule goes right now, 11 works.

01:57 All right, everyone.

01:58 I just want you to know what I'm out here doing for you.

02:00 So I'm going to have to go back and edit 455 episodes where we said,

02:05 watch the live stream at Monday at 10 a.m.

02:07 I'm going to have to replace that with watch the live stream at Monday at 11 a.m.

02:10 You're not actually going to do that, are you?

02:12 No, I'm not going to do that.

02:16 Nonetheless, AI can do it for me.

02:17 That's not happening.

02:18 But going forward, if you want to join us for the live stream,

02:21 please do so at exactly this time, 11 a.m.

02:24 I'm sure there's some sort of time zone weirdness because we just changed time,

02:27 but Pacific Standard Time until it becomes daylight time.

02:31 We'd love to have you.

02:32 We'd love people in the audience with feedback and thoughts

02:35 and all that kind of fun stuff.

02:36 Check out the newsletter.

02:37 It's really great.

02:37 We've been telling you about it.

02:38 Sign up, pythonbytes.fm/.

02:40 I'll just go there and click the newsletter button.

02:42 All right, Brian, what are you clicking first?

02:44 So I want to talk about some news that came out last week.

02:49 There's on the wrong one.

02:52 There we go.

02:54 The PSF, the PSF wanted to try to get, try to get some money from the National Science

02:59 Foundation.

02:59 Actually.

03:00 So this was in January of 20th, January of 2025.

03:05 There was a, a really kind of an interesting grant under the safety, security, and privacy

03:11 of open source ecosystems program, which totally seems like a perfect thing for the PSF to try

03:18 to get some money for Seth and others to make sure that the PSF

03:23 and Python code is all secure.

03:24 Yeah, especially I think the supply chain side, if I remember correctly.

03:28 Something like that.

03:30 However, and they put in a ton of work and then

03:36 our current administration says in order to

03:40 get this money, you have to agree that you will basically

03:46 not have any sort of diversity anything is part of your whatever. And, you know, what's going on? You have to affirm that we do not

03:55 and will not during the term of this financial assistance award operate any programs or advance

04:01 any or promote DEI or discriminatory equity, whatever. All that normal, wacky politics stuff

04:09 that's going on in the US right now. Well, that's a tough bite for the PSF because it wouldn't just

04:14 be the security stuff. It would be everything the PSF does. And in the mission statement,

04:19 the mission statement of the Python Software Foundation is to promote, protect, and advance

04:24 the Python programming language and to support and facilitate the growth of a diverse and

04:29 international community of Python programmers. Does that violate? We don't know. So they like,

04:35 you know, checked with a bunch of people and basically said it's too risky because

04:39 if the administration decides you violated it, they can take back the money, even if you've

04:45 already spent it. That's crazy. And I'm glad, basically the PSF said, too high of a risk,

04:52 and we're not going to do that. So they said no, they took back the proposal.

04:58 I think they basically, they were going to win it, it's my understanding, like it was

05:03 turned down 1.5 million, which if you think about it is something like 25% of the revenue,

05:08 that's a really big significant chunk yeah i mean huge amount of money and a small amount of money

05:14 for the national science foundation huge amount of money for the psf um it's a it's unfortunate

05:20 but um anyway uh we're gonna link to the uh the psf announcement but there's also um uh simon

05:28 willison has a a shorter and really good write-up he's um uh he's he's part of the decision too and

05:35 agrees with it. Apparently it was, it was unanimous. So he's on one of the, one of the board members

05:41 who voted to reject the funding. And then there's, there's also articles from Mars Technica about

05:47 this because it's a big news. And also the register has an interesting article on it. So

05:54 we'll link to those, but yeah, that is a little bit more broad coverage of inside baseball and

05:59 python than we usually get yeah uh it's unfortunate too but so i'm um i'm gonna bump up my uh my

06:06 donation to the psf um um and there's a link in most of these are at least in the main article

06:13 and uh simon wilson has a link there also if you'd like to if you think what they're doing is right

06:18 and good stuff and i i actually really love the what what well everybody does but um uh bringing

06:24 seth on board was pretty cool and he's doing some neat things with security and so so are other

06:28 people. So yeah, anyway, that's that. Yeah. More security is good for us, but yeah, it's got to pay

06:33 for it. That's tricky. Talk about serialization and there is no funding or nothing in the serial

06:40 just straight serialization, Brian. So check this out. So one thing that's really popular,

06:44 I don't know if you've heard of them before, but Pydantic, it's pretty popular. Some people use it

06:49 for, they have JSON and they want to get into Python objects. They use this thing called Pydantic.

06:53 Yeah, it's kind of a big deal. It is, but here's what the Pydantic things do.

06:58 they exchange JSON, right?

07:00 And JSON can be extremely verbose, aka takes a lot of memory during caching.

07:05 So let's suppose I have a list of a thousand customers.

07:08 Each customer has a street address, country, postal code, et cetera, et cetera, right?

07:12 Those words are repeated a thousand times for how many customers I said,

07:16 a hundred, a thousand, whatever, right?

07:18 Those are, they're very verbose.

07:20 It's great for humans.

07:21 It's way, way better than XML.

07:23 Thank you for XML mostly going away, But it's still pretty verbose.

07:27 So when you say, like, maybe I want to use Pydantic models,

07:29 but then I want to store those things in, like, some kind of cached setup, right?

07:35 Like a Redist or a disk cache.

07:38 Like, man, I'm psyched about disk cache these days.

07:41 So many places I see that I can use it.

07:43 But if you put the JSON in there, then you're taking up a lot of space.

07:46 So this project announced on Reddit by Lucky2Yan is called,

07:54 what's the actual project called?

07:55 It's called PyByntic, is in Pydantic, so binary Pydantic, which is interesting.

08:03 So it says, I built a compact binary serializer for Pydantic models that dramatically reduces the RAM and or disk storage for caches compared to JSON.

08:13 The library is designed for high load systems like Redis caching Valkey.

08:17 If you're doing Redis, you can also look at Valkey, where millions of models are stored in memory and every byte matters.

08:22 It serializes Pydantic models into minimal binary formats

08:26 and deserializes them back with zero extra metadata overhead.

08:29 Cool.

08:30 If you look-- is there a graph here?

08:32 No, there is the graph on the GitHub page.

08:34 So there is a graph about the size, but it's something like seven times smaller.

08:38 There's a bunch here.

08:39 Let's look.

08:40 It compares to JSON, which is, let's say, 35 gigs.

08:44 And then Pybantic--

08:46 I'm having problems here--

08:48 It is 4.6, which is like nine, eight times smaller than JSON.

08:53 But that's pretty interesting.

08:54 But here's what is actually really crazy.

08:56 It's also four times smaller than MessagePack, five times smaller than BinaryJSON,

09:02 and half as big as Protobuf.

09:04 Oh, interesting.

09:05 And Rhett out there is right there.

09:07 Thank you, Rhett, for the handoff.

09:08 So why not just use Protobuf?

09:09 Well, it's twice as small, so it depends how much you are really worried about that, right?

09:14 And how much do you want to just serialize your bidentic models?

09:18 So anyway, I thought this was interesting in a way that it would say, look, maybe we don't just necessarily store everything in JSON.

09:26 Maybe it's this Pybantic thing.

09:28 Or maybe, as Rhett is pointing out in the audience, maybe you want something more interchangeable and more well-known.

09:34 Use protobuf.

09:35 So it's a chance to talk about this new project, which is interesting.

09:38 But also just to talk about there's interesting, well-known serialization formats that you can use.

09:43 Yeah.

09:44 Yeah.

09:44 And I think we can get those numbers better.

09:46 If we come up with a benchmark with really long names, I'll get repeated.

09:51 Like Boolean objects that are just like, the street that I lived on when I was a kid.

09:58 Underscore, yeah.

10:00 Street that I lived on underscore kid as a kid confirmed,

10:03 true or false, and so on, right?

10:05 We could crush it in anything that drops the, drop it.

10:09 So yeah, someone else out there say, all these things sound kind of interesting

10:12 until you need to open up a REST client and debug the API.

10:15 I don't believe, yes, that's true.

10:16 And I don't believe that this is necessarily an API exchange format.

10:21 This is a caching story, right?

10:24 Like if I'm going to write it to disk cache or to Redis or Valkey, you know, I'm probably

10:29 not going to look at it.

10:29 I'm just going, is it still there or do I just throw it away, right?

10:32 Maybe you do, but maybe you don't.

10:33 Right.

10:33 Anyway, yes, everyone has pointed out some of that.

10:36 There are certainly trade-offs of binary data, but I think it's pretty interesting.

10:40 Yeah.

10:40 As you know, look, the thing is often the very first limit you hit when you're in any sort

10:46 of cloud computing environment is way, way sooner memory than CPU.

10:51 Memory is so much more expensive than CPU.

10:54 And this can give you, you know, half, five times less scale in that regard.

10:58 So you might be, you know, that's where you start.

11:01 This is not when I'm just like prototyping my app.

11:03 Like, let's start with this, right?

11:05 This is where you're like, we could go from a thousand dollar server to a $50 server.

11:09 If we didn't have to store this much stuff in memory for caching and it would still be faster.

11:14 You know, that kind of thing.

11:15 Yeah.

11:15 Yeah.

11:16 And there's still like, I don't know if this would be useful in those cases, but there's still non-web cases where memory is important.

11:23 Oh, right.

11:24 What are you talking about?

11:25 Internet things and stuff like that.

11:26 Embedded systems.

11:27 There's stuff other than the web?

11:29 No.

11:30 I know.

11:31 I'm an old, old crafty guy that actually programs things.

11:36 Crazy.

11:36 No, here.

11:37 What's your next thing?

11:38 Tell us about it.

11:39 Okay.

11:39 Well, this is t-strings.

11:41 These are new.

11:42 Actually, we've talked about t-strings before, but now everybody can play with them because 3.4, 1.4.

11:48 3.14 is out.

11:49 Yeah, they're officially a thing.

11:52 But they're a little, I think we're going to cover them probably a few more times

11:59 because they're a little bit harder to get your head around

12:01 than everything else before.

12:03 So I really appreciate, there's an article from Trey Hunter,

12:06 t-strings, Python's fifth string formatting technique?

12:10 There should be one and only one way to do things unless it has to do with strings.

12:14 Yeah, or lots of other things.

12:18 Or paths, or what else are we talking about?

12:20 So one of the cool things is, and I haven't really thought about this,

12:24 is the history of string formatting.

12:26 He goes through a very brief history.

12:29 Percent strings, I kind of remember those.

12:31 Yeah, I totally remember using those, like %s and then % and then the tuple to fill them in and stuff.

12:39 So those sorts of template strings.

12:41 You've got string.template, which I actually, to tell you the truth,

12:45 that came in in 2.4, and I don't think I ever used it because by 2.6, we had.format.

12:51 So Python.format, we used a lot.

12:55 I used that a lot over the years.

12:57 It's still a useful one, actually.

12:59 Yeah, definitely.

13:01 And also in a lot of places where you might grab t-strings now,

13:05 they're still pretty useful because you can pass those around pretty well

13:08 and then format them later.

13:10 And that's sort of that delayed actually formatting part where t-strings are going to be really cool.

13:18 So then we have f-strings, of course, and everybody loves f-strings.

13:21 I love them.

13:22 And what's interesting is I still think of f-strings as a new thing,

13:25 but they came in at 3.6.

13:27 That was so long ago.

13:28 I know.

13:28 That was real long ago.

13:29 It's wacky.

13:31 And then 314 has t-strings.

13:34 And the different thing about t-strings is they return a template.

13:38 They do not return a string.

13:40 So they are different beasts.

13:43 But the cool thing is, well, so why would you use them?

13:47 We've talked about this before, but I kind of like that Trey took a whack at explaining this.

13:52 They're more like you might want to use, I don't remember if he said it or somebody else.

13:56 It'll be very useful for library authors and framework people to be using t-strings.

14:01 Not sure how many people like in your own code you'll use it because f-strings are still pretty cool in format.

14:06 But he gives an example of a dedent function that is the issue with f-strings is the when you like that the interpolation of filling in the variables happens earlier and you can delay it with templates.

14:22 Essentially is what we're talking about.

14:24 And he goes through a dedent example.

14:26 And I actually, I'm going to have to just play with it more because I still got lost.

14:30 But this is a good attempt.

14:33 And I think this is cool.

14:35 And then one of the neat things, I love it when people do this, is why not?

14:39 If you're used to popping things on PyPI, he went ahead and called this better dident and his example and threw it up on PyPI.

14:50 So if you want to play with what he came up with, you can just install it, run it.

14:53 Okay.

14:54 Yeah, very fun.

14:55 i feel like he should create a not not just a bunch of separate little things that are for

15:01 his examples but like a mega like a morsels with a complex cli that like lets you dive into the

15:07 different examples i mean he he would have but the grant got canceled so oh i see well it's only the

15:12 security features that wouldn't make it oh yeah right never mind no that's actually a

15:18 decent idea like because he's got a lot of uh he's got a lot of stuff cool stuff on the python

15:22 the morsel site so yeah for sure okay let's talk about something called ron

15:30 cron board speaking of putting up a like a 2i or a CLI sort of thing so Brian

15:37 how many cron jobs have you done at this time they have weird syntax I don't know

15:42 if you're familiar with it but they have really weird little syntax that you can

15:46 put in I don't know if there's a good example on this thing but like star star

15:51 seven star like it's kind of hard to figure out like all the pieces understand what they mean see

15:57 what ones are on your machine and so on so this thing called cron board is a terminal app written

16:02 with textual and rich that is basically a shell friendly or ssh friendly tool for understanding

16:11 and using like look at telling me like what particular things are on here as a cron job

16:17 what are their settings you can see like it's 10 that 1-10 star star star three star and actually

16:23 the little thing validates the expression how often that actually means that runs and so on

16:29 isn't this cool yeah it is cool yeah yeah i always have to use some sort of tool to figure this out

16:34 because i know i'm like no i'm gonna get it wrong look it's so messy it's so weird i admire the

16:39 old graybeards that used to be able to just do this in their head or on paper but yeah not me

16:44 That's right.

16:45 Like this could definitely qualify for it's some form of Elvish joke.

16:49 Yeah.

16:50 Right.

16:50 I mean, we put it on regular expressions, but it could be on cron job expressions as well.

16:54 Yeah.

16:54 Anyway, that's all there is to it.

16:56 There's not a whole lot to say about it.

16:58 It's written in Python, which is fun.

17:00 So do you have, do you have, I'm thinking about why you chose this, maybe just for the fun of it,

17:05 but do you, do you have cron jobs in what you're doing on Talk Python?

17:10 Not exactly.

17:11 I sort of do, but a lot of it is like background.

17:14 I think it's more like a background task that checks every hour.

17:18 And so I've kind of kept it to that because I don't know.

17:21 I like, I'm sure people get this vibe about me, but like I like stuff more cohesive and stuck together

17:26 and just like focused and not all spread out all over the place.

17:29 Like, okay, so this script runs on that cron job and then this part checks the database and this thing over here.

17:33 You know what I mean?

17:34 Like, so if I can cram it together and go, the part that needs that can also just run like a background thread

17:39 and every now and then just go, does that need checked or rebuilt or reindexed or whatever.

17:43 But I could certainly see places where if I was more comfortable with cron jobs,

17:46 I would do a better job with them and things would probably be simpler.

17:49 So there's that.

17:50 Yeah, cron board.

17:51 Check it out.

17:51 Looks fun.

17:52 Cool.

17:53 We're on to extras.

17:54 You're the only extra.

17:56 I ain't got nothing.

17:57 Okay.

17:57 Well, there's some exciting news.

18:00 I just heard this morning.

18:02 Oh, because it just happened this morning.

18:04 Barry Warsaw announced an 810 explicit lazy imports.

18:10 We've been talking about this for a while, and it was not approved yet.

18:14 It was just a draft, but it is approved now.

18:17 So steering council happily and unanimously accepted 810 explicit lazy imports.

18:25 They have some input for the authors, but basically a really nice commentary about...

18:31 revise and resubmit and sort of acceptance from the academic side.

18:36 Like we'll take it, but not as it is.

18:38 Yeah, it's okay.

18:39 Well, I mean, but that's kind of one of the cool things about the steering council,

18:43 because you can do things like when you submit something, you can like as this is done.

18:48 Actually, this was a really, really well-written, I thought, well-written PEP.

18:52 But you can say things like there's a few points, like what keyword do you use?

18:56 The PEP authors liked lazy, but there was a couple of other options.

19:01 And the steering council went through and tried to figure out

19:03 if they could come up with a better name.

19:05 I mean, if there's options, why not give it to the steering council

19:07 and say, you guys can decide if you want.

19:10 But yeah, so pretty cool.

19:12 I wonder what that means for anybody that has a global variable

19:16 named lazy in terms of compatibility.

19:18 I mean, it would be fine as long as they don't use it in the import statement.

19:22 I think it probably would not do anything at all.

19:26 I know the early Python parser had a hard time with disambiguating that kind of stuff.

19:30 but I think maybe the peg parser is more advanced.

19:33 Well, no, the peg parser is more advanced.

19:35 Maybe it can handle it.

19:36 Like in C#, they have certain words that they themselves are not keywords,

19:43 but taken as a pair, they are keywords, like lazy space import.

19:47 So in C#, you have yield return is a keyword thing, but you can have a variable named yield as well,

19:53 and they will be understood as different by the parser.

19:56 And I think that that was not true in early Python, but I could be wrong about that.

20:00 Well, luckily we have listeners like, and people, Hugo is listening, which is great.

20:06 And in the, in the chat says lazy will be a soft keyword.

20:10 So you could reuse it later.

20:12 Okay, good.

20:12 And also I forgot to give Hugo a shout out as his post on, on social media that announced

20:19 that I, the reason why I saw the announcement was from Hugo.

20:22 So thanks Hugo.

20:23 Yeah.

20:24 Awesome.

20:24 And thanks for all the stuff, Hugo.

20:25 You give us a lot of good pointers either directly or just by writing.

20:28 Okay, cool.

20:29 Yeah.

20:29 So I think I'm excited about it.

20:31 The other thing, which this is me not reading the PEP end to end,

20:35 but I'm curious.

20:36 I'm going to be curious to see how it unfolds with typing.

20:39 Because I know that you highlighted, you can say, if type checking, then you can do regular imports versus lazy imports.

20:44 But if the next line I write is, my function takes an object of one of the things that was lazily imported,

20:50 does that execute its import effectively?

20:53 I don't know.

20:53 We're going to find out.

20:54 We'll find out.

20:55 I'm guessing the steering council probably thought about that.

20:59 I do. I would say so because that was a real big problem when they were trying to change the way imports worked a little bit earlier or things like Pydantic, you know, bringing that back around. Right. They're like, oh, this is going to be really bad. We won't know what things are anymore. Help. Yeah. Okay. So that's the really big news for everybody. And then I have really big news that mostly applies to me.

21:20 The big news is that I've started writing again.

21:25 And I've actually decided I am a big proponent of lean, like lean philosophy and everything.

21:34 And part of lean is actually just getting the whole pipeline,

21:38 the entire chain, top to bottom, in place early.

21:41 And so I've decided to do that with the book.

21:43 So the entire purchase process, at least for this, is already in place.

21:48 I've got a lean TDD site up.

21:50 There's actually a table of contents figured out already.

21:53 I've got, I know what I'm going to write.

21:55 There's not much there yet.

21:56 There's like 10 pages written of introduction.

21:59 But if you want to get updates every time I go through it,

22:04 you can go ahead and grab a copy if you want.

22:06 And I'll send you the, well, the system will send you updates every time I have something new.

22:11 I'm also, it took me what, a year?

22:15 The process from I want to write a book to it's out for the Python testing with pytest for both editions was a year and a half.

22:22 I don't want to take that long.

22:23 I'd like to get this one through the first draft and a pretty good state of the first draft.

22:29 It'd be more like a beta thing by the end of the year.

22:32 That's my goal.

22:33 Awesome.

22:34 Congratulations.

22:35 That's awesome.

22:35 Thanks.

22:36 Also, with all of this extra junk around, like getting a landing page and all that stuff, it wasn't tons of work.

22:44 But it takes away from writing.

22:45 So I'm glad that I can get back to writing and get this thing kicked out.

22:49 Yeah, people don't necessarily-- even when it's your project,

22:52 you don't think about how much those little extra things

22:54 are going to take.

22:55 It's like, oh, I can just put this app up.

22:56 And oh, people have to reset their password.

22:58 That means I got to support email.

23:00 Oh, OK.

23:01 Well, how am I going to do email?

23:02 I don't want to send email.

23:03 But here I am writing an email service, because apparently people have to log in or something.

23:07 Yeah, and I'm also-- I'm reviewing it.

23:09 One of the things I didn't--

23:11 I'm not thrilled with how the pie test book shows up on Kindles.

23:15 So I'm checking out the book from a Kindle.

23:18 That's where I'm doing my proofreading to make sure that that's like an e-book first way to produce the book.

23:26 So, yeah, awesome.

23:27 I love it.

23:27 All right.

23:28 Cool.

23:29 How about something funny?

23:30 Yeah, let's round it out with a joke, huh?

23:32 Yeah.

23:32 OK, so we used to talk a lot about Stack Overflow and Stack Overflow had this reputation.

23:39 still does just we talk about it less that stack overflow people were kind of mean you'd ask a

23:44 question well the people in stack overflow i think the actual stack overflow people were fine yeah i

23:50 mean the part i mean the community members a lot of the people were they would be quick to judge

23:54 quick to say that question's already been asked and answered it was asked three years ago you know

23:59 not not amazing right yeah um and it can be really daunting especially newcomers and so the feel

24:06 for Stack Overflow might be, you're absolutely wrong, might be a subtitle. Right? But these days,

24:13 no, we can feel all good about it. You're absolutely right, says ChatGPT. See, it's good

24:17 to be a programmer now because instead of you're absolutely wrong, you're absolutely right. They

24:21 both could be wrong, but they're sure that you're wrong or you're right, depending on who you ask.

24:26 Yeah. My daughter even ran into that. She was stuck on some chemistry homework and she asked

24:35 asked chat to ask something.

24:37 I don't know if I think it was ChatGPT.

24:39 And she got like an answer back.

24:42 She's like, that just doesn't look right.

24:44 And it said, oh, you're right.

24:46 It's wrong.

24:46 And then it came up with a different answer.

24:48 And she's like, this is ridiculous.

24:50 How do I trust it then?

24:51 Yeah, exactly.

24:53 I do think that's why it works better for programmers

24:55 than for many other groups, because you can run the code

24:59 and at least see if it runs or doesn't run.

25:01 And that's a form of a check.

25:03 or if you're doing some compiling, you see if it compiles or parses or whatever.

25:06 Whereas if it does like a chemistry theory, you're like,

25:09 well, I guess I could do a year's worth of research and see if this is right or

25:13 wrong, but I don't know.

25:15 You know, I mean, go to the lab and start doing experiments.

25:18 Like it's just, it's just the feedback loop is real quick for us.

25:21 So, but it's still, you're absolutely right.

25:22 Like, no, I'm actually wrong.

25:24 Just what are you doing?

25:25 Anyway, we live in weird times.

25:27 It was a fun joke about it.

25:28 Yeah.

25:28 Oh, I'm going to throw, I'm going to grab the screen again.

25:32 Oh, I already took it down.

25:33 Never mind.

25:34 I'll do an extra next week, another extra.

25:37 All right.

25:37 Well, with that, we're going to have something to look forward to, right?

25:40 Yeah.

25:41 Yeah.

25:42 So cool.

25:43 All right.

25:43 Catch you later.

25:44 Bye, Brian.

25:44 Thanks, everyone.


Want to go deeper? Check our projects