Nicholas

How I built an Apple Watch workout app using Cursor and Xcode (with zero mobile-app experience)

Nicholas

Terry Lin is a product manager and developer who built Cooper’s Corner, an AI-powered fitness tracking app that works across iPhone and Apple Watch. Frustrated with traditional fitness apps that require extensive setup and manual logging, Terry created a solution that lets users simply speak their exercises, weights, and reps. The app automatically structures this data and provides analytics on workout consistency and progress. In this episode, Terry shares his vibe-coding process using Cursor and Xcode and explains how he optimizes his codebase for AI collaboration. What you’ll learn: 1. How Terry built a voice-powered fitness tracker that works across iPhone and Apple Watch 2. His “dual-wielding” workflow, using Cursor for coding and Xcode for building and debugging 3. Terry’s three-step process for working with AI: create, review, and execute 4. Why optimizing your codebase for AI collaboration can dramatically improve productivity 5. How to use index cards and GPT-4 to rapidly prototype mobile interfaces 6. A technique for “vibe refactoring” that keeps code organized and optimized for both human and AI readability 7. His “rubber duck” technique to better understand generated code and improve your learning process — Brought to you by: Paragon—Ship every SaaS integration your customers want Miro—A collaborative visual platform where your best work comes to life — Where to find Terry Lin: LinkedIn: https://www.linkedin.com/in/itsmeterrylin/ GitHub: https://github.com/itsmeterrylinWhere to find Claire Vo: ChatPRD: https://www.chatprd.ai/ Website: https://clairevo.com/ LinkedIn: https://www.linkedin.com/in/clairevo/ X: https://x.com/clairevoIn this episode, we cover: (00:00) Introduction to Terry and his fitness tracker app (02:30) Demo of the voice-powered workout tracking across devices (06:40) Analytics and history views for tracking consistency (07:20) Dual-wielding Cursor and Xcode for mobile development (09:05) Building a v1 using AI tools (11:19) A three-step AI workflow: create, review, execute (19:38) Token conservation and vibe refactoring explained (23:25) Optimizing file sizes for better AI performance (25:28) Using “rubber duck” rules to learn from AI-generated code (28:13) Prototyping with index cards and GPT-4 (31:20) Human creativity and the last 10% (32:29) Lightning round and final thoughts — Tools referenced: • Cursor: https://cursor.sh/ • Xcode: https://developer.apple.com/xcode/ • GPT-4: https://openai.com/gpt-4 • UX Pilot: https://uxpilot.ai/ • Figma: https://www.figma.com/ • Linear: https://linear.app/Other references: • Apple UI Kit: https://developer.apple.com/design/human-interface-guidelines/ — Production and marketing by https://penname.co/. For inquiries about sponsoring the podcast, email [redacted email].

Published
Published Sep 15, 2025
Uploaded
Uploaded Jun 13, 2026
File type
Podcast
Queried
0

Full transcript

Showing the full transcript for this episode.

AI-generated transcript with timestamped sections.

0:00-1:39

[00:00] You used AI to make getting swole at the gym easier. I am so excited about this. Let's see how you built this. I started using the GPT mobile app as like speech to text. And I was like, well, if the model can understand when I'm talking to it like it is right now, why can't a workout app do this and then tag the data for me, make it like a structured data set with analytics. Let's talk about how you built this thing. Cause I wouldn't even know where to start in terms of the mobile and watch side of things. I was like, what if I have a Python script that takes these [00:30] me in an Excel. Two months later, I now have an Apple Watch and an iPhone app. Now I did jumping jacks, 35 reps. He sends it to the phone. So whatever device you have, log your workouts, pretty much with no work. It does simplify this experience of going to the gym, like the gym bros with their notebooks, where they're writing down their reps or in their notes app. This is awesome. Welcome back to How I AI. I'm Claire Vaux, product leader and AI obsessive here on a mission [01:00] Today we have Terry Lynn, product manager, vibe coder, and AI-powered Jimbro. He's gonna show us how he made [01:07] a mobile and watch app to track his workouts using cursor, [01:12] Xcode and index cards. Let's get to it. This episode is brought to you by Paragon, the fastest way to ship product integrations. Are integrations on your product roadmap? Whether you want to ingest your users' files from apps like Google Drive or OneDrive, sync data with their CRMs, or automate tasks like searching Salesforce records, integrations are mission critical for products and SaaS. But integrations take months to build,

1:42-3:15

