Transcript #166: Misunderstanding software clocks and time
Return to episode page view on github00:00 Hello and welcome to Python Bytes, where we deliver Python news and headlines directly to your earbuds.
00:04 This is episode 166, recorded January 22nd, 2020.
00:10 I'm Brian Okken.
00:11 And I'm Michael Kennedy.
00:12 And this episode is brought to you by DigitalOcean.
00:14 We'll talk about them more later.
00:16 But do you want to get into quantum stuff or what do you got for us first?
00:20 Yeah, how about that?
00:21 Like, there were many crazy ideas in programming, right?
00:25 Like infrastructure as code or, you know, infrastructure as a service and all the cloud computing things.
00:31 And, you know, there's this really cool quote from William Gibson, the science fiction writer, is that the future is here.
00:38 It's just not evenly distributed, which is pretty cool.
00:41 And I think this thing I'm about to talk about is a little bit about making that way more even.
00:47 So, Amazon, AWS, you know, the bookstore is announcing a quantum computing as a service.
00:55 Okay, we were expecting this to happen.
00:57 Yeah, we were.
00:58 Well, the thing is the quantum computers are so early stage.
01:03 They're so specialized.
01:04 They look more like science projects than they do any sort of computer.
01:09 They're not in square boxes.
01:10 They're usually, like, dangling from the ceiling with, like, all sorts of wires shooting out of them.
01:14 Like, you know, you can't go get a quantum computer.
01:17 But there are quantum computers that can do limited amounts of computing.
01:22 And so, learning to program them is something that might be a good idea, right?
01:28 Like, I have no idea what programming a quantum computer is going to feel like because it's just the conceptions.
01:34 I just haven't formed it fully in my mind.
01:37 Do you have a good sense of what this is going to be like?
01:39 No.
01:39 Well.
01:39 I think we're at the punch card stage still.
01:41 Yeah, yeah, exactly.
01:43 So, this new service called Amazon Bracket from AWS is a fully managed service that allows scientists, researchers, and developers,
01:51 and people just interested in quantum computing to begin experimenting with computers from multiple quantum hardware providers in a single place.
01:59 So, there's a handful of people creating these quantum computers, and they have different capabilities and whatnot.
02:06 So, you can actually select more than one provider for your quantum computer.
02:12 So, we all know about bits, right?
02:15 Bits are 0 and 1, on and off, that sort of thing.
02:17 That's the conception in my mind that it's pretty easy for things to work.
02:21 But quantum computers use a more sophisticated representation known as a qubit or a quantum bit.
02:27 And each qubit exists in a state of 1 or 0.
02:31 But because of its quantum nature, it also, in superpositions of 1 or 0, which means it can simultaneously occupy both states.
02:40 So, it's basically a two-dimensional vector of complex numbers of all these different states, which means it has way more data representation and computing power than just 0 or 1.
02:51 You know, it has, like, near infinite.
02:53 So, this service is built to give people some, basically, hands-on experience programming.
03:00 So, I linked to the Verge article talking about this.
03:02 I also linked to the direct announcement.
03:05 Now, Brian, do you see that code section down there, that little example?
03:09 Yes.
03:10 I have no idea what it's going to print.
03:12 I have no idea what it's going to print either.
03:13 But if not caring what the computational output is, what does that remind you of?
03:19 Python.
03:20 It definitely looks like Python.
03:21 And in the announcement, you can say, in here, you can use a notebook to explore writing in this bracket service, bracket language.
03:29 And, yeah, so I don't know if this is literally Python or is just very, very much like Python.
03:34 But if you're a Python developer, you know, you can get into this pretty easy, easily, I would suspect.
03:39 Yeah, it definitely looks like it's a notebook or something.
03:42 Yeah, so if you want to know how quantum computers work, if you want to play with programming them, you know, check this Amazon bracket thing out.
03:50 I've not checked the pricing.
03:52 It seems like it might not be that cheap.
03:54 But, yeah, it still looks pretty interesting.
03:56 Well, I think they're really trying to make it available to people that, in a researcher-student situation, so it's probably not terrible.
04:03 But I don't know.
04:04 Yeah, yeah.
04:05 Who knows?
04:06 But it's definitely interesting.
04:07 And people who are interested can now go and just fire up a quantum computer in the cloud and, through a Jupyter notebook, play with it, which is pretty awesome.
04:15 Yeah.
04:16 So let's go from quantum to virtual.
04:19 Yes, let's do it.
04:22 Do it.
04:22 Take a step.
04:23 Okay.
04:23 I couldn't resist.
04:24 But, you know, not really that cool.
04:27 But anyway, virtual environments.
04:29 Right.
04:29 With Python.
04:30 I know that both of us use virtual environments.
04:32 All the time.
04:33 I still have coworkers that don't.
04:35 And I know that some people still, I don't know.
04:38 There's a lot of old guides and tutorials on how to use virtual environments.
04:42 And I really didn't know I needed this.
04:44 But Brett Cannon wrote a quick and dirty guide on how to install packages for Python.
04:49 And it is mostly just basically walking people on how to use virtual environments.
04:54 I, of course, already know how to do that.
04:56 But I think it's good to have something like this available to throw to people that aren't using them yet because it's pretty short and simple.
05:03 One of the things I love about the article is it uses the --prompt flag for creating a virtual environment, which will make it so that your prompt variable or your prompt isn't just V and V.
05:14 It's something useful for you to see it.
05:17 Yeah, that is super cool.
05:18 I love that recommendation about the --prompt.
05:22 And in the article, Brett shows you how to have it take the current working directory as a default, right?
05:30 So it'll automatically grab that for you, which is cool.
05:33 I've got a little bash snippet that I use that essentially does that in my environment.
05:38 He hints at that in Python 3.9, there's going to be an improvement that instead of having some code that looks up your current directory name,
05:49 that you can just pass in a dot for the prompt and it will just name it that, which I'm looking forward to that.
05:56 That's cool.
05:57 Yeah, that's really cool.
05:58 Maybe I just want to start running 3.9 beta just for that.
06:01 Maybe.
06:03 Have you started playing with 3.9 yet?
06:05 No, I haven't.
06:06 Oh, okay.
06:06 I'm still actually, I'm still trying to decide what version I want to use because traditionally use Homebrew and something went wrong with Homebrew for Python 3.8.
06:15 So if you try to install Python 3.7 from Homebrew, you still get 3.7, which is frustrating, but I haven't decided that I'm wanting to break away from that just yet.
06:27 But it's starting to get to the point where maybe I'll just go to 3.9.
06:30 I don't know.
06:31 I just still use the installers from the Python.org site.
06:35 Yeah, I'm going to be back there too.
06:36 But yeah, this is cool and it's nice to have this.
06:39 This is real clear and concise.
06:40 And yeah, thanks, Brett.
06:43 So do you know what else is cool?
06:45 DigitalOcean is pretty cool.
06:46 DigitalOcean is awesome.
06:47 Yeah.
06:47 So DigitalOcean is sponsoring this episode.
06:50 They have awesome infrastructure and an awesome product and we use them for our services.
06:55 Do you have a memory intensive workload?
06:58 Something like high performance SQL or NoSQL databases?
07:01 In-memory caches like Redis or Indexes?
07:05 Some kind of large data analysis runtime?
07:08 Well, if so, you need DigitalOcean's new memory optimized droplets, or at least you should check
07:13 them out.
07:13 So check them out by going to pythonbytes.fm/DigitalOcean and get $100 credit.
07:19 And that's back.
07:20 We used to be lower, but now it's $100.
07:22 Yay.
07:22 Yay.
07:23 Well done, DigitalOcean.
07:24 Thanks for supporting the show.
07:25 Sometimes the best thing you can do, Brian, is just say no.
07:29 All right?
07:30 It's easy to say yes to everything, but when you say yes to something, you're actually saying
07:33 no to something else.
07:35 Yeah, I've heard that.
07:35 That's kind of like the whole pointing a finger and you three point back at you and stuff like
07:40 that.
07:40 Yeah, exactly.
07:41 So this next thing I want to talk about is something that made the rounds the last couple of weeks.
07:45 And it's pretty interesting.
07:46 It's an article that sort of lays out a case against the no code movement.
07:51 And it's entitled, Say No to the No Code Movement by Alex Hudson.
07:55 And it's funny.
07:57 I don't know.
07:57 I might be showing my age, my gray bits in my beard or whatever, my goatee.
08:03 But he starts off by talking about 2020 is going to be the year of no code movement where
08:08 you can write business logic and entire applications without having to train the training of a software
08:14 developer.
08:14 I feel like I've heard that before, last century even.
08:17 How about you?
08:18 Well, yeah.
08:19 Are we talking like round trip stuff like UML round trip things?
08:23 Yeah, I was thinking of like Vizio and some of these other sort of business intelligence,
08:28 draggy droppy things that were going to, you know, quickly replace us as software developers.
08:34 And we're just going to be out of a job.
08:35 So you probably shouldn't study that because either outsourcing or there's no code stuff
08:39 is going to like crush our jobs.
08:41 I don't know.
08:42 I feel like software has been pretty good over the last 20 years.
08:44 Yeah, that's weird.
08:47 So yeah.
08:48 So the reason I'm bothering to cover this though is I do think it's interesting that this is
08:54 something of a trend.
08:55 And I think that Alex does a pretty good job of laying out what some of the issues are.
09:01 So it's easy to get sucked into wanting this, but it's also good to maybe know where like,
09:06 hey, this might make sense to try this, this no code idea.
09:10 So examples include like Salesforce, right?
09:14 With Salesforce, you can sort of wire stuff together to make things happen.
09:17 Other examples were Zapier were doing things.
09:20 Yeah.
09:20 Maybe if this, then that.
09:21 Yeah.
09:22 If this, then that.
09:23 I feel like Zapier actually, you know, Alex gave it a pretty good vote.
09:27 And I agree as well because it's not so much about trying to write software with Zapier.
09:32 It's about trying to just do integration.
09:34 I feel like no code integration isn't terrible if something awesome like Zapier can do it.
09:40 But basically the idea is like, look, there's people want to transform business processes
09:46 into the software domain.
09:47 And they might want to do that because change control of like, how do you change your business
09:52 and understand how it works is now a software problem.
09:54 It's easier to innovate on what makes the business distinct because now it's clear.
09:59 You're like, these are the things we do.
10:01 Everyone does this, but this, this is our special sauce right here.
10:04 And there's a cool quote from Satya Nadella that says, every company is a software company
10:09 these days.
10:10 And so there's a lot of pressure to take maybe traditional companies and organizations that don't have a software team or they have a very small software team that's too busy just keeping the lights on to help everyone else with their little issues.
10:23 There's this temptation to say, okay, well, what is our no code story?
10:27 Like how do we get some systems that just like let people write code?
10:30 You know, Excel sort of played that role to a large degree.
10:34 So the article's good for like laying out some of the issues.
10:38 Starts out, well, the first assumption is that writing text, like writing business logic in text forms is something that everybody hates, right?
10:46 Outside of the software development community, right?
10:48 Like if I'm an accountant, I don't want to write text logic because, well, you have to be accurate and things like that, right?
10:57 And if you had boxes, you can drag them together.
10:59 That might be better.
11:00 So it talks about how, you know, there's, it's a simpler abstraction that's really easy to work with.
11:07 Or it's simpler syntax.
11:09 And in both of those cases, you really run into the problem of, well, you can do the simple little thing first.
11:16 Like think of a visual, like a flow chart, right?
11:19 Like if you could just run a flow chart.
11:21 Well, for a really simple problem, that's fine.
11:24 But if you try to solve a real problem, you have a flow chart with like a thousand boxes and lines going everywhere.
11:29 That's not going to help you.
11:31 Another one, another example of the issues you run into is that many of the no code advocates
11:37 are building significant systems by pulling together off the shelf apps and integrating them.
11:41 This is kind of like Zapier.
11:42 But, you know, Zapier, I think, use right is still good.
11:46 But the problem is all the logic becomes implemented as a configuration of all these external systems.
11:51 And you're limited by what they can do and what they can accept and so on.
11:55 So, yeah.
11:56 He said, look, if there was a better way to create software than writing text, most of us would just drop it like a hot rock.
12:02 And we'd be like, yeah, okay, what's next?
12:04 Let's do that.
12:04 All right.
12:05 It would be great.
12:05 It's not that we love typing so much.
12:08 Yeah.
12:08 So, I guess, in conclusion, it's like, where does the no code stuff fail in practice?
12:13 Well, you get like 80% of the way there.
12:15 And then you're like, well, all these edge cases make this so complicated.
12:19 Or you end up with all the little edge cases and details that is like this little graphical whatever is so complicated that it's worse than text.
12:26 You know, things like that.
12:28 But where it might be useful is for a little proof of concept demonstrations and things like that.
12:33 Like, hey, here's the happy path of the main thing we want to do.
12:37 I threw this together with something like Salesforce or some other BI tool or something.
12:42 And look what we got.
12:43 Right.
12:43 Then you could go rewrite that with Python and Matplotlib or, you know, whatever it is you're trying to solve.
12:49 So, I thought this was an interesting take on the whole no code movement.
12:53 And I also thought it was interesting that, like, this is going to be the year of no code when I remember hearing that in the 90s.
13:00 Yeah.
13:00 Actually, my first job at HP was using a visual language for measuring systems.
13:07 And it was, I think we should look at some of the failures of the 90s.
13:12 Because what happened is what's going to happen again.
13:16 Like you said, you have systems that go 80% of the way.
13:19 But the corner cases make it so that you still have to be an expert at this tool to do it.
13:25 So, you still hire programmers.
13:26 But they only are gaining experience with this one tool that they don't even really like.
13:31 And they can't transfer to any other job.
13:33 And that's terrible.
13:35 It's not good.
13:36 Plus, visual stuff is sort of really fun when you get started.
13:39 But you quickly need a wrist brace.
13:42 Working on the mouse all day long is really actually fatiguing to your hands.
13:47 That's a good point.
13:48 I hadn't even thought about that.
13:50 But, oh, yeah.
13:51 For sure.
13:51 It was a program called VEE.
13:53 And I don't think it's even in place anymore.
13:55 It was a visual thing.
13:57 And we used to joke that if you buy the box set, it comes with a wrist brace.
14:01 Yeah, that's not good.
14:03 You know, this next item that you got coming up here, I checked this out.
14:08 And this is some deep stuff here.
14:10 Tell us about it.
14:11 So this isn't really a topic that we normally kind of cover.
14:14 But it's also something that I was pleased and surprised to see come up with at North Bay Python.
14:19 I'm going to highlight Shaw.
14:21 And his full name is Shadeed Wallace-Stepter, I think.
14:25 But he says he goes by Shaw.
14:26 He spoke at North Bay Python.
14:29 And we're linking to an article that is his article but also includes a link to the video of the presentation at North Bay Python.
14:37 And it's called What I Learned Going from Prison to Python.
14:42 And it is Python related.
14:44 But the Python take comes in the end, like the last few minutes.
14:48 It is a 40-minute video.
14:50 But you can even just listen to it because there's no visuals.
14:53 I'm not going to really summarize it too much other than this is an amazing story.
14:58 And people need to listen to it.
15:01 He's talking about how he went from a generational poverty situation to a crime as a teen.
15:09 It's interesting that he talks about one of the reasons why he started doing some crimes.
15:15 It wasn't because he needed to.
15:17 It was because he had zero control over the rest of his life.
15:20 And it made him, it was something that he felt had control over.
15:24 And then that gets him to the point where his best friend, like, dies on his shoulder by being shot.
15:29 And then he ends up in prison and spends 19 years there, 19 years of a 27-year sentence.
15:37 But this fight that he had to do to just to fight against the entire system, trying to keep him in poverty or keep him in prison.
15:45 It is an incredible story for him.
15:48 But I think it also talks about how, regardless of your politics, poverty and the prison system in our country is broken and we need to fix it.
15:56 So that's why I wanted to highlight it.
15:58 Yeah.
15:58 The thing that touched me from this was, I think for the first time, maybe ever, I understood why people would go down some of these paths.
16:09 Because, you know, people make some of these decisions and they're just so clearly a bad idea.
16:14 You know what I mean?
16:15 I'm thinking of, like, drug addicts for hard, hard drugs like heroin or meth.
16:22 Or, you know, people who are burglarizing houses and robbing, play armed robbery and stuff.
16:28 And just think, man, there's got to be a better way.
16:31 But listening to his story, I really understood it.
16:34 And, you know, I didn't get all the way to the end.
16:37 So it's awesome that Python, it sounds like, helped him move beyond that.
16:42 But do you have the last bit of the story?
16:44 Or are you going to give away too much?
16:45 So, no, I don't think it'll give it away.
16:47 I think he ends in a very positive note on talking about the open source community.
16:50 He eventually gets into, he goes from studying law to studying entrepreneurship to meeting Jessica.
16:58 I'm going to get her last name wrong.
17:00 Forgot it.
17:01 Jessica McKellar.
17:01 Yeah, McKellar.
17:02 Yeah.
17:02 Sounds right.
17:03 Although he said he met her in a journalism setting, but she was, like, not very good at journalism or wasn't a journalist or something like that.
17:11 But anyway, she's a great person.
17:12 But one of the things that people face when they come out of a prison system, especially if they came in in a poverty situation, is they've got no skills and no job history or things like that.
17:24 Or they may have no skills.
17:26 And even if they do have skills, who's going to hire them?
17:29 But the open source community is just a everybody's welcome.
17:34 And coding, there's more situations in coding where I don't know either you can do the job.
17:41 And that equality of background of just, it's just about whether you can get stuff done.
17:48 It isn't just about that.
17:50 We also, you have to be able to communicate and all things like that.
17:53 But we don't really care as much about your college pedigree or anything.
17:58 It's either you're a great coder or you're not.
18:00 And that's a cool story.
18:02 And his, even equates the open, he was shocked by the open source community of just working on stuff and giving it away.
18:09 Yeah.
18:09 But apparently there was a program at San Quentin that O'Reilly gave a bunch of laptops there so that people could watch some of the O'Reilly training videos there.
18:19 And that's how he learned Python.
18:21 So that's cool.
18:22 Man, super cool.
18:23 Yeah, I loved his story and it was really different.
18:26 So I'm happy he shared it and happy you covered it.
18:30 Yeah.
18:30 Speaking of covering things, have we covered GUIs?
18:32 I don't think so.
18:33 We should probably cover GUIs.
18:34 We probably should.
18:35 But, you know, what I really like about our listeners and our audience is they really help round us out.
18:42 You know what I mean, Brian?
18:43 Yeah.
18:43 Man, like I'll bring up one thing.
18:45 I'm like, oh, I heard of this one thing.
18:47 Can you guys believe this is a thing?
18:48 And they're like, and here, you know, here's the seven others and here are the trade-offs.
18:52 Did you know about this?
18:53 Yeah, and I can't believe you haven't covered this already.
18:55 Yeah, exactly.
18:56 So I've already got a bunch of stuff on Q that has that sort of take to it.
19:02 But here's one called QUIC, a QT5-based GUI generator for CLIC.
19:09 So CLIC is an argpars-based command line interface tool or framework, I guess, where you can put decorators onto different functions and say,
19:20 these are some of the arguments, these are required, these are not required, these are the types, and so on.
19:25 And it lets you write command line interfaces.
19:27 And so QUIC will take those and naturally understand the message given to CLIC or argparse and then create a GUI out of it.
19:39 No way!
19:40 Yeah, that's pretty cool, right?
19:41 So you don't hardly have to do anything other than throw like a QUIC.run and give it a function or something to that effect, and off it goes.
19:49 Oh, that is cool.
19:50 Yeah, I'm totally going to try this out.
19:52 Yeah, it's not super popular.
19:54 It's got, you know, like 62 stars and four contributors.
19:58 It was changed this month, so that's cool.
20:00 But just the example.
20:02 So it's a little bit old, but I think it's an interesting take and an interesting idea.
20:06 And if it's going to work for people, they can definitely check it out and contribute to it, so on.
20:11 So, yeah, I think this is a nice one.
20:13 It's based or inspired, not based on, inspired by GUI, G-O-O-E-Y, which is also really, really nice.
20:20 But you have to be a little bit more explicit on how it presents the UI for GUI.
20:26 You've got to say, here's a, I want a calendar widget for this thing or whatever.
20:30 But yeah, anyway, it'll even let you still run your standard click-based CLI app the same.
20:36 But then if you throw in a --GUI, it'll turn it into a GUI, even if you just want to change the command line arguments, which is, yeah, it looks pretty nice.
20:43 Yeah, a GUI, it's an interesting function call.
20:47 Yeah, exactly.
20:48 Yeah, so thank you, Ricky Tici, for sending this along and recommending it.
20:53 It's a good one.
20:53 Yeah, thanks.
20:54 Okay, we're not to jokes yet, but I have kind of a funny one coming up.
20:58 So it's interesting.
21:00 So there's a couple articles, I think it's in a series, falsehoods programmers believe about time.
21:07 And wait, what is the title of the blog?
21:11 Infinite Undo.
21:13 Oh, really?
21:15 Yeah, yeah.
21:16 It's all like, it all fits together.
21:17 I love it.
21:18 Sorry, keep going.
21:18 Then there's a second follow on one.
21:20 Must be a VI person.
21:21 More falsehood programmers believe about time.
21:23 Wisdom from the crowd edition.
21:25 So I'm sorry, I can't find your name on the blog, but wrote this article about falsehoods.
21:31 The interesting thing is very few of them have links to tell you why they're false.
21:35 But these are all assumptions that are wrong.
21:38 I mean, it starts with, there's always 24 hours in a day.
21:42 And, you know, there are things that we just sort of know are kind of wrong sometimes.
21:46 Like when we change the time, it's different.
21:48 Months have either 30 or 31.
21:50 A week begins and ends on the same month.
21:54 And I think these are, he's coming from the standpoint that he's debugged and tested code
21:59 that had these weird assumptions in them that broke.
22:01 And then it gets into some stuff that I, I'm going to highlight just a handful, but there's
22:05 a whole bunch.
22:05 A system clock will always be set to the correct local time.
22:09 And if that's not true, well, it'll be set to a time that's not wildly different from the
22:13 correct local time.
22:14 And if that's not true, well, at least it will be, always have a consistent offset in the number
22:19 of seconds.
22:19 And yeah, no, that's not true either.
22:22 I've been bit by this where we had systems under test be not even on the same day.
22:27 It has the following other one.
22:29 Let's see.
22:30 The day before Saturday is always Friday.
22:32 I had to look this one up because I'm like, isn't it?
22:36 Isn't Friday always before Saturday?
22:38 All right.
22:38 What's the deal there?
22:40 Samoa decided to change which part of their, the international time zone they were on so
22:46 that they were the same day as Australia.
22:49 And that gap swapped it like it swapped on Saturday, but it happened in the middle of the week or
22:54 something like that?
22:54 Yeah.
22:55 It happened like Thursday night and then the next second it was Saturday morning.
23:01 So they skipped Friday once.
23:03 That's some serious daylight savings action going on there.
23:05 Okay.
23:05 And then the number 81, the last one on the second one is, I think it's just thrown in as a joke.
23:10 I hope the software will never run on a spaceship that is orbiting a black hole.
23:14 Do we have spaceships that orbit black holes?
23:18 Not yet.
23:19 Yeah.
23:19 Not yet.
23:20 But you're going to have legacy code.
23:21 You're going to have the black hole bug that you got to go back and fix.
23:24 Yeah.
23:25 And then one I didn't highlight was that there's not an end to time.
23:28 Didn't put a link in for this, but did you know that like the end, if you have a 32-bit
23:33 time counter, it's probably going to break in 2038 or something like that?
23:37 Oh, wow.
23:38 Think of all the consulting opportunities.
23:40 I know.
23:40 It's like Y2K all over again.
23:42 Exactly.
23:42 Exactly.
23:44 Yeah.
23:44 That's interesting.
23:45 I mean, real time, obviously, we think doesn't stop and probably won't stop for us.
23:50 But yeah, computer time.
23:51 Computer time is a whole different deal.
23:53 Yeah.
23:53 Yeah.
23:54 This is really interesting.
23:55 And yeah, like you highlighted a few of the 81 and then that doesn't even touch on the
24:00 more falsehoods.
24:00 Pretty cool.
24:01 Yeah.
24:01 Yeah.
24:02 I get a little nervous every time I get anywhere near a time zone.
24:05 So with code.
24:07 Yeah.
24:08 I always use a time zone package or a time package to deal with that for me because I know I'm
24:13 going to get it wrong.
24:14 Yeah.
24:14 Absolutely.
24:14 So I must have forgotten because I feel like last time we, a couple of weeks
24:20 ago, we did cover Remy, which is a GUI framework.
24:22 Yeah.
24:23 Right.
24:24 And so Remy.
24:25 Yeah.
24:25 I remember that.
24:25 You brought that up.
24:26 Remy's cool.
24:27 And it lets you write Python code that then gets turned into something that has an HTML
24:34 representation.
24:35 But then you can hook events from HTML back into your Python code.
24:39 Right.
24:39 It's kind of like Electron JS, but swap out the JS for Python.
24:43 Right.
24:43 Yeah.
24:43 Well, we got a message from the creator, David.
24:47 And he said, hey, thanks so much for covering that.
24:49 You threw out that like, hey, it would be awesome if this wasn't had an editor or something
24:54 like that.
24:55 So yeah.
24:56 If you just look at slash editor in the repo.
24:59 Yeah.
24:59 There's a drag and drop WYSIWYG editor for this UI.
25:03 That's so cool.
25:04 I haven't tried it yet, but it's neat.
25:05 Yeah.
25:05 It looks really cool.
25:06 It's like pretty, pretty much like what you would expect.
25:10 You've got all the widgets you can drag and drop in there and size them and set their
25:14 colors and set all their CSS properties.
25:17 And then also wire up button clicks to existing functions or JavaScript events to existing
25:23 functions, things like that.
25:24 You can totally waste an entire afternoon and look like you're working.
25:27 Yeah, exactly.
25:27 Yeah.
25:28 Here's some of the no code stuff that is good.
25:30 So it's got a little, a little walkthrough example of creating, you know, like a hello
25:35 world button clicker type of GUI app.
25:37 But yeah, it's actually looks pretty killer.
25:40 I don't want to diss people that like actually work in the world of creating really good user
25:45 interfaces that, you know, and that's needed and I applaud them.
25:49 But there's a lot of us nerds that just need some kind of GUI that just sort of works and
25:54 that's good enough.
25:55 Yeah.
25:55 All right, Brian, I've queued up a joke, a visual joke that we'll have to describe through here.
26:03 And because this is about testing, I'm going to let you take it.
26:07 It's really simple, but it's quite funny.
26:09 I actually peeked at this before we're going to link to a Twitter post that somebody did of
26:14 this little video says two unit tests, zero integration tests.
26:18 And I guess I got to say, I'm a huge fan of these like unit test pass integration test
26:24 fail things.
26:25 So send them my way if you find them.
26:27 This one's hilarious.
26:28 Yeah.
26:29 So let me describe a little bit.
26:30 I'll set the stage.
26:31 There's a one of these like super powerful hand dryers and there's a trash can and it's
26:36 not like a trash bin that you move around.
26:38 It's like a fix to the wall, right?
26:40 Yeah.
26:41 Okay, go ahead.
26:41 And then right next to it's a place where you can grab, you know, napkins or your paper
26:47 towels also to dry your hands.
26:48 But they put like a one of those, the hand dryers that blows down and it turns on with motion.
26:55 And as soon as you throw away a paper towel, the dryer blows all the paper towels out of
27:00 the garbage.
27:01 It's super strong.
27:03 Not just the one you tried to put in the garbage, but every paper towel that was previously in
27:06 the garbage is now blasted around.
27:09 Yeah.
27:10 Yeah.
27:10 Two unit tests, zero integration tests.
27:13 Yeah.
27:13 The creative people that like got the garbage liner to stay in there in the first place.
27:17 So anyway, it's hilarious.
27:19 Yeah.
27:20 I got a little rub, a little syrup or something sticky on there to keep that big in place.
27:23 Yeah.
27:24 That's pretty funny.
27:25 This reminds me of a, I was at a company where we switched from actual plants around the office
27:31 to plastic plants, but nobody canceled the watering service.
27:35 And so the watering service just kept going around and watering all the plastic plants
27:39 once a month or once a week or whenever they did that.
27:43 So anyway.
27:44 Yeah.
27:45 That probably didn't turn out well after they filled up.
27:47 I don't know.
27:50 That's awesome.
27:50 It's just weird.
27:51 All right.
27:51 Well, thanks.
27:52 Thanks, Michael.
27:53 You bet.
27:53 Thanks for being here.
27:54 It's always, it's fun.
27:55 Bye everyone.
27:56 Bye.
27:56 Thank you for listening to Python Bytes.
27:58 Follow the show on Twitter at Python Bytes.
28:00 That's Python Bytes as in B-Y-T-E-S.
28:04 And get the full show notes at pythonbytes.fm.
28:06 If you have a news item you want featured, just visit pythonbytes.fm and send it our way.
28:11 We're always on the lookout for sharing something cool.
28:13 This is Brian Okken.
28:15 And on behalf of myself and Michael Kennedy, thank you for listening and sharing this podcast
28:19 with your friends and colleagues.