Not Quite Finishing Apps

January 14, 2025  ·  22 min 15 sec

album-art
00:00

Can you actually build an app with AI right now? Fresh off a holiday break where he attempted to do just that (rather than talking to his family), Paul tells Rich what worked and what didn’t work in his experimentation: Where AI failed, where Paul got impatient, and how that mapped onto human programmers’ strengths and weaknesses. Building an entire app with AI might not be quite there yet—but is it close? 

Show Notes

  • Tragic news from the world of unlimited soup, salad, and breadsticks: Reports of Olive Garden’s Tuscan “Culinary Institute” have been greatly exaggerated.
  • That’s https://fors.fm/ and Tela.

Transcript

Paul Ford: Richard.

Rich Ziade: Hey, Paul.

Paul: 2025.

Rich: Happy New Year.

Paul: Gonna be a good year.

Rich: It’s gonna be a great year. I’m an optimist.

Paul: You wake up every morning, you pick up your newspaper, you say, “Good news!”

Rich: I don’t like failure. I don’t like…

Paul: Oh, I love failure.

Rich: …being pessimistic.

Paul: Everybody loves a good failure. [laughter] This is, like, big failure fans!

Rich: This is Reqless.

Paul: Reqless, the podcast about what AI is doing to everything, including the world of enterprise software. Let’s play the theme song, then let’s talk about it.

Rich: Let’s go.

[intro music]

Paul: So, you know, we often get kind of meta on this podcast.

Rich: Boy, do we.

Paul: Yeah, we like to talk about industries. Makes us feel like we know what’s up. We make predictions.

Rich: I think we know what’s up.

Paul: Maybe. We’ll see. We’ll find out. It’s gonna be a long year.

Rich: Okay, okay, okay.

Paul: How was your holiday?

Rich: It was nice.

Paul: Okay.

Rich: Food, family… A little relaxation, but it was actually kind of hectic, but in a good way.

Paul: We should tell people that we recorded the last podcast before the holiday. I don’t know if that was totally clear. Now we’re actually back and now we can come back and—

Rich: Back in the swing of things.

Paul: We can start telling you the truth about when we’re recording things. [laughter] Mine was, too. And you know what I started to do? I get very, I need to actually do and use things if I’m going to talk about them.

Rich: Okay.

Paul: I can’t just read about them. I have to feel them, or I don’t trust myself.

Rich: Sure.

Paul: So I decided I would build an app using AI coding.

Rich: In the holiday spirit.

Paul: In the holiday—well, you know, the kids are, they don’t, they only want a certain amount.

Rich: They don’t want to hang.

Paul: No!

Rich: Yeah.

Paul: They want that stocking. They want, you know, they want to get back to their rooms, do a little reading.

Rich: So a little tiny app? What kind of app?

Paul: Well, that’s the thing. We know it’s good at little tiny apps. If you go to Claude right now and you say, “Make me a webpage where there’s a visualization of the bell curve,” it’ll just go ahead and do that for you.

Rich: Sure.

Paul: And you can move your mouse around, you can tell it to do things, and it does a pretty nice job. So, like, we know that like one-page apps, it’s got down.

Rich: Little mini apps.

Paul: Yeah. And then we also know that it’s pretty good if you go into, like, a big code base and you say, like, “Hey, this JavaScript has a weird bug. Can you take a look at it?” Or, “Can you turn this Cobol code into Java code, and then write a test for it.”

Rich: Right.

Paul: Break it up in the little units. You improve it gradually, kind of legacy style. We know it’s pretty good at that.

Rich: Yeah.

Paul: But there’s a space in the middle where you kind of build something top to bottom. And I was curious to see if I could pull that off.

Rich: Something a little more ambitious.

Paul: Yeah. I tried a bunch of different stuff and I actually ended up building—you end up sort of doing it a lot. I’ll come up with one of the sample projects I was working on. It’s an allowance tracker for my son, and my daughter.

Rich: Okay. Okay.

Paul: And I didn’t even get to the part where you log in and so on and so forth. But let’s use that as an example.

Rich: Okay.

Paul: So what I’m trying to do is figure out the way to talk about a mid-sized software project with this tool. Partially because I just want to understand it, and partially because we are a software tool for mid-sized businesses.

Rich: Mid to large.

Paul: Yeah. And we want to make them happy and we want to use AI tools to accelerate their world.