[01:42] enough. Embedded iPaaS are great for automation, but break under high volume and unified APIs are limited by their endpoints and data access. With Paragon, developers can ship new integrations in days with purpose-built products to support any use case from high volume ingestion to real-time actions and automations. That's why engineering teams at u.com, Pipedrive, Cinch, and hundreds of [02:12] Paragon. [02:13] so they can focus their efforts on core product features [02:16] not integrations. Visit useparagon.com slash howiai to see how Paragon 2.0 can help you accelerate your products integration roadmap today and get $1,000 off. [02:31] Terry, I'm super excited to have you on the podcast. Welcome. Thank you. Thank you. Long time listener, first time caller. [02:38] Well, speaking of first time, we have had a lot of web developers, including myself, on this podcast, but we actually haven't spoken to very many people [02:49] building for mobile and i know mobile apps have special challenges [02:53] technically, you know, just building them. And then I'm super curious to see how folks like you are approaching using AI to build mobile apps. So [03:02] Before we get into the how, let's see the what, what did you build with [03:06] AI. [03:07] So I built a mobile fitness tracker called Copper's Corner. [03:11] And essentially the problem I was trying to solve, maybe I put my PM hat on for a sec, was...

3:15-4:51

[03:15] I would go to the gym, I would try to be consistent and then, you know, life gets busy. [03:19] You start to slip one or two days and then you go back a week later. You're like, oh, what was I doing? [03:24] And so I tried these fitness apps where you kind of have to like create an account. [03:28] set up your exercises, [03:29] Tell them what your gym has equipment wise and [03:32] I felt like doing a lot of homework and even when you're working on it, you have to like log what you did. [03:36] You know, your rest timers, things like that. [03:39] And then last year I started using the GPT mobile app as like speech to text. [03:43] And I was like, well, the model can understand when I'm talking to it, like it is right now. [03:47] why can't like a workout app do this and then kind of like tag the data for me [03:52] been, um, [03:53] make it like a structured dataset with analytics. And so that's kind of [03:57] how I started down that path and then [03:59] I basically started with a little script and then eventually two months later, I now have like an Apple watch and a [04:05] So I'll run you through hard work and then we can talk through how I built this. [04:09] Okay, so you used AI... [04:11] to make getting swole at the gym easier. I am so excited about this. As someone who definitely never, never skips a gym day. [04:20] Okay, let's see how you built this. [04:23] Okay, cool. I'll run you through hard work real quick just to get a server and has like a visual. [04:27] context here. [04:29] So this is the login screen. Now, if you can see it, he's the... [04:32] Hero. [04:33] of the image was just a good cooper cooper the dog yeah and i don't know if you can see him but he's sleeping right there literally [04:40] Like on the side of my screen. [04:42] Yeah. [04:44] Okay, so the first thing is authentication, right? I'm using sign-in with Apple. There's kind of a UX decision there because I don't want you to

4:51-6:24

[04:51] create an email, [04:52] And they have to like, you know, enter a code. [04:56] And so one of the first thing you'll notice is when you log into the phone, [04:59] Here it logs into the Apple watch. So there's some stuff I can talk about there. [05:03] But essentially you could basically just use voice and record your workout here. [05:06] And so I'll give this a shot. [05:08] I did... [05:10] Dumbbell shrugs, 35-pound dumbbells, 10 reps. [05:14] And so what I built is you could record it from your phone or you could do it from the Apple Watcher. Because sometimes when you're at the gym, you don't always have your phone. [05:22] uh too right so let's see if it got it right [05:25] There we go, see, and it has a transcript here. [05:28] And if I try it from the phone, [05:30] Right, now I did jumping jacks, 35 rubs. [05:35] So it sends it to the phone. So whatever device you have, it's kind of cool. It can... [05:40] Log your work out pretty much with no work. [05:43] So for people that are not watching on screen, [05:47] This is an app that goes across your mobile device and your smartwatch. [05:51] And you basically speak to it at the gym, say what exercise you did, what weight, what reps. And it just automatically populates a structured record of... [06:03] that exercise, including what time you did it, [06:07] It shows a picture of the equipment you might have used or a picture of somebody doing jumping jacks or in this case, push-up jumping jacks. And... [06:17] It does simplify this experience of going to the gym, you know, like the gym bros with their notebooks where they're writing down their reps or in their notes app.

6:24-7:59