Rich: Okay, but couldn’t you have just typed in, just to get this out of the way, “I need an app to track allowances for my two kids.” And wouldn’t you have just gotten the app?

Paul: No, it’s not there yet.

Rich: Okay.

Paul: Honestly, what’s wild is it will do something. Sometimes it’ll throw stuff on screen and blah blah blah.

Rich: It rarely says, “Sorry, I can’t help you.” It’ll just—always gives it a whirl.

Paul: That’s not its M.O.

Rich: Yeah.

Paul: Its M.O is, like, “I took the thing that you asked for, I turned it into a bunch of numbers, compared it to my many layers of vectors and I spit a whole bunch of stuff out, including code and language and blah blah blah.” Okay?

Rich: Okay.

Paul: And so if you give it a general case like that, it actually…AI is funny. It can only really think in a couple pages at a time.

Rich: Yeah.

Paul: So you just gave it, like, a 70-page problem and it’s, like, “Absolutely.” And it sort of slides a business card across the table and you’re like, “Whoa, I was expecting a little bit more.”

Rich: Right. Okay. So you went for it. You sort of decided, okay, this is not a prompt. I’m going to have to work with this thing.

Paul: Well, I tried what you said, which is like, “Build me an allowance app.” And it did that. It just kind of, like, didn’t—it just kind of limped into the light and it was like, all right, well that’s not going to do it.

Rich: Okay.

Paul: And then, you know, so then you take the next step, which is like, “All right, let’s make a plan.” Because it’s really good at writing little plans.

Rich: Sure.

Paul: It’s good at talking. So, like, you know, just, “Okay, write me a plan. Bullet point. Tell me how you would build this.”

Rich: Okay.

Paul: And then once it told me how to build it, I was like, all right, let’s. Let’s take it step by step and let’s build it.

Rich: So you took the plan that it produced and you said, “Follow this plan. Let’s go through it. We’re gonna work on this together.”

Paul: And so you can actually get relatively far by saying two things. If you use, like, one of these, you know, assisted coding tools. You can say, “Do the next step,” and then you can say, “Fix that.”

Rich: Right.

Paul: You can get pretty far. But the problem is it doesn’t know, at all, if it’s making a good choice or not. And it’s very forgetful. It’s, it’s like a, like a drunken, like, programmer. Like, it’s just sort of…

Rich: Yeah, yeah, yeah.

Paul: You know, it’s like, “Oh, hey, are we debugging? Oh, my God, let’s keep debugging, guys.”

Rich: Let me, let me scrub to the end of the movie.

Paul: That’s probably the best for everybody.

Rich: Did you get the app?

Paul: I kept— [laughing] It’s, it’s really weird. I kept getting really close. And I can’t tell if this was my psychology or not, but I would get, like, a lot on the screen. I’d get most of the stuff I wanted working, and then I would kind of hit a wall and I would call it, like, the 80% wall.

Rich: 80%. That’s not that close. That’s still a lot of problems in software.

Paul: Well, I built a lot of software. Most people, it would look like the 95% wall, but I know it’s the 80% wall.

Rich: I see. So it’s worth pointing out that you are very technical. Whatever code it was outputting you, you understood it.

Paul: Yes.

Rich: And so, as, for people listening to this who are not technical, who are not programmers, who don’t understand sort of the gymnastics of the syntax around programming, they would have hit a wall much sooner.

Paul: Well, you know what’s funny is because of the chat interaction, I found myself getting really kind of demoralized, because it just spews code, and then it’d be like, “Sorry, it broke,” and I’d paste it back in and be like, “Go ahead and fix that.” And it’d be like, “Eh, kind of fixed.” I lost track of what was happening.

Rich: Did you bail?

Paul: I just got dispirited. I got much happier when I booted the whole thing over again and I started to pay attention to what I was doing.

Rich: A lot of people in this space who are studying these tools tell you to start over as much as you can.

Paul: Yeah, that’s—

Rich: It’s a general piece of advice.

Paul: It’s a good M.O. because you really. What happens is you get into these corners and it doesn’t, it, because it is an unfeeling statistical database—

Rich: Yeah.

Paul: You think, your mind is trained to be like, “Oh, we got to give it one more chance here. Let’s keep digging.”

Rich: Yeah. No, but it actually, it gets quite stubborn.