[06:24] an Apple. So you built this. It's [06:27] multi-device. It's multimodal. It goes voice to text and text to structured output. [06:34] Let's talk about how you [06:36] built this thing because I wouldn't even know where to start in terms of the mobile and watch side of things. [06:42] Yeah. And there's one more thing to show you real quick. I'll flash it on is we were talking about how do you be consistent? [06:46] So there's actually like a history view here so you can look at your seven day [06:51] 30 day [06:52] 90 day analytics to see how consistent you are. [06:55] And you can see in like the last 30 days, I've been going to the gym 21 days, right? So now I know. [06:59] when I've been slacking, when I haven't been. [07:01] And also I can see like my top exercises. You can see I do a lot of jumping jacks here. [07:06] I do leg presses and then you click into the leg press. [07:09] You have like a whole history of what you've done. [07:11] So now you have like a scatter plot of where my weight's going. [07:14] like a history of if I'm actually progressing or not too. So that's kind of it. I could walk through how we built that, but any questions there? [07:20] No, let's go through how you built it. [07:23] Okay, so one thing with iOS apps is that you usually have to use Xcode. [07:30] which is Apple's IDE to [07:32] actually build the code. [07:34] I do something called dual wielding here. [07:36] So this is what exhale looks like. [07:38] And what I do is usually I do a side-by-side [07:42] with cursor here so the way i link this is i make both of them point to the same folder [07:47] on your computer, [07:48] and then Cursor will do the coding. [07:50] And then I will do the building and then debugging in Xcode. [07:54] The reason is because sometimes on the phone, when you get errors, like compile errors, build errors,

7:59-9:34

[07:59] Xcode is really where you have to go to get that because cursor [08:03] it's not like a web browser where you could just kind of look at the tools and then start looking at the console. And so, [08:09] There's a little bit of a kind of workaround you have to do. And I've seen some people online have these hot reload apps, but [08:14] This is kind of the solution I've found that works best for me. And also if you have to build to the Apple watch, you kind of have to do it separately. So that's kind of why I have this split workflow. [08:23] for now. [08:24] Got it. So we want Cursor to somehow build a native integration here. So you have a little bit [08:30] more cross-pollination if you could. Yeah. [08:33] Yeah. And it's not like web apps where you just run a local host and then you kind of can see it in your browser. You have to kind of always build it on your phone. [08:40] And right now you're seeing this in the iOS simulator. [08:44] I would say even when you're testing mobile apps, like swiping around with my mouse here feels very different than when I'm on my phone. [08:49] Tess, you're going to hear? [08:50] And it's even different when I'm in the gym, actually like running around and like trying to record stuff. [08:55] And sometimes the audio is not great to you. So I think when it comes to like mobile apps and you're testing this, you just have to get as close to the actual experience. Otherwise. [09:02] You're kind of just testing in a box and not really [09:04] getting the true kind of user experience there. [09:06] So how did you get this started from zero? Kind of what was your set up in terms of defining the product, getting cursor set up? How did you work through that? [09:17] that workflow and then doing the build and testing and Xcode it on your phone. [09:22] Yeah, so like we say in product, you want to like think big, start small, right? So the V1 of this was actually just using Apple voicemail, like on the Apple Watch. I would record that and then you would copy it.

9:34-11:07

[09:34] to my computer. [09:35] And then around February this year, I started getting into vibe coding and I was like, well, what if I. [09:40] have a Python script that takes these files. [09:42] And it takes a GPT-4L and it just suits it to me. [09:45] in an Excel. [09:46] And so what that looks like here is kind of this spreadsheet here. [09:50] This was like the very V1 of it. [09:52] where you see the transcription, [09:54] It attempts to tag it. [09:56] with different muscle groups and they'll wrap sets. [09:59] But the problem here is that this is not structured data, right? It's just whatever the model thinks is... [10:04] the exercise. [10:05] And so then I'll say, all right, well then what is the solution then is then you got to put it into a database where it's actually structured data. You have like the foreign keys. You can actually. [10:12] When you manipulate it better, it becomes more consistent. [10:14] So that's kind of where it went from this. [10:16] to a backend API that a built in cursor. I want to pause here because I actually think this for folks that are listening is a pretty [10:24] cool hack, which is using voice notes on your watch to just [10:29] narrate your workout at the gym and then download that text, you know, put it in even... [10:36] chat GPT or some sort of like no code little flow. [10:40] and populate it in a spreadsheet. That's just such a simple and easy way to start. And then what you're saying is, [10:46] You're a PM and an engineer and you want foreign keys and a database. So you decided let's make this a full app. [10:53] Yeah, and it's also, if you look at the spreadsheet, how do you make sense of this, right? Over time, you're not really... [10:58] You don't have these analytics that you see here. [11:01] On the right side in the phone. And so I was like, well, how do you then do that? [11:04] You can ideate with GPT. I think when you work with models, it could either.

11:07-12:38

[11:07] work with you or work for you. This is very much in that working with you side or just ideating on features and [11:13] how you can potentially make like an MVP into like a [11:16] Low hacky tool that. [11:18] Gives them higher iteration. [11:19] So, okay, so you decided to build this app. How are you actually building? What is your step-by-step workflow in Cursor? [11:28] Sure. So I have kind of a three or four step process in Cursor. So first step is creating a PRD. [11:35] Second is having a model review it. And then third step is executing. [11:40] And so the way I have to set that up is kind of three rules here. There you see PRD create. [11:45] PRD review, PRD execute. [11:47] And so if we take a file here, [11:50] As an example here, I have an existing ticket. [11:53] What I'll do is I'll take an issue [11:57] I'll add it to cursor here. [11:59] and then i'll have it run through [12:01] PRD. [12:03] Create. [12:04] And what this rule does is essentially breaks it out into what you need to implementation. [12:10] any reference diagrams, [12:11] to actually do this task. [12:13] What are the goals we're trying to do? [12:15] One thing I do is I use Gherkin user stories to actually describe [12:19] the scenario. So the format is like given... [12:22] Something happens when the user does this. [12:24] then do this action. [12:27] And so there's also some investigation here. [12:30] that happens. So if I don't know how to actually do something where the model doesn't know what files to use, what databases to touch, that's kind of a checkpoint here.

12:38-14:11

[12:38] And then this is kind of like the V1 of the PRD where it's not fully fleshed out, but at least it's the structure of it. [12:44] And then one thing I realized is sometimes early on when I was vibe coding, this document would not be enough. [12:50] And that's kind of why I created a PRD review rule. [12:53] Where basically, uh, does like a check on that PRD so. [12:57] One question I do, I ask is if another model were to take this plan, [13:02] How would you rate this out of 10 if it had no context and it had to execute on list? [13:06] And so you're basically sanity checking your PRD. [13:08] to see if it's actually has any gaps that a model could trip up on. [13:12] Down the line. [13:13] You've seen the doom and gloom headlines. AI is coming for your job. But the reality is a little bit brighter. In Miro's latest survey, 76% of people say AI can boost their work. It's just that 54% still don't know when to use it. As a product leader and a solo founder, I live or die by how fast I can turn fuzzy ideas into crisp value propositions, roadmaps, and launch plans. [13:43] It drops an AI co-pilot inside the canvas, so stickies, screenshots, and brainstorm bullets can become usable diagrams, product briefs, and even prototypes in minutes. Your team can dive in, riff, and iterate. And because the board feels like a digital playground, everyone has fun while you cut cycle time by a third. Miro lets humans and AI play to their strengths so that great ideas ship faster and happier.

14:11-15:44

[14:11] Help your teams get great done with Miro. Check out Miro.com to find out how. [14:18] That's M-I-R-O dot com. [14:23] So how did you build these [14:25] cursor rules and how did you know what to build and how to put stuff in this template? Honestly, a lot of blood, sweat and tears. I think when I first started VibeCoding in February or March, no one is really talking about memory banks or rules yet. [14:37] And so the problem I was running into was every time I modeled, I got to do more and more complex tasks. [14:42] It would at some point trip up over itself. It would make up stuff. [14:45] You would make a file directories. You would get... [14:48] Endpoints Ron. [14:49] And so I realized after repeating it, [14:51] telling it what to do time and time again, I started noticing these patterns and like how to give it context. And I was like, well, why am I repeating this over and over again? I should just make these into the rules. And so that's kind of how I ended up. [15:02] with these processes. [15:04] And you notice I also broke that into like three PRD rules. [15:07] The reason is because [15:08] Originally, my rules were super verbose, maybe 800 lines long. And I realized I was just running into a lot of context windows with the same rules. So you'll see like there now no more than 200 lines. [15:19] And so I actually like I'm much more cognizant of how many tokens I'm using. [15:24] with these roles. And so over time, I kind of gotten more efficient with that. [15:28] As I [15:29] Get more experience with Cursor. [15:31] And the second part of this, which I think is so interesting and mirrors how things work inside product organizations, is you write a PRD. [15:39] And then somebody looks at it. Somebody reviews it and says, is this good? And that person could be...

15:44-17:15

[15:44] you know, a PM lead, it could be a peer PM, or it could be an engineer. And it seems like you're taking this from an engineering point of view and saying like, as a [15:51] model reviewing this zero context, what do you think? And I like this idea of rating [15:56] 0 to 10, do you feel like the ratings are generally pretty accurate? [16:01] Yeah. And it's more of a barometer for me and how well I prepared it. If it's like a seven out of 10, I'll then ask, well, what are the three points? Why did you dock it? [16:09] And it'll give me some reasons on why those gaps are, but is this an edge case? No, we could. [16:14] Ignore that and it'll kind of. [16:15] You want to get it to at least like a nine out of 10 before you do it. And the reason is then when you. [16:20] have it run through the planet could probably one shot it pretty quickly. And so I'm doing that here on the side. You see there's a seven out of 10 here. [16:28] And so it gives me like a straw man and steel man a bit. [16:31] And so you see the gaps identified, I can then be like, all right, [16:34] InConsvision API, are these actually things we need? [16:38] And then I'll kind of then kind of iterate this until it's a 10 out of 10. [16:42] And then that's when I then run the execute role. [16:45] which I think you've seen is like the checkbox rule. You have it in chunks. Something I do extra is I have a git commit before and after each phase and ask it to pause. [16:53] So I don't just have it one shot everything, but. [16:55] This is when I know I can let it run, go get a coffee, [16:59] and then come back and just do some QA. [17:01] Got it. So your step is write it as a PRD. Gosh, your poor AI PM. You write the PRD. Then someone else tells it if it's good or bad. Then you iterate. Then the poor PM has to make...