Paul: It has no idea that it’s failing or not. It doesn’t think.

Rich: Yeah.

Paul: It’s just like, “Oh, I see that we’re doing this, so let’s do more of that. That seems to be what the, what the numbers are calling for.” And that is actually pretty dangerous because you just kind of—you start to lose context. You lose control.

Rich: Yeah.

Paul: And so what I started to realize is like, first of all, there was an empowering moment in all of it where I was like, wait a minute, I’m very good at debugging.

Rich: Mmm hmm.

Paul: And so I went in there and I started fixing the bugs as, instead of asking it to.

Rich: Ah! Okay.

Paul: Well, it was more work. And what that reminded me to do was like, you know what? Read this code as it’s coming out, so that you understand the modular system it’s building.

Rich: Hmm. Sounds like you’re back to square one. If you were the manager of this engineer, you would not be a happy man.

Paul: Yeah, but it’s 50X faster, so the portions are—

Rich: You’re getting a lot stuff.

Paul: Yeah. It’s like, it is essentially, it’s the Olive Garden infinite breadsticks of programming, right?

Rich: Yeah.

Paul: You just can kind of—it’s not good. You shouldn’t eat more than one or two of them.

Rich: Uh huh.

Paul: But instead you eat 175, and then you have that white wine.

Rich: Yeah.

Paul: You ever see, by the way, the Olive Garden has like a whole Tuscan village that they like to talk about where they train people to cook, Olive Garden-style?

Rich: In Italy?

Paul: Yeah.

Rich: It’s in Italy.

Paul: [laughing] Aw yeah. It’s—

Rich: Wait, no, no, it’s in Italy?

Paul: [still laughing] Yes.

Rich: So they built a second Tuscany in Italy?

Paul: No, they bought, like, a beautiful Tuscan inn. Like it’s—

Rich: Oh, they took the whole thing.

Paul: Oh, and there’s a chef who’s, you know, and so then they promote it—

Rich: It’s a village? Or a building?

Paul: Yeah, sort of like a, like an inn, kind of like, it’s like it’s a, it’s a, it’s a facility for training Olive Garden people.

Rich: Are you shitting me?

Paul: I mean, you will be if you go there and you eat the Olive Garden food. It’s, it’s like, it’s a lot, it’s a lot to process. I encourage everyone to look for the Olive Garden…anyway, that, that’s a real—

Rich: Tuscan village.

Paul: That’s a little bit of a digression.

Rich: So I have one overarching thought I want to share—

Paul: Share it!

Rich: —based on everything you’re saying.

Paul: Okay.

Rich: A lot of people talk about AI’s context windows and its, like, how much it’ll remember and sort of keep in mind as it goes after the next step.

Paul: Yes, that’s right. As you’re typing to it, it kind of remembers the last X number of things you said—

Rich: A few things…

Paul: Yeah.

Rich: Or whatever.

Paul: But it fills up way faster than a human does. It starts to forget. It can’t tell you it’s forgetting. It doesn’t know.

Rich: I would even put forward that even if it could remember, it still won’t do a great job. And I’ll explain why.

Paul: Okay. Why?

Rich: I want to make a distinction. I want to categorize programmers in two ways.

Paul: Okay.

Rich: And I don’t know if I’m using the right words, but I’m going to use them anyway. Let’s call it a procedural programmer.

Paul: Mmm hmm.

Rich: And a substantive programmer.

Paul: Okay.

Rich: A procedural programmer is, like, looking at a ticket in a spreadsheet or in Jira. And without bothering to understand why they’re doing what they’re doing, or what the point of it is, they’re just going to execute on the plain-English logic and make it software. They have no context. They have not talked to a business person or product manager. And what they’re doing is they’re essentially literally taking….it’s one of the big criticisms of, like, offshore development is that because the communication is so lacking, that they’re just putting, they’re creating software without understanding why they’re doing it. Okay?

Paul: Mmm hmm.

Rich: And I call that a procedural programmer, meaning they’re just literally following instructions.

Paul: Well. And the reason isn’t because there’s something wrong with them. The reason is that the way that those organizations are structured is it’s, like, thousands of relatively low-skilled new programmers who are just told, “Go get the ticket and do what it says.”

Rich: Exactly.

Paul: And if they do a good job at it, somebody gives them a thumbs up. And if they don’t, they get a thumbs down.