17:15-18:47

[17:15] epics and tasks, the AI PM has to make the checklist. And then you're giving very explicit directions on check in at every single point. [17:24] And then you say, here you go. Here's your PRD. Here's your checklist. [17:28] Let it run. [17:29] And then are you coming back and checking that code, doing the build in Xcode and then verifying it all works and shipping it? [17:37] Yeah, so here's an example of one where [17:41] On the Apple Watch, when I showed you, I hit record. [17:44] And I stopped it. [17:46] It was saying send to iPhone, but it wasn't staying on long enough. So if you're recording this, you may miss it. [17:51] And then you may wonder, hey, did it actually even go to the phone? [17:53] So this was adding like a little timer so you can see that if you're kind of walking around the gym and there's like a feedback that, Hey, this is. [18:00] We got this. You don't have to worry about it. [18:02] You have to worry about it failing. [18:04] And so this is what the PRD looks like. I logged it originally in a tool called linear, and so I pulled that in here. [18:09] and then I ran it through prdcreate [18:11] And so we created this doc. [18:13] And so I'm very explicit where I even tell it what files you want to touch just because I don't want it to search through my code base. [18:18] waste tokens. He's like, "Hey, here's what you need to do. Here are the files. [18:22] Here are the endpoints. Just go run with it. [18:24] Yeah, so here's some of the example of the phase checklist. You see phase one, it does the checklist. In every phase, it kind of pauses, right? There's like a... [18:31] Safety checklist here. [18:33] Right? No placeholder codes. We didn't want you to make stuff that could break things. [18:37] There's some error handling. [18:39] And then it kind of runs through this. [18:41] Yeah, and I want to pause for folks that are not watching on that checklist, if you could go back to it.

18:47-20:17

[18:47] It's really interesting. Every phase at the end of the phase says you have to verify the paths, make sure you're using real data, no placeholder, that you're handling errors well. And so... [18:59] It's really interesting that you really, again, are following this pretty classic development pattern of like product manager, you know, defines requirements, breaks down the tasks. [19:08] engineer executes, you do a QA phase and then you move on. [19:12] to the next task. So you sort of structured [19:16] your rules and your process to map to that. [19:19] And then the only difference is you're using an AI PM and AI engineer and AI EM to sort of run QA to run through all this. [19:28] Yeah, and I think 80% of the time I'm working with the model, it's this last 20%. [19:34] where the checklist is just... [19:35] burning through tasks for me too. So I think the biggest switch is probably just learning to work with the model, I think is where, if you get good at that. [19:42] I think after this stuff is just kind of table stakes. It's just executing. [19:47] And I have to... [19:48] I'd love to understand. You've mentioned conserving tokens for a while, and I have to understand your motivation because... [19:55] I am just like... [19:57] eat all the tokens you want i just do not care tokens everyone you get a token you get a token [20:03] Is this a cost sensitivity thing? Is it a performance of the tasks where... [20:09] you know, too much context in the cursor context window actually degrades performance. [20:14] What is your motivation for token conservation?

20:18-21:50

[20:18] Probably my sanity. [20:19] If I could put it into thought to that. [20:22] So the reason I say sanity is because [20:24] Uh, LLMs are really good at just generating a bunch of code. It can be very robust. [20:28] And so sometimes when you have very large files, [20:31] I noticed cursor when they go through your code base files, they read in like 200 line chunks at a time. [20:38] And what I realized over time was that I had, I had these files that were like a thousand, a thousand, 1500 lines long. [20:43] And it was spending a lot of time just going through that. And then as it was going through tasks, it would just start getting tripped up a lot. [20:49] And then that's when I kind of stumbled upon this concept of like, I call it vibe refactoring, where [20:53] You basically have to take vibe coding. You have to like reorganize it into something that's cleaner. And then that way, I guess it's like good engineering principles. They do that too, right? You refactor code, you keep it clean. So that's something I do with another rule here. [21:06] where I [21:06] Kind of have the PRD role, but it's not meant to create features. It's meant to refactor existing code bases. [21:14] And so I essentially give it the same, you know, context docs. I give it the API endpoints and I give it different guidance on, Hey, [21:21] What do we need factoring? [21:22] Why should we do this? How do we make sure it doesn't break? Like how will we QA this after it's done? [21:27] And they kind of run through the same process of where you're doing that PRD planning, but your goal is very different. [21:32] more of a cleaning your apartment, making sure everything works fine. [21:36] Okay, so I have to call this out for all the engineers, engineering leaders, large engineering organizations that are watching the podcast. [21:44] Yes, AI does have the ability to generate lots of code and maybe not the highest quality code

21:51-23:25

[21:51] always in pursuit of shipping features. And I know there's a lot of nervousness in the industry about, oh my God, what if we give PMs access to ship code or designers access to ship code? The code's going to be so ugly. They're not going to know it's going to cause a lot of tech debt. But what I have experienced is that exactly this is actually quite good at [22:10] refactoring. [22:12] And I almost suggest to engineers that are adopting these tools or teams that are adopting tools is like, [22:18] Build the refactoring as a known cost of... [22:22] your AI implementation almost planned it that way where it's like, okay, I'm going to, I'm going to vibe code to the feature working so I can, [22:30] Check that customers like it, that I can see that it works, that I can see if I like the design, all that kind of stuff. Get it out there. [22:37] you know, like secure, performant, but not beautiful code. [22:42] and then go back and spend... [22:44] a vibe day refactoring. And I love that you actually have built, people would love to see these rules. So maybe we'll bribe you to share them. But I love that you've built this rule of like, this is how a good refactor goes. Here are my engineering principles that I want you to prioritize. Here's the things that you should think about here, the performance things you need to think about. And I think it's just a really... [23:03] Nice process. And I've had this experience myself where... [23:06] I just, I build a feature. [23:08] Get it out. [23:09] People like it. Great. I wasn't happy with the code, but I knew that. [23:13] And I go back and refactor and it's so much cheaper and faster. [23:17] honestly than almost any other path to like the good code. So I think this is an exceptional way to do things.

23:26-25:12

[23:26] Yeah, and I have an example on my screen here of what that... [23:28] plan would look like for a refractor. So the quickest way to do that is just to do a line count and have the model do it. [23:34] Hey, what are my biggest files? Which ones are like God mode that we need to factor down? So one of these is this recorder. [23:40] file we need to go into, but that was that recording logic I just showed you. There's 900 lines. [23:45] I generally try to keep them under two to 400 lines, just because I don't want the model to use context going over code. Maybe it doesn't need. [23:52] to do a task, right? [23:53] And same thing here, it has that checklist. [23:56] Each phase. [23:58] And then yeah, basically each phase it'll try to do a build the next code. [24:02] And then make sure there's no compile errors and don't just keep chugging through that. [24:06] We have that safety checklist. [24:08] And let's make this clear for folks that are listening is you very intentionally... [24:15] set up one of the design principles of your code base that you want your files [24:20] to be of a small enough size that the LLMs itself have [24:25] an easy time working with and navigating individual files, getting tasks done. And I think this is really interesting because I think about it a lot. [24:34] I think as a human, what is my preferred structure? [24:37] of a file? Do I like embedded functions? Do I like a bunch of little bitty files across the code base? What is my preference? And sometimes I like these longer files because I'm [24:47] I'm in a file. [24:49] And I'm like, well, I want the definition of this here. I just want to be able to read and understand what this this is doing. [24:55] But a AI engineer reads the files very differently. And so what I like about your approach here is you're optimizing for your AI colleague and the way that they read this context. And it may or may not be the same as...

25:12-26:43

[25:12] an engineer or human may want to read and retain the context. And so I think that's going to be a real challenge for [25:19] teams that are putting this kind of flow into production is making those [25:23] design principles work for all systems that are contributing code. [25:29] Yeah. And one thing that's useful if you make it smaller files is I have this final rule called a rubber duck. [25:34] So in engineering, there's a concept where if you're trying to work through an issue, [25:38] You talk to an inanimate object, you explain the code line by line. [25:42] And so what I use this file for is if I'm just trying to learn or optimize the rate of learning, like we just. [25:47] generate a bunch of code. I don't know what some of it does. If I want to just learn what it does, can you just take this file and explain it to me? [25:53] And sometimes I'll have dinner, you know, I'll just ask it to like pop quiz me. [25:57] And I'll just like eat. It'll give me a function. I'll think about it. And then I'll kind of use this to rubber duck as a partner. [26:02] too. And so, yeah, it's [26:05] This is a great idea because I do this a lot when I have let cursor... [26:11] you know, run through a big chunk of code is I just [26:14] I summarize it with like, explain to me what you did and how you did it and why you did it. We actually put those really clear explanations into our pull request descriptions. So it's very clear. [26:25] how something was built, but you're getting the A+ [26:29] colleague award by actually quizzing yourself on how your own app works. [26:33] And I think a lot of people are worried that, you know, [26:37] vibe coders or whatever are going to build these apps and have zero idea. [26:41] how they actually work.