Rich: Exactly. Now let me talk about the second kind of programmer, which is what I call a substantive programmer.

Paul: Mmm hmm.

Rich: A substantive programmer, when you give them the ticket, they actually want to understand why they’re doing it, what the point of it is, who the user is. And that colors their thinking about how they should approach it, what they can do better. The best programmers, by the way, you ask them to do X and they do X plus three, they, like, come back and they’re like, “You know, I was thinking about this and I actually fixed something else and I made this smoother.”

Paul: I gotta tell you, man, I know that we’re supposed to really like the substantive programmer more, but he—always he—is just as likely to use that Q&A strategy that you just had there as, like, the most passive-aggressive exercise.

Rich: Boy, that’s real, but we don’t need to bring that up.

Paul: “Hey, do we actually—okay, well, what if they don’t have an email?”

Rich: Yeah.

Paul: “Well, it’s an email client.”

Rich: I have been there. [laughter] Yeah, that’s the substantive programmer gone wrong, gone awry.

Paul: And actually everybody starts as a procedural programmer.

Rich: You gotta learn the steps.

Paul: Like, that’s where you begin.

Rich: You gotta learn the steps. Why am I bringing this up? I’m bringing this up because I don’t think AI’s limitation is just context window. I think even if you expanded that context window, it’s always going to be a procedural programmer. Like, I think it’s going to have more knowledge, but I don’t think it’s going to think—if I can add a dimension to its thinking, I don’t think it’s there. I think you can do things to trick it into thinking about the larger goals.

Paul: No, it’s not just that. I mean, I get that. I get exactly— What you’re saying, what you do with AI to make it work is you say, “You’re going to build an API for data on the web and it’s going to use the Express framework in JavaScript.” And what that actually means, to a large language model, not that it understands what something means, is, “Here is what a template for an Express API looks like.”

Rich: Mmm hmm.

Paul: It needs these five files and these kinds of things go with it.

Rich: Yeah.

Paul: And then it can spit out a bunch of files. You write “npm run dev” and it executes the “Hello, world” of that.

Rich: Yes.

Paul: And what it did is it copied a file. Like, it copied some stuff.

Rich: Yeah.

Paul: But that can look bigger and it can look more substantive. But I agree with you. What it’s doing is just saying—

Rich: It’s a vacuum. It’s a vacuum.

Paul: “Oh, you want me to set up the template.”

Rich: It’s in a vacuum.

Paul: Yeah.

Rich: It doesn’t understand what you value.

Paul: That’s right.

Rich: It understands that, “Oh, I can pattern-match these and give you something.”

Paul: In the past, when people have said things like that, they often end up with things like this.

Rich: One of the things we’ve said a few times, at least I think I’ve said a few times, is that this wave of change is a moment for product management. Because the reason product managers exist is to constantly remind the other craftspeople—designers and engineers—what the point of it is. That is their job. Their job is essentially liaison. It’s like, “Well, I’m glad that function you built works, but it actually needs to work this way, and here’s why.”

Paul: Yeah.

Rich: And sometimes they don’t even bother saying why. They’re just like, “Just do it this way.”

Paul: Yeah.

Rich: “I know why.”

Paul: That’s you as a product manager.

Rich: That’s… [laughing] fair. I’ll take it.

Paul: Yeah.

Rich: I think when we approach these tools, it’s funny, the same limitations that required all the different sort of social dynamics and professional dynamics are kind of being reintroduced to these tools, because the tools don’t care. They just don’t. They just want their paycheck and they want to give you the output, and they’ll give you the output and they don’t care what you’re going to do with it. Like, no AI has ever said to anyone, “That was a really interesting request, Paul. What’s your plan?” [laughing]

Paul: No.

Rich: No one’s, no one’s doing that.

Paul: They just keep going.

Rich: Just keep going. And, you know, for a lot of people that work in technology, and this isn’t a dig by any means, they don’t really have the full picture. They’re just putting out reliable output.

Paul: That is one of my things. Most people don’t know what business they’re in, right? Rich: Yeah.

Paul: And so, like—

Rich: AI is a funny mirror of that.

Paul: Well, tasks like, “I really need a dashboard-style report that’s a PDF that comes out of the database and tells me how many people are in the system and what their status is.”

Rich: Yeah.

Paul: And it’d be great if you could also include some charts.

Rich: Yeah.

Paul: [chef’s kiss noise] You can have that now.

Rich: Yeah.

Paul: And you know what? If you work at, like, the not-for-profit or the weird angle, the weird part of the office that nobody ever goes to, and IT won’t even come down there? Rich: Yeah.

Paul: You can have that now. Like, that’s where we’re headed.

Rich: Exactly.

Paul: So that part’s really good, because those are weird little boxed-in, context-free tasks, and I actually think there are billions of them that people would love to see done and they’ve never been able to get done. We talked about this in past podcasts.

Rich: Yeah.

Paul: So anyway, I didn’t get it done.

Rich: Aw!

Paul: No, but—

Rich: Whomp whomp!

Paul: I keep getting close.

Rich: Yeah.

Paul: And I keep tearing it down—

Rich: You’re learning.

Paul: Well…

Rich: You actually don’t need this app. Like, you’re not—your life isn’t depending on it.

Paul: I can finish the last 20—if I took two days, I could finish the last 20 percent.

Rich: [overlapping] Probably finish it off, yeah.

Paul: Two days. But I don’t have two days. I’m busy building a startup with you, let’s be clear.

Rich: Fine.

Paul: I’m some—

Rich: Fine.

Paul: I don’t get to wander around and do my dilettante nonsense. And related to that, I really want to learn how close I can get and what are the patterns of work. The pattern that I see working is finding schemas and structures that already exist. Things like API development platforms in JavaScript that are really well-documented that have a clear structure as to how the flows. Because when I say, “Hey, look at the database and make an endpoint for the get post push put patch methods on that endpoint—”

Rich: Yeah.

Paul: Which if you don’t know what this means, this is, this is the classic REST API structure. If I say that it’s like, “Oh man,” you know, it’s seen a million of those, and it sort of can chunk them together, because those schemas and those structures already exist in the world. If you align it with the, with things that are completely conventional?

Rich: Mmm hmm.

Paul: You can get pretty good output pretty quickly.

Rich: Yeah, I think, I think, and I think the message here is AI doesn’t just know how to spit out lots of code. It actually has knowledge of, sort of, these higher-level architectural concepts.

Paul: Yeah.

Rich: It actually knows them. Like, it knows them all. And I don’t think people are thinking about leveraging it that way just yet. But yeah, I’m glad you got frustrated, in a weird way.

Paul: No, there isn’t—I don’t know how to get this finished. I don’t, I truly—nobody does.

Rich: It would be truly terrifying if you could.

Paul: Yeah.

Rich: At this point. Let’s take it step by step, Paul.

Paul: That’s, that’s—

Rich: Slow down.

Paul: That’s literally what I’m doing. [laughter] I will say, let me, I’ll close with a few things. One is stuff that was really hard to do because there’s so much orchestration and ceremony around it—and I’ll give you an example. I really understand web servers and web clients very well, but there is a kind of conversation between those two around a technology and a platform called WebSockets—

Rich: Yeah.

Paul: Where it’s, it’s when it updates in real time on the page without actually sort of, like, going and getting another page. And, man, I just was, I kind of missed that whole thing in my career, and I just find it excruciating.

Rich: It’s terrible.

Paul: And here I can say, let’s set up that WebSocket server.

Rich: Yeah.

Paul: And it pretty much works because millions of people have done it.

Rich: Yeah.

Paul: Right? And so, things like that. Patterns that were—I don’t like writing tests, you know?

Rich: Yeah.

Paul: All those patterns that are kind of off limit before?

Rich: Doesn’t mind it one bit.

Paul: “Create the guide to the API, and make it really pretty, and make it really easy for me to use.” Very good at it. That said, you know, I mess around with audio and synthesis in my spare time, too. So I’m doing—

Rich: Did you talk to your family at all over the holidays?

Paul: [laughing] I really did, but there’s a point where they just don’t want you for two hours.

Rich: Yeah.

Paul: You know, like, kids are in bed and, you know, my wife is watching TV.

Rich: Fine.

Paul: So I go in—the world of audio software is very visual because you got to move stuff around and make things happen.

Rich: Uh huh.