26:43-28:20

[26:43] whether they're secure. And honestly, they'll have zero idea... [26:48] of the underlying technologies and won't actually develop technical skills that could make them an overall [26:53] better builder. And this is a really good strategy kind of built in [26:57] to use your vibe coding process as a learning. [27:02] tool. [27:03] Which I think is the best way to do things. I have... [27:08] been a self-taught [27:10] software engineer, I've always had to learn by like tapping a colleague on his shoulder and saying, what do you think of this code? How did you build this? Why did you make this decision? Why did you select this library? All that kind of stuff. [27:20] And now you just have this like infinitely patient [27:23] colleague to do that with. And I just think it's such an amazing [27:28] learning opportunity for folks that want to develop technical skills, want to be able to code themselves or in partnership with AI. So I think this is a really awesome... [27:38] process. And I would, I definitely want this, these rubber, rubber duck rules. [27:43] Yeah. And I think rubber ducking vibe cutting is essentially like a reverse rubber ducking, right? Like we're telling the LLM what we want. [27:50] But it's spitting out the code for you, right? And I think... [27:53] Building this muscle actually helps you build faster over time because [27:56] You're learning how to debug stuff with LLM as your tutor. [28:00] As you go through this process, you can start to see when it starts to make mistakes and you can get through them faster just by going through this process and learning through your code base and. [28:08] Kind of the rate of learning is what you're trying to optimize for. [28:11] with this rule. [28:13] I always think this is so interesting. All of you organized vibe coders out there. Ryan, who was on our podcast.

28:20-29:50

[28:20] has a somewhat similar, slightly different flow. Yours is a little bit more technically oriented. [28:24] I still... [28:26] Jack's like to float through the ether. [28:29] eating as many tokens as possible, [28:31] letting the LLM take me where it will. Maybe I will bring some more of this structure. I'm just really good at writing PRDs, you know? And so I start from there and then just let it rip. But I love this process. Okay. I want you to show us one more thing, which is a little bit more on the design and exploration side, which is how you combine... [28:53] you know, offline drawing and online to build little mobile prototypes and try out ideas. [29:01] Yeah, so with mobile, the funding is I prototype this using index cards here. [29:06] So I'll show you what that looks like. [29:08] Uh, so sometimes in New York, when you're in the subway, you run into these dead spots where you don't have reception. [29:13] And so one thing I started doing is I started using these little index cards here. [29:17] where I would just draw out the UX and I could like, you could kind of like press something. You could change it to kind of simulate that. [29:24] kind of UX. [29:26] And then what you can do is you can send this picture into GPT-4 on your mobile device and just tell it, Hey, this is a mock-up. [29:32] Can you help me upscale this? [29:34] And so here's kind of what it looked like here as a scribble, right? And then you can [29:37] Start getting variations, asking it to change. [29:40] different layouts. And then eventually you can put this into a tool. I use a tool called UX pilot, which can actually spit out [29:47] uh, Sigma components. [29:48] And then when you drag it into Figma,

29:50-31:21

[29:50] Uh, there's Apple has some libraries you can use. So this is what the UI kit looks like. [29:56] You can do like segmentation bar, [29:58] They have different names for their different things on the iPhone. You see this is [30:01] And then you just click insert. [30:03] And you can just start [30:04] building like an iOS app very quickly with kind of the default Apple layout too. So that's how you can. [30:09] quickly kind of spin up a design. [30:12] Okay, so you are prototyping a mobile app on your mobile app. [30:16] Sometimes with no connection by using an index card, which is a perfect aspect ratio for... [30:23] prototyping a mobile app. You take those, you upload them to ChatGPT. Do you use the 4.0 image generator? Is that what you're using to get the... [30:32] prototype. [30:34] And I think this was around the time when they released image gen, it just got really good. And so that's when I realized, oh, it could take a low five thing and upscale it for me very quickly. [30:42] Cool. And then you drag it into Figma and then use some of the out of the box components. I have to ask, have you ever just uploaded those? [30:52] index cards directly to cursor to see what it does with them. [30:57] I have tried, but the results aren't great because I think it's like an input-output. [31:01] equation is if you give it a lo-fi thing it just gives you something that's pretty sloppy. [31:05] Um, [31:06] Yeah, I think everyone knows that you, the more hi-fi you get, the better quality you can get. And so that's kind of where I'm really struggling now is like getting the design. [31:14] Like, I think getting the Zyne 80% of what you want is pretty easy, but that last 10... [31:18] 1% is like really, really hard. [31:20] To fiddle with LLM.