Paul: I’m going to just make a suggestion to everyone. If you get a chance, go to a website called fors.fm. F-O-R-S dot F-M. They make a bunch of software, mostly for the digital audio workstation Ableton Live, but there’s a, they make a plugin called Tela, T-E-L-A, and it’s a synth. And like, just look at a video of it, and then try to conceive, and you can always speculate and imagine, but, like, it’s so clearly the work of an individual. And there’s so much work in every single little interface element. And it doesn’t work like any other software. It’s not— But it has a completely predictable internal grammar. But it doesn’t have, like, buttons and icons the way you think, you move your mouse up and down and stuff is all kind of moving and doing stuff, and it’s very kind of black and white.

Rich: Okay.

Paul: I’m just, you know, I’m on a podcast describing an interface, so I’m aware of that.

Rich: Yeah, yeah.

Paul: But like, if you go look at a video of Tela, T-E-L-A, and you just kind of, like, poke around and, like, I spent some time with it, because I’m—what would happen is I’d ask the AI to do something and it takes a couple minutes and I go back and dink with my synths, [laughter] you know, and neglect my children.

Rich: Fair.

Paul: All the regular stuff. The contrast between kind of, like, I’m going to load stuff from the database over here—and it’s amazing it can do it. But it’s also not the future. Right? It’s just sort of, like, it’s what we’ve been doing forever. And then going over to Tela and just seeing the craft and care that this person exercised around the code and the tool.

Rich: Yeah.

Paul: And I’m, like, obviously the future is a little mix of both.

Rich: Yeah.

Paul: You extend things and so on.

Rich: Yeah.

Paul: But you’re just not going to be able to sit down and say, “Make me a really cool synth.”

Rich: Yeah.

Paul: For, as a VST, and get Tela as a result.

Rich: That is the human touch and that is craft. And that’s not just us being nostalgic.

Paul: No, no, and I—but I think people in these conversations, as they’re talking about this stuff, they just throw it away so quickly.

Rich: Yeah.

Paul: They throw it there, because it’s so amazing what it’s doing. And you’re like, “Well there it is. That’s the whole future.” And I’m like—

Rich: It’s over!

Paul: Yeah, but it’s also, like, I don’t want what that makes for music. I want the Swedish guy to make it for me.

Rich: You’re making the same argument for like, gosh, the sameness of the images that get generated, right? Like, same kind of—

Paul: It’s real. And I, like, I don’t—at the same time, I want to build my allowance app and I want it to be quick and I want the woman in the corner…

Rich: Sure.

Paul: Who never, who IT ignores to get her nice reports—

Rich: Sure.

Paul: So she can submit, she can get her bonus. Right?

Rich: Yes.

Paul: Like, I think we’re in a, it’s a very, very dynamic that way. And I think we’re—everybody’s gotten really confused, because they don’t know what software is for all the time.

Rich: And it’s also so early.

Paul: It’s so early, and it’s hard to finish things. And at the same time, boy, is it powerful. And I’m just out there, I’m just seeing prediction after prediction. Like, it’s all going—I’m like, I just don’t think anybody really knows. And what I’m also realizing is, two weeks of really intense usage of this is putting me further and further into a very, very small group of people who are really trying to do this stuff.

Rich: Yeah, yeah, yeah.

Paul: Like, it’s just not—and that’s not flattering to me. I just have some spare time right now. Like, I, people do not have an instinct yet.

Rich: Not yet. Not yet.

Paul: And it’s going to take a while.

Rich: Yeah.

Paul: So here we are, we’re back in the air, we got our hands dirty. And, you know, I just wanted to talk about it.

Rich: Yeah. And we’re playing in this at aboard.com. You can learn a little more about what we’re trying to pull off here. It’s ambitious and big, but we’re already seeing amazing progress. Check it out. Try it out. You can try it at aboard.com. And if you’ve got podcast topic ideas or some aspect of AI you want us to talk about, reach out: hello@aboard.com.

Paul: hello@aboard.com. Thank you for listening to Reqless. And yeah, we’re going to, I’m going to keep building. Maybe I’ll come back in next week and be like, “Actually, I cracked it.”

Rich: [laughing] That’s the next podcast.

Paul: But actually, I’m gonna be honest, that, if I have one prediction? I don’t think it’s crackable that way. I don’t think there’s like some magic—

Rich: I don’t think it’s the path.

Paul: There’s no magic words I can say that will make it build the app.

Rich: I agree with that.

Paul: All right.

Rich: Have a lovely week, everyone. Be safe.

Paul: Bye!

[outro music]