31:22-33:02

[31:22] This is what I tell designers all the time is I say your value add is not getting the forms on the [31:29] on the website there it's not getting the buttons in the app it is that last 10 that really differentiates an app [31:37] And I still think there's this great place for human creativity and craft and innovation in that space. And so I hope the designers that are listening. [31:47] you know, look at this app and they go, I know what the 10% is. And then they bring that to their companies or their projects. [31:53] Yeah. It's like, just looking at this app, there's things that annoy me. And I'm like, oh, this is like the last 10%, but it works. I should do other things. Cause. [32:00] She's got to keep shipping right as one person. Oh, my gosh. You're giving us PMs and our love for MVP is a bad name because you know those engineers and designers always want to finish that last 10%. Yeah, yeah. [32:13] I think as a PM, when you do these side projects, I think it also makes you communicate better with your engineers and designers just because... [32:20] You know what they go through. And like, when you go back and bring this context back, you can just have much better conversations. [32:25] by doing these side projects too. [32:28] Great. I completely agree. Well, Terry, this has been [32:31] So fun. We are going to do a couple lightning round questions and then get back to your dumbbell shrugs. [32:38] My first question is... [32:41] The thing that I was struck with at the beginning of this podcast is... [32:45] the sort of like Xcode, cursor, rebuild flow. And so... [32:50] If you could make an ask out there on behalf of all the mobile app developers to anyone thinking about AI software coding tools like Cursor or any of the agentic workflows,

33:02-34:33

[33:02] What's your ask? [33:05] Anything that lets me know what's going on in the mobile, [33:08] One example is there's no network tab in Xcode, so you don't actually know what traffic is going in. So it makes it hard to debug. I have to then do print statements, which gets very old school and annoying to do. [33:19] Got it. So just basic quality of life improvements for mobile. [33:23] Mobile engineers. Do you feel like the LLM models are pretty good at... [33:29] you know, mobile languages? Do you feel like you're getting high quality code output when you're developing for mobile? I've heard a lot from users that [33:37] You know, these LLMs are really well trained on some ecosystems and languages and less so on others. Have you had? [33:44] Any challenges there? You feel like they're pretty good. [33:46] I haven't had issues yet. I think where I have issues is if it uses an older library or kind of way to describe the language. But other than that, it's been okay. [33:53] Because I think these tools now can access the docs. You could use websites. So... [33:57] You can kind of figure it out from there. And I think [33:59] They'll just get smarter over time. So I haven't seen that. [34:01] If you're an issue right now, yeah. [34:03] Great. Okay. And then my last question, you're so organized. So maybe you never have this problem, unlike me, who is very disorganized. [34:12] But when the LLM is not listening, when it's making 900 line. [34:16] uh code files instead of 200 line code files what is your tactic [34:21] for getting an LLM back on the right track. [34:25] Uh, let's see, I will use a lot of Git commits. [34:28] And then that's my fallback, basically. I'm almost overly committed to that.

34:34-36:14

[34:34] So you are just bread crumbing along the way each change. So you do risk mitigation. [34:40] as opposed to redirection. So you're like... [34:43] Every little change, you're doing a git commit. So if it ever gets off track, you can just go back and reset. [34:49] Yep. Every three tasks, there is a good commit before after. And that's how I know I can let it rip because I have that risk mitigated, right? [34:56] Oh, come on, you gotta live. You gotta do like a 15 file... [35:00] plus 2500 lines minus 74 line commit. You gotta live my friend. Yeah. Uh, [35:09] See, here's where we can show we're just very different people. Red, blue, fire, ice, you know. [35:15] hot AI coding YOLO, [35:18] very controlled get commit coder. Okay, well, this is very fun. Terry, thank you for showing us your flow. I think this is really useful. [35:27] For anyone coding in these tools, for PMs looking how to get started or apply their process, [35:33] And then for people stuck on the subway thinking about how they can make their next app. [35:38] Where can we find you and how can we be helpful? [35:41] Yeah, you can find me on LinkedIn or on X. It's me, Terry Lynn. [35:45] Amazing. Thanks so much. Thanks so much for watching. If you enjoyed the show, please like and subscribe here on YouTube or even better, leave us a comment with your thoughts. [35:56] You can also find this podcast on Apple Podcasts, Spotify, or your favorite podcast app. Please consider leaving us a rating and review, which will help others find the show. You can see all our episodes and learn more about the show at howiaipod.com. See you next time.

Want to learn more?