Live Coding - Oh My Posh - Visual Configurator! Hello 2026! Let's Go!
James Montemagno
3:24 All right.
3:25 What's going on?
3:26 I think this is working.
3:28 Uh, let me know if you hear anything at all.
3:32 Basically, hopefully you do.
3:34 Hopefully you do.
3:34 That's just me talking into the void.
3:36 I'm able to control a lot more this time around.
3:40 I can actually see the chat.
3:42 I have a new Elgato prompter.
3:45 got new setups, new microphone coming, new wavelength stuff.
3:49 I don't know how anything works basically,
3:51 but I can look directly into the camera,
3:55 but happy new year wherever you're at in the world.
3:58 It should be 2026 at this point, so hopefully some people woke up.
4:03 I woke up early cuz I give my dog insulin every morning, so kind of had to.
4:09 But hopefully you hear a little bit of stream beats in the background.
4:13 Let me know.
4:14 Hope you hear me in the background.
4:16 I didn't actually do a test beforehand.
4:24 So, let me know.
4:25 There's about 20 or so people.
4:27 So, give me a thumbs up if things are going.
4:32 I should probably also do live chat.
4:35 There we go.
4:36 I can see everything.
4:37 And then, can I give away if you're here early?
4:42 Let's do it.
4:44 I can do it.
4:45 Yeah, let's do it.
4:46 There you go.
4:47 Let's see if that kicked on.
4:52 There we go.
4:53 Perfect.
4:53 You hear early I can't read too much of what's actually happening.
4:57 I can make this a little bit bigger.
5:00 I decided to redo my entire setup and I don't know if that was a good idea.
5:06 Uh live thanks uh love.
5:08 Thanks uh for the thumbs up there.
5:10 Perfect.
5:10 Cool.
5:11 Yeah, I don't actually know if uh I love or hate my new setup.
5:19 We'll see.
5:20 I got a whole bunch of stuff going on.
5:22 I don't understand how to do anything basically anymore.
5:26 I barely woke up this morning.
5:29 So, awesome.
5:30 Sheldar, thanks for the thumbs up.
5:32 Appreciate it.
5:33 Awesome.
5:33 Well, happy new year.
5:34 Uh we got some coffee, fresh brew, fresh roasted by me on New Year's Eve.
5:42 It tastes pretty good.
5:43 It's a canyon.
5:44 It's very delicious.
5:46 Uh well, I hope everyone celebrated and was safe and sound.
5:51 Uh we had a very chill night.
5:54 We No, incorrect.
5:57 We did not finish Return of the King.
5:59 We're going through all of the Lord of the Rings
6:02 movies uh because my wife had never seen all of them.
6:05 and I only own the extended editions,
6:07 which means we're watching 18 hours of Lord of the Rings.
6:13 So, we are we are through my favorite, Two Towers.
6:18 Uh I'm not really a huge Lord of the Rings person,
6:21 but in general, it's it's pretty good.
6:24 Um and we are one hour away or 30 minutes because there's
6:30 30 minutes of credits for the rest of Return of the King.
6:34 So, it's been a fun adventure, if you will.
6:42 But [clears throat] anyways, hope hope everyone's been coding, doing some stuff.
6:46 Yeah, let me know at any time if you need me to adjust anything.
6:50 Music levels, if you need me to adjust audio levels,
6:53 I can dial it in uh over here.
6:56 I've been using Where's it at?
6:58 I'll bring up might bring up my screen.
7:00 Nope, not that one.
7:02 I have too many things.
7:02 I'm using wavelength.
7:04 Let me show you this shenanigans.
7:07 That should work.
7:08 There we go.
7:09 I got transitions and I got little James.
7:11 Whoa, there's a meme.
7:12 This is a wavelength.
7:13 So, like I can control how much music I hear.
7:19 So, like that's my percentage, which is crazy.
7:22 But then I can also hear what you're hearing.
7:26 So, I hear right now everything that you're hearing, I think.
7:33 I think we'll see.
7:34 And then I can hear what I'm hearing, which is much louder audio.
7:41 Uh, and a little bit of James back there.
7:44 Awesome.
7:45 Glad everything's good.
7:46 Well, glad everything's good.
7:47 And I hope everything's good with you and your new year.
7:49 We're going to do some coding today.
7:52 Been doing some holiday hacking.
7:55 That's a thing that I've been up to.
7:57 Uh, let's put that away.
7:59 Boop.
8:00 Okay.
8:01 So, a few things that I've been up to.
8:06 Uh, is a good question.
8:09 Let's go here.
8:12 GitHub.
8:16 So, a few things I've been cooking.
8:20 Uh, first and foremost, that's me.
8:22 I'm James.
8:22 Welcome to the channel if you're brand new.
8:25 I did breach 500 repos which is crazy.
8:29 Uh let's see.
8:30 I did that.
8:31 I've been working with David on that.
8:34 Oh, I did this.
8:36 Yeah, I done a lot of holiday hacking before the holidays.
8:41 Oh, I also did this.
8:43 I was very productive.
8:45 Uh I updated every net Maui learn module to net 10.
8:50 So that was cool.
8:51 So, the first thing I did is I launched a new iOS app.
8:55 It's called uh Trim Tally.
8:57 I I'll put a bunch of links in the chat here.
9:01 Uh Trim Tally is like a weight tracking app that I built for myself
9:05 and it's just all local weight tracking goals
9:09 up down whatever you want up to you.
9:12 And this is my experiment with uh Swift development.
9:16 So, just log in.
9:17 You can back it up with iCloud just for iPhone.
9:20 That's it.
9:20 pretty cool.
9:21 And I built this website and then oh PDF diff.
9:26 Yes, I had this need to create a diff for two PDFs.
9:35 [laughter] So, we were working on some contracts and I was like,
9:39 I know that probably this website exists in general,
9:48 but I'm like, I bet I could build it.
9:52 You know what I mean?
9:53 So, that's kind of what it does.
9:56 So, you upload two PDFs.
9:58 So, I'm not going to upload the ones here,
10:00 but you can see this like side by side diff of the PDFs.
10:04 It's just local, no AI.
10:06 It's built with AI, but no AI.
10:09 Everything local in browser, just a static web page.
10:12 Nothing crazy.
10:13 You can see like a unified view of the page.
10:16 Page one, page two, all the pages if you want.
10:21 So, kind of crazy.
10:23 Um, built that and then Oh, yeah.
10:27 Yeah, copy this link.
10:30 Uh, private offline first fire calculators.
10:33 I built this maybe right before the break,
10:36 but for people that are like in financial independence, like retire early,
10:41 I built these uh calculators so you can and like you know savings,
10:48 withdraw rate, debt payoffs, you know, recommended books, recommended apps.
10:54 It's all like in browser.
10:56 So, you could be like, "All right, well, like I wanna I'm 40 almost.
11:01 I want to retire at 55." And there's some like defaults.
11:05 They're like show you what your portfolio would be
11:09 like and like when you potentially could hit fire,
11:13 which would be this would be 664.
11:16 So, you need to then say, "Okay, well, I'm going to contribute 30.
11:21 All right.
11:21 I'm going to need to maybe, you know, you know,
11:23 kind of move this around to try to hit your numbers,
11:27 uh, as well, which is kind of cool.
11:29 Let me put that in the chat.
11:30 That's what I've been up to.
11:33 Fire number.
11:35 Uh, oh, I built a website for the skiing app that I have.
11:41 Yeah, this one.
11:44 There we go.
11:44 There's like a skiing app that I just updated finally to Dina 10.
11:49 So, I was I did it.
11:51 I did it.
11:52 It happened.
11:53 I'm I'm waiting for um ah this is the website.
12:00 I don't know why my zoom is so far out,
12:03 but anyways, I got a little snow falling.
12:05 It seems to be hovering right at the top like not
12:09 not on the Z like or the X above or Y.
12:16 I was like, I need a website.
12:17 Let's go.
12:18 Let's just build it because if you can think about it, you can dream it.
12:24 And then the last thing is the thing that I've been
12:27 working on that I was going to continue to work on today,
12:29 which is this Oh My Posh configurator.
12:33 Have you never seen Oh My Posh before.
12:36 Let me open up my terminal.
12:38 Yep.
12:38 Cool.
12:39 All right.
12:41 All right.
12:42 Cool.
12:42 Let me know if you can see that.
12:43 Probably Windows, Mac, wherever.
12:48 So, for example, let's do uh oh my posh cdeex github
13:00 slash I guess I'm in oh my or let's say yeah.
13:05 All right, cool.
13:06 So, let's say I cd into this directory.
13:10 It's going to show me a bunch of stuff.
13:12 So, it's going to show me uh first and foremost like me,
13:18 what day and time it is,
13:21 that I'm on the main branch, the version of .NET 10 it's using,
13:25 I can see the directory, I can see my GitHub usage,
13:29 and then this little heart shows me like if it's doing well or not.
13:33 So, it's a way to customize your terminal,
13:35 and you get these little cool little fonts here.
13:38 But everything from that is configured.
13:43 Let me see if I can figure out where it's at.
13:46 I think I have it here.
13:48 It's all configured in a JSON or TAML file or something.
13:54 Let me file close folder file open.
14:06 There we go.
14:07 So it's basically a bunch of JSON, right?
14:11 So I know.
14:15 So here's like the JSON and this there
14:18 segments and here's like a session segment.
14:22 I can't make this bigger.
14:24 Come on.
14:24 Come on.
14:26 Here's one for get.
14:28 And you can see there's like logic
14:30 like upstream icon branch status like if conditionals.
14:35 So you can go to oh my.dev and then you can do
14:39 that but [music] you could also now come over here import paste configuration.
14:47 Let's see if this works.
14:48 I just tried it.
14:50 Okay, cool.
14:51 It did work.
14:51 Oh, it did work.
14:52 Cool.
14:52 Nice.
14:53 So then you can see with this drag and drop UI cuz I'm a gooey person,
14:58 not a terminal person.
15:00 Oh, you can see the UI fully.
15:05 So here we have uh a little preview.
15:07 It actually use like mock data.
15:09 So it's going to show you some of the like
15:12 mock template that you have and you can
15:14 click on one and then you can see like you can say oh I want to browse the nerd
15:20 fonts that are here and I could you know navigate around and say oh I want music
15:25 or data and storage or you know programming language
15:31 right there's node and o camel and all those things.
15:34 So you can see all of them on here.
15:36 So you could easily paste them in there
15:38 and your little template that's over here.
15:41 And if you don't want it to be white,
15:44 you could have it red and updates, you know, in real time.
15:48 You have these different like styles, too.
15:52 So you could have these little styles that are
15:54 going on and all sorts of little things.
15:58 It's like a you could do like a leading.
16:01 You could be like, "Where's the where's the power
16:04 line?" And there's all these power flame left.
16:07 That do it.
16:08 Flame right.
16:09 Oh, to see if the flame should work.
16:15 Oh, maybe it doesn't work.
16:19 To double check all the icons.
16:22 Where's the No, I might have broke that.
16:25 So, that's good.
16:26 That's good.
16:27 Accordion.
16:28 Nope.
16:30 Diamond.
16:31 Diamond.
16:34 Yeah, it has like little though.
16:35 Oh, there we go.
16:36 Flame left.
16:37 Flame.
16:38 That's not right.
16:39 I have to double check some of these.
16:41 Oh, there we go.
16:42 Pixelated left.
16:43 That's definitely a flame.
16:44 I got to definitely update those those uh icons.
16:50 You get the idea.
16:51 You can kind of really customize it as is.
16:54 And then you can be like, "All right, hey,
16:55 I want the battery to be over here." Now you got the battery, right?
16:59 So, boom.
17:00 And you get this little mode.
17:01 You can see what it looks like on a light,
17:03 dark, etc., etc., which is pretty cool.
17:06 So, there it is.
17:07 It's going to do is like best.
17:09 So, let me do plane and then plane.
17:14 So, if I really wanted that, I could take it.
17:16 I can now uh view the config down here.
17:20 I could share it.
17:22 So, you can actually, you know, copy it and I can bring it back.
17:27 So if I wanted to I added the battery which I don't have a battery.
17:34 So let's do boop connection.
17:40 Boop.
17:41 Okay, let's do that.
17:44 And then if I do copy come to here paste
17:50 it in exact Z then just hit I should refreshed it.
18:10 That's a double check.
18:13 That should have Where is battery?
18:15 Oh, no.
18:16 If I [music] Oh, connection.
18:18 There it is.
18:19 That should have done it.
18:21 Oh, that's cuz it defaulted to name.
18:25 Okay.
18:25 Yeah, cuz I don't have that name.
18:27 Okay.
18:28 So, I could look here and see the template should say SSID, but there's type.
18:35 That's what I want.
18:36 So, I'd want type.
18:37 There we go.
18:39 which also is Wi-Fi.
18:40 So, that's on me.
18:44 Still working through a little bit of bug.
18:47 Let's see if this work.
18:49 I shouldn't have a day because it's uh I still didn't pull pick.
18:58 I don't know why it didn't pick it up.
18:59 I have to look at it.
19:00 It should show up.
19:05 All right, I'll figure that out.
19:07 I'm still not a oh my posh command line expert, you know what I mean?
19:12 So anyways, I want to work on a few things.
19:15 So that's what we're going to do.
19:16 Uh and I'm also going to work on this website.
19:18 So let's go to here.
19:23 Let's go to here and let's go to simple browser.
19:29 Cool.
19:31 Got it.
19:32 Okay.
19:33 So, this is a simple browser.
19:37 I wish I could zoom in.
19:39 Oh, but you can't yell at Josh about that.
19:45 So, I did a few things yesterday.
19:48 The first thing I did was I did a tutorial.
19:52 I'm kind of interested to see if that works.
19:55 So, edit a tutorial and we can take a look at the PR here.
20:02 And let's see.
20:03 Hey, happy new year, Smart.
20:04 Good to see you.
20:06 Good to see you.
20:07 All right, so I asked for like
20:09 a onboarding because I think some people were kind
20:13 of getting confused like how to use these modes
20:19 and what they're doing and then people are like,
20:20 "Oh, it's not 100% exactly correct." So, I wanted to do a little popup.
20:27 Oh, nice.
20:27 Okay, let's take a look here.
20:32 Let's do Let's check it out.
20:36 Checking it out.
20:40 Okay.
20:41 Well, there it is.
20:42 Cool.
20:44 All right.
20:44 Oh.
20:45 Ah.
20:45 Okay.
20:46 Ah.
20:46 Okay.
20:48 Okay.
20:48 Cool.
20:49 So, it is zoomed in um with because I have PS code zoomed in.
20:53 So, if I zoom this out, I say this X is a little not placed right, but whatever.
21:00 Uh, visual tool.
21:02 Let's take a quick tour.
21:04 Brows the end elements.
21:06 Next.
21:07 Cool.
21:09 Live preview.
21:10 All right.
21:14 Amazing.
21:15 Cool.
21:15 There's zero changes I want to make to that.
21:18 Ship it.
21:18 Let's ship some Let's ship some features.
21:21 Uh, cool.
21:22 Uh, ready for review.
21:25 Let's squash.
21:28 Bam.
21:30 Bam.
21:33 That feature is now live.
21:35 So, oh, I should probably give you a link to the website.
21:55 This is the repo.
21:59 And then this is the thing.
22:05 Just a static way.
22:06 I'm going to work with Yan maybe to actually make it real.
22:09 Making it real.
22:11 Okay, cool.
22:13 Well, feature shipped.
22:15 All right, cool.
22:16 [music] Uh, what else we got?
22:19 Oh, uh, I can delete that branch now.
22:29 I'm a big fan of this big delete branch
22:31 because it will delete both remote and local branches
22:36 which I appreciate cuz I never know how
22:38 to do that and then it just brings you back.
22:40 I wish it would also pull but it doesn't know.
22:45 It doesn't know.
22:46 It doesn't it doesn't know.
22:49 Oh no.
22:52 Spilled some coffee.
23:01 Okay.
23:02 All right.
23:05 And this app is just a React Node app with V.
23:12 So, just cuz I'm lazy and it does a good job.
23:17 Okay.
23:18 So, now we have no onboarding.
23:20 The other thing I asked it to do last
23:22 night before I went to bed was add tool tips.
23:27 Cuz I realized that you didn't really get tool tips everywhere.
23:35 Like here, if I hover, does it show me tool tips here?
23:44 Let's see.
23:51 Oh, that just did the Oh, it's here.
23:57 Okay.
23:59 Yeah.
23:59 What I noticed was [clears throat] if you like hover,
24:06 it's like now I get a tool tip,
24:08 but I also noticed that you may not know or I might get cut off what these are.
24:16 like, oh, I don't know what, you know,
24:19 these certain things are like what they show.
24:22 So, I wanted to add tool tips.
24:24 So, how this is structured is if I go over here,
24:32 pull this over is we have um this public folder and I have configs.
24:42 So, I have these community configs.
24:45 So you can add your own.
24:46 If you're like, "Hey, here's my my Posh theme or whatever." You can add it.
24:51 And I have some samples.
24:53 So for example, here you can go to sample configs.
24:58 Yep.
24:58 Oh, that loaded a little slow.
25:01 You can tap on this and you can see it.
25:03 So here's like uh minimal dev here.
25:07 I don't know.
25:07 They I made it a streamer.
25:09 So here's my Spotify time git text file a cloud
25:15 engineer that has like the AWS stuff uh full
25:20 stack there's like every you know these aren't always
25:24 going to show but they're going to show if you're
25:27 in a net directory for example and then like
25:31 here's Kayla's boop there you go so that's the one
25:34 that I've been rocking which looks pretty good uh which
25:38 is good But uh those are being loaded from there.
25:42 And then all these segments are also being loaded from here.
25:47 So if I tap on this, we can see that we have like the angular one,
25:54 the Argo CD, Aurelia, Basil,
25:58 and this contains information that's being visualized
26:02 over here and all the different things.
26:06 So we can see description and and things but there
26:09 so there is there is uh information here uh on it.
26:14 So let's see uh oh yeah so I wanted tool tips.
26:19 Let's see if I did it very minimal.
26:21 So six lines of code.
26:23 Cool.
26:24 Let's see.
26:24 Uh well that's easy.
26:28 All right.
26:28 Yeah.
26:29 Oh my perfect.
26:30 I did ask it to do like the name and then the description.
26:37 Perfect picker.
26:39 Cool.
26:39 Easy.
26:40 Wow, that is easy.
26:46 Let's see.
26:47 Uh, cool.
26:48 That's probably I don't think it does the tool tips inside of VS Code.
26:55 So, let me open the browser.
27:01 Oh.
27:04 Ah, there we go.
27:06 Cool.
27:06 It did do double.
27:10 I wish it was a little bit more visual, but that's okay.
27:18 Better than nothing.
27:19 A little bit more accessible.
27:21 Path project.
27:23 Cool.
27:23 All right.
27:25 It's pretty self-explanatory, but I guess if you were in like uh yeah,
27:31 maybe I could Okay, let's do this.
27:35 Uh cool.
27:38 Uh let's go to a new local agent.
27:42 I'll say cool.
27:43 Let's improve the description.
27:47 Description description for each of the segments.
27:57 Sements segments.
28:03 There we go.
28:03 Wait, where's my folder?
28:08 sometime.
28:24 Yeah.
28:24 Segments [music] in the public folder to be a bit more verbose.
28:32 All right.
28:32 Who do we want?
28:35 Actually, I'm going to make sure that I don't show something.
28:41 Let me just double check my models.
28:44 Oh gosh.
28:45 James, don't leak secrets.
28:48 Okay, that's off.
28:50 Oh, you know what?
28:51 I definitely want to try.
28:54 All right, that looks good.
28:55 All right, a little worried.
28:57 All right, cool.
28:58 All right.
28:58 Uh, Eleanor told me to try out Flash 3.
29:04 That commits are free.
29:05 Let's do it.
29:06 Okay, I trust you.
29:08 These are really big JSON files.
29:10 Um, I need to figure out how to reduce those.
29:15 Oh, wow.
29:15 The sub agent pretty good.
29:17 It read like all the lines.
29:19 Wow.
29:19 Okay, it's going to town.
29:25 Let's hope everyone's enjoying.
29:27 No, let me know if you have any questions.
29:29 I'm here for you else I'm just coding.
29:30 I would have been coding anyways.
29:34 We want to have some time off.
29:36 We had yesterday off and today we tried a new restaurant.
29:40 That was fun.
29:42 We were the only ones there, but that's okay.
29:44 [laughter] So, all right.
29:47 Flash.
29:48 Wow.
29:48 Oh, let me Watch out.
29:50 Sorry.
29:56 It's go.
29:57 It should be going line by interesting.
30:06 That's not bad.
30:07 Cool.
30:08 Like ideally it should Yeah.
30:11 Win in a Basil project.
30:14 Yeah.
30:14 I kind of want it to Oh, okay.
30:19 That's good.
30:20 Displays the current server.
30:21 Okay, perfect.
30:22 Yeah, cuz it should be smart enough to be like,
30:24 "Here are the things that are in it." Oh, I like that.
30:29 Nice.
30:30 Anyone else do anything fun for New Year's?
30:33 I did stay up till midnight, but then I didn't realize it was midnight and then
30:38 I brushed my teeth and I missed the ball drop, so we rewound it on the DVR.
30:44 Oh.
30:44 Oops.
30:46 That's my bad.
30:48 This better.
30:49 Okay.
30:56 Now hopefully if this is reloading we should get better.
31:09 I don't know what all it's updated.
31:11 Let's look.
31:15 Okay.
31:15 Yeah.
31:16 So we get better displayed information inside there.
31:19 Perfect.
31:23 Nice.
31:25 How do these little expand collapse?
31:27 I also need to fix these icons.
31:32 Yep.
31:35 I'm going to do it in in here cuz I'm not going to wait.
31:38 So, uh let's let's fix up the icons uh that are being used
31:47 for input import file or paste in config is show up as missing.
31:59 Okay.
32:00 Always be agenting.
32:02 Okay, cool.
32:02 It did all these.
32:04 Amazing.
32:05 Keep keep them.
32:08 Let's commit those.
32:10 Cool.
32:12 Okay.
32:12 Gemini three flash.
32:13 Not too bad.
32:14 It's reading.
32:15 That's doing stuff.
32:16 I like that.
32:17 Okay, that's good.
32:19 Oh.
32:25 Ah, lovely.
32:29 Oh, you know what I need to do?
32:36 I need to do a new chat and then I say say let's
32:39 update the pull request on the new for nerd fonts and it's required.
32:55 Oh, it's running a llinter.
32:57 Okay, I see you.
32:58 I see you.
32:59 Oh, wow.
33:04 That's amazing.
33:05 Okay, cool.
33:07 Let's keep Let's double check.
33:10 Boop.
33:13 All right, that's nice.
33:17 Good work.
33:18 I'm proud of you.
33:19 View config.
33:21 Share.
33:24 Cool.
33:24 Oh, nice.
33:25 All right.
33:26 I like that.
33:27 Cool.
33:29 That's good.
33:30 Keep.
33:30 All right.
33:30 Cool.
33:31 updated this.
33:34 Beautiful.
33:42 Oh, it's updating all sorts of stuff.
33:44 Wow.
33:45 Okay, dude.
33:45 This is a good model, dude.
33:48 Honestly, I I was sleeping on this model cuz it's a 33 multiplier.
33:54 Holy crap.
33:59 Yo, what models everyone using?
34:00 Just everyone using Sonnet and Opus.
34:02 I've been using a lot of those, but you got to wait.
34:08 I don't got time to wait.
34:11 That's pretty good.
34:13 Look at that.
34:13 Wow.
34:14 Oh, that's impressive, dude.
34:17 That's good.
34:18 Okay, I'm just putting a lot into this pull request.
34:23 That's pretty good.
34:24 That's pretty.
34:25 This how so how mostly my stuff looks all the time.
34:31 I think this is done.
34:33 Close it.
34:34 Close off.
34:35 All right.
34:36 What else you got going on?
34:40 I guess I should look to see what it changed, but Oh.
34:44 Oh, yeah.
34:45 Uh oh.
34:46 Yep.
34:46 Uses map request architecture.
34:49 Oh, nice.
34:50 I was using lucid icons,
34:52 so now I'm using the nerd fod icons throughout the entire up.
34:55 That was a big refactor, which sucked.
34:58 Yeah.
34:59 Oh, nice.
35:00 Wow.
35:01 Wow.
35:02 Cool.
35:03 Did so good.
35:04 Okay, let's let's get this puppy in there.
35:08 Okay, so I think this is good.
35:12 And let's go into our P requests.
35:20 Uh oh, that's really good.
35:21 Okay, let's see if it resolve conflicts.
35:28 [sighs] No, just the one.
35:38 Okay.
35:40 Uh AI co-pilot except incoming.
35:54 Oh, except combination.
35:59 Whoa.
36:01 All right.
36:04 Now, now what?
36:06 I forget how to merge.
36:09 Accept.
36:10 Uh-huh.
36:10 Uh-huh.
36:12 Uh-huh.
36:13 Uh-huh.
36:15 Uh-huh.
36:15 Okay.
36:16 Do I close it?
36:18 Save.
36:23 Commit.
36:24 Okay.
36:24 Ah.
36:27 I don't know how to merge anything.
36:29 Oh, that can't be right.
36:30 Uh, the refresh.
36:35 No.
36:36 Okay.
36:37 I do want to do something.
36:39 Uh here we're going to squash here.
36:42 Okay.
36:43 And then we're going to delete this branch.
36:47 Get out of here.
36:48 And then I want to set up linting.
36:51 Trying to set up VS Code for Swift.
36:52 Have you ever tried it?
36:53 Dude, Billy, I have, bro.
36:57 I built trim tally completely in it.
37:01 [music] Um, so if you go over to me and you go to Oh, it's funny.
37:09 I have 416 but 500 private.
37:14 Go to this repo here.
37:17 I actually have a blog post.
37:19 Uh, check this out.
37:21 If you go into this one, uh, docs.
37:34 Yeah, check this out.
37:35 I wrote a blog.
37:36 Blog right here.
37:37 Boom.
37:39 Bam.
37:40 I should probably do that.
37:42 So I talk about the MCP servers extensions I use how
37:47 I set it up for debugging how I built this thing how
37:51 I do setup CI CD just use Xcode cloud probably if you're
37:56 doing just my dog [music] just slammed her body on the ground.
38:03 Um what I do is I'll do quick validation builds
38:08 in GitHub actions so they're super quick and then I will do
38:11 and like tests and then I will do Xcode cloud for like
38:16 the distribution stuff but yeah I was inspired by Pierce on that.
38:23 So yeah uh one Yep.
38:27 Okay cool.
38:28 So let us let me pull and then I want
38:32 to do this new branch uh lint all the things.
38:38 Okay, perfect.
38:39 All right.
38:40 I want to set up I would like to set
38:49 up a new uh pipeline for GitHub actions that runs
38:55 a npm run build and also does linting as well
39:01 and fails if it does any linting issues at all there.
39:09 Cool.
39:15 Uh, on Windows, no, I mean you can do like this.
39:21 You can do the Swift stuff, but the the Apple Docs MCP will obviously work.
39:26 Um, and then the Xcode cloud, that's not going to work.
39:32 You could like SSH into it.
39:34 I think that works probably.
39:36 I don't know.
39:38 Uh, it' be a little bit tricky.
39:40 Look at all these linting errors.
39:42 Oh my gosh, that's bad news.
39:47 Um, so you could do the work, but you're not going to like run the app, right?
39:53 So, you should probably just do it from your Mac.
39:54 Yeah.
39:58 See what it's doing.
40:00 It's verifying.
40:00 Oh, cool.
40:01 Okay.
40:02 Uh, yep.
40:02 Perfect.
40:03 CI did a CI.
40:08 Okay, cool.
40:08 It's going to do it on any push, every pool, checkout.
40:12 Yeah, that's so easy.
40:15 Oh, interesting.
40:16 All right, validate configs.
40:19 Deploy.
40:20 Yep.
40:20 Cool.
40:21 All right.
40:22 Uh, keep All right.
40:23 Let's fix all linting issues.
40:30 I believe in you.
40:34 Yeah, but for example, Billy, like what I've been doing is my stangle.
40:44 What I've been doing is like if I need to make
40:46 tweaks or things like that, I have that set up.
40:48 And then if you're using GitHub actions or you're using
40:52 Xcode cloud build just whenever you like push to main you
40:57 can have a build and then you know get a build
41:00 on your iPhone and test cloud or something like that.
41:02 And it's the same thing I do with my Maui apps like whenever
41:05 I build I have a GitHub action for that that I stole from Frank.
41:11 And then um the other thing that uh I do
41:16 is just I push to yeah test cloud every time
41:19 just cuz it makes it easier to actually like test
41:21 and run the applications which is really cool uh afterwards.
41:25 So especially if you're like out and about or you're doing
41:28 a cloud agent for example you kind of can just do that.
41:36 All right.
41:36 I like that it's linting away.
41:40 Every day I'm linting.
41:41 Okay.
41:44 Wow.
41:44 It's got all sorts of issues.
41:48 I should have put that in there, too.
41:50 Oh, maybe I'll do this.
41:54 Do let's update let's update our copilot instructions to make
42:02 sure we run the llinter after every finish chat.
42:13 Oo slow James.
42:21 Yeah.
42:21 else.
42:22 [clears throat] The best way to just still do like
42:27 iOS development on Windows is going to be your Maui stuff.
42:30 So, yeah, definitely going to test this cuz I'm like,
42:39 I don't know if I trust fixing all the linting issues.
42:43 I trust it.
42:44 I swear.
42:45 Uh, seems to be working.
42:49 Okay, cool.
42:51 It does save.
42:52 What is it saving in my browser?
42:56 Let's try this one.
43:00 I'm going to close the other ones.
43:01 That way I'm not Oh, no.
43:21 No.
43:22 Onboarding tutorial completed.
43:26 Yeah, as a config.
43:27 It just saves the entire config.
43:31 Interesting.
43:32 Okay.
43:38 Yeah, Billy.
43:39 Uh, yeah.
43:40 If you like what I would do if I were you, I go to apple.com.
43:47 I would go to Mac [music] and then I would buy this puppy.
43:52 I would just buy Why is the buy button like not just there?
44:00 Just buy this Mac.
44:01 You can get one at Costco.
44:03 Like you can just buy this one.
44:05 Just buy this one.
44:06 It's totally fine.
44:08 16 jigs.
44:10 Maybe by this one.
44:12 But let's customize it.
44:18 Yeah, probably them.
44:20 You don't even need you probably want the thousand one.
44:25 I mean, the thing is if you go to cost, let's go to slick deals.
44:32 Slick deals and go Mac Mini.
44:38 Yeah, I mean that's cra $400.
44:43 What?
44:44 Uh, newest hide expired.
44:49 Okay.
44:49 Like you can get these puppies for like 500 bucks, 400 bucks.
45:00 Just do that.
45:00 Now what I do is I also run like VMware Fusion to do Windows on here too.
45:09 Now I have uh the Pro model,
45:13 but I think like I do most I do most of my iOS development on uh this over here,
45:22 this MacBook Air M1.
45:28 Uh how much RAM does this have?
45:29 Okay, let me let me do I'll do a comparison, Billy.
45:33 This puppy about this Mac 16 gigs of RAM, it does just fine.
45:43 24 better obviously, but yeah.
45:52 So, I mean that that's what I think like I would probably if you get this one.
45:57 Awesome.
45:58 Uh you don't need the like if you just have one if you
46:03 just have like I have a contract but you're not going to do
46:06 all your work over there just like yeah just do it right here
46:09 on this little guy and then you can get like a hard drive attachment.
46:14 I [snorts] still think 512 is probably better.
46:18 Let's just like be honest about it.
46:20 Um, but you could pick up one for so cheap.
46:23 And sometimes they got like uh let's see if I got like 512 jig.
46:41 I think you get like Yeah.
46:42 H what?
46:43 Yeah.
46:44 If you got No.
46:45 Uh this one 850 micro center.
46:49 That's pretty good.
46:51 That's pretty good.
46:52 Okay.
46:53 Uh, that's good.
46:56 Cool.
46:57 Did it finish?
46:58 I don't even know.
46:59 I don't even What is code?
47:01 Oh, it did it.
47:02 Okay.
47:03 Keep Let's see what it actually did.
47:08 Let's read.
47:10 Okay.
47:11 Fix the React hook pattern removed.
47:13 Use effect that was synchronously resetting state.
47:15 Components now conditionally rendered.
47:17 Oh, nice.
47:18 Resets the state with each mount.
47:20 Initialize dismiss from global storage instead of using effect.
47:25 Cool.
47:26 The resolve type updated.
47:28 Mhm.
47:33 Okay.
47:34 Ah, variables that are intentionally destructed but are unused.
47:42 I see you.
47:46 Well, this is good because like here any unknown, you know,
47:56 I was also interested in put back in my retainer.
48:16 One second.
48:30 All right, let's see.
48:33 Uh, this should be good.
48:36 Yep.
48:36 Oh, cool.
48:38 Validate testing changes.
48:42 Okay.
48:51 Uh, you know what else I should do?
48:53 Um, it's interesting.
48:55 Oh, yeah.
48:56 Okay.
48:57 Can we update our copilot instructions to outline some
49:05 best practices here so we don't run into them again.
49:12 Keep it relatively short.
49:16 Ah, Gemini 3 flash.
49:19 That's fast.
49:20 It's a flash.
49:30 Let's see what else it did.
49:31 Is it a lot of these?
49:34 That's good.
49:36 It should have tried to actually do Interesting.
49:45 Let make sure everything's still working.
49:48 Reset.
49:48 Let's do All right.
49:58 I see you.
50:15 Looks good.
50:17 Import share.
50:23 Looks good.
50:24 View freaking pick.
50:27 I like that.
50:28 Okay.
50:29 All right.
50:29 I see you.
50:30 What else did you change?
50:37 Oh, cool.
50:38 Nice.
50:41 Okay, let's commit.
50:45 Publish branch.
50:46 Let's create the PR.
50:48 I put on branch stuff.
50:52 So, there's that.
50:55 Let's create.
50:59 I guess I need to make sure I pass my own validation.
51:02 That's for sure.
51:03 That is for sure.
51:15 I want to make sure also that Yeah.
51:20 Okay.
51:27 Cool.
51:28 That looks good.
51:34 Nice.
51:35 Okay.
51:36 That looks good.
51:38 That uh I wish it refreshed correct.
51:42 Let's squash and merge.
51:46 Yep, that's me.
51:47 Okay, let's delete that branch down.
51:54 All right, close all.
51:55 All right, let's do the other thing I wanted
51:58 to do was like minify minify uh uh completed builds.
52:11 Cool.
52:12 Well, so one thing I'm interested in is
52:16 as I mentioned earlier when you're doing stuff
52:22 in this app like if I go into let's go into F 12 and then let me zoom in.
52:36 Yeah.
52:36 Okay.
52:38 No, maybe not that far.
52:39 Okay.
52:39 So, if I zoom in and I go to refresh this thing.
52:49 Uh, what I'm interested in.
52:52 Is it still running?
52:58 Oh, it is.
52:59 Okay.
53:00 I was going to say all right.
53:05 Cool.
53:07 Okay.
53:08 What I was gonna look at Yeah.
53:12 See, it's like you have I think some big files.
53:19 Yeah.
53:20 One.
53:20 Wow.
53:22 Content CSS.
53:25 That's big.
53:35 Well, so we're not there.
53:37 What software do you use to remote your Mac?
53:40 What do you mean there?
53:42 What do you mean remote?
53:43 Oh, like to a tunnel or what do you mean like SSH?
53:47 But here, all these files are kind of big and they're not minified.
53:52 So, we could definitely minify those.
53:57 I see.
54:00 I guess if I refresh, it's not going to grab those.
54:05 Yep.
54:06 Content CSS is so big.
54:09 Yeah.
54:09 Oh, wow.
54:11 Wow.
54:11 Wow.
54:12 Wow.
54:12 Wow.
54:12 Wow.
54:27 Interesting.
54:27 [music] Okay.
54:28 Well, so there's a few things I want to do.
54:32 I would like to say right now when we build and package
54:39 the app for deployment let's make this bigger uh the JSON files
54:48 in public don't get minified I want that to happen in the CI
54:58 build so The the hope is uh that when I publish it,
55:10 it will then like minify the JSON file
55:17 and shrink that down so it'll be like smaller.
55:23 Yeah.
55:23 Is this CSS just ginormous?
55:25 Where's my Okay.
55:32 Oh, minify.
55:35 All right.
55:36 Sure.
55:38 Yes.
55:41 This should do it on Yeah.
55:43 Perfect.
55:45 Uh-huh.
55:46 Uhhuh.
55:52 No.
55:53 Nice.
55:53 Okay.
55:59 Did it do it anyways?
56:03 Okay, let's see.
56:07 Let's do refresh.
56:08 Let's do a empty cache and refresh.
56:12 So ah uh I don't know if I did it.
56:24 When I run npm rundev will this also run this locally?
56:34 Would be nice.
56:35 Yeah that would be nice.
56:38 Uh let's see.
56:42 put an issue, Billy says, but haven't fixed it.
56:46 When you have to Oh, no.
56:51 The other one changes.
56:52 Oh, wow.
56:52 That's crazy.
56:54 I'll take a look at that.
56:55 I'll take a look at the thing.
57:05 Okay.
57:10 All right, cool.
57:12 Format JSON.
57:26 Now when you local okay npm run that is there'll be re you need to make changes.
57:35 Now when you run your local environment will match the production environment.
57:38 Can you make changes?
57:39 Okay, let's try that.
57:40 Oh.
57:42 Oh, there's the minifi.
57:43 Cool.
57:44 Oh, and it did to the other ones.
57:46 Uh, do I want it?
57:51 Yeah, I guess so.
57:54 Let's look.
58:04 Those do not seem to be Why is it Why am a bunch of times?
58:10 Control shift R I guess.
58:21 Like is it and is this just showing?
58:39 Oh, okay.
58:40 I think it's just showing that it is they must auto pitify it.
58:48 Oh, I don't like that.
58:52 preview headers.
58:55 I don't know if it Well, I can look.
58:57 Okay, so this is currently 35.
59:04 I don't know if I saved a lot.
59:06 Why is it getting downloaded multiple times?
59:14 Segment loader.
59:17 Segment loader.
59:20 H interesting.
59:23 Each JSON file each JSON file seems
59:29 to be loaded multiple times from different components.
59:33 Can we make it so things are just loaded
59:36 once so we're not downloading the files multiple times?
59:41 [snorts] Yeah, that seems bad.
59:44 If so, let's do this.
59:53 Yeah, what I could do nice uh is inspect.
59:59 Oh, and then here, let's see network.
1:00:11 It seems like they Whoa.
1:00:13 Okay.
1:00:15 Uh, interesting.
1:00:23 Why are they languages?
1:00:31 H.
1:00:48 They're definitely not minified.
1:00:52 I'm a little surprised that it didn't show it being loaded multiple times.
1:01:04 And then this one's only like 2.7 kilobytes.
1:01:08 Oh, I think because h I think because it must go through like a local build.
1:01:24 Yeah, whatever the build process is.
1:01:27 Uh, interesting.
1:01:28 I see.
1:01:29 How do I How do I test the production build locally?
1:01:40 How do I do it?
1:01:56 npm run preview.pm run preview.
1:02:03 Important note on the URL.
1:02:05 Uh does npm run preview also do a production?
1:02:20 I don't know.
1:02:34 No, I must.
1:02:35 Okay.
1:02:35 2 point.
1:02:36 So 2.4 compared to where's cloud.
1:02:44 I don't know if that actually saved me anything.
1:02:50 2.4 2.7.
1:02:53 We're talking micro adjustments.
1:02:57 Hey y'all.
1:02:59 Good to see you.
1:03:00 Hey.
1:03:00 Hey.
1:03:01 Hey.
1:03:02 Okay, that didn't really save as much as I thought it was going to.
1:03:06 Okay.
1:03:07 Oh, interesting.
1:03:11 [sighs] Okay.
1:03:12 My Maybe I need to try to shrink my content CSS.
1:03:16 Oh my gosh.
1:03:17 Millie.
1:03:22 Okay.
1:03:26 All right.
1:03:29 I see.
1:03:32 Oh, okay.
1:03:40 Mhm.
1:03:47 This looks better.
1:03:48 I don't know if I really saved a lot necessarily
1:03:51 in a lot of the every every kilobyte counts, I guess.
1:04:09 Mhm.
1:04:19 Okay, that font is very big, but when I refresh, it doesn't.
1:04:24 Okay, doesn't refresh.
1:04:27 That makes sense.
1:04:29 Uh, and then these are tiny.
1:04:32 Maybe we need to fingerprint them.
1:04:34 Should we fingerprint the CSS?
1:04:39 Okay.
1:04:41 Fingerprint the JSON files.
1:04:46 Um if they don't change, they don't get uh files on build question mark.
1:04:59 Now I'm in like micro optimizations.
1:05:01 I mean this all good.
1:05:05 Ah, no.
1:05:08 Oh, no.
1:05:09 Oh, yes.
1:05:13 I don't want I don't want that.
1:05:17 I see.
1:05:20 Yeah.
1:05:20 [sighs] I didn't do Hey, happy new year, Fahim.
1:05:33 I'm going stop this.
1:05:36 I think let me roll back.
1:05:40 Okay.
1:05:42 I think uh Okay.
1:05:43 Okay.
1:05:44 So, locally we don't want to minify at all.
1:05:50 We want to uh we want only the files
1:05:59 after they are moved into a build to be minified.
1:06:08 If that makes sense.
1:06:11 Yeah.
1:06:11 I think that it's I don't need it to Oh, I've created scripts.
1:06:19 Yeah.
1:06:20 Yeah.
1:06:21 Uhhuh.
1:06:22 Build node minifi disc.
1:06:24 Yes.
1:06:35 Oh, that's cool.
1:06:37 It like re I like.
1:06:39 Oh, that's cool.
1:06:45 Okay.
1:06:47 MPM run.
1:06:48 Okay.
1:06:48 Document this.
1:06:49 document this and read me one.
1:06:55 Okay.
1:06:55 If I run this, they stay formatted.
1:06:58 If I run npm run preview, this minifies the files and disc serves them.
1:07:04 Cool.
1:07:05 You still have to run npm run minify.
1:07:08 And if you ever need the bulk process folder manually.
1:07:13 Okay, cool.
1:07:13 Well, it's actually fixes a bunch of inconsistency.
1:07:18 Oh.
1:07:20 Uh, okay.
1:07:21 Make sure.
1:07:25 Okay.
1:07:26 A problem I see is the script changed
1:07:33 the unic code characters from that to it completely.
1:07:41 We want to leave them in.
1:07:44 That is just one example.
1:07:50 It's getting close.
1:07:51 It's getting funky though.
1:07:59 Yeah, it's like you I definitely want it to not change the formatting of stuff.
1:08:09 Yeah.
1:08:14 Okay.
1:08:17 Nice.
1:08:18 Good.
1:08:20 Oh, okay.
1:08:27 Look like I'm going to keep those.
1:08:29 Okay, cool.
1:08:31 That's good.
1:08:32 That's good.
1:08:57 I'm interested to see if this did what I wanted it to do or not.
1:09:14 Okay.
1:09:28 Probably is good.
1:09:28 Okay.
1:09:29 It did stuff.
1:09:31 Wow.
1:09:32 Okay.
1:09:33 Oh, nice.
1:09:34 Okay.
1:09:35 Mhm.
1:09:51 down.
1:10:08 Uh oh.
1:10:12 It's gone off the rails.
1:10:14 Maybe.
1:10:14 I don't know.
1:10:16 I'll just finish.
1:10:17 Done.
1:10:18 Are you good?
1:10:20 I think it went off the rails.
1:10:21 I was just like going.
1:10:23 I think Are you good?
1:10:24 Let me just check in with you.
1:10:27 Okay.
1:10:28 Yes.
1:10:29 Yes, I'm all set.
1:10:30 Okay.
1:10:34 Implemented caching say formatted.
1:10:37 Okay, cool.
1:10:37 I think I did it.
1:10:42 That's cool that like tags are formatted correctly.
1:10:48 All right.
1:10:49 I I want to trust you.
1:10:52 I guess those are emoji.
1:10:54 That's cool.
1:10:55 All right.
1:10:56 All right.
1:10:56 All right.
1:10:57 I see you.
1:10:57 I see you.
1:10:59 Convert Unico characters to escape scoop.
1:11:01 What says I keep calling it the wrong thing.
1:11:05 Okay.
1:11:15 Okay.
1:11:21 Seems to work.
1:11:22 It seems to work.
1:11:28 All right.
1:11:30 Hard hard re hard.
1:11:33 Control shift R.
1:11:37 All right.
1:11:38 I trust you.
1:11:39 Cool.
1:11:40 All right.
1:11:42 All right.
1:11:43 That looks good.
1:11:45 Let's do it.
1:12:06 H.
1:12:07 Mhm.
1:12:10 Okay.
1:12:25 Oh, I should have put a real comment in there.
1:12:30 Mhm.
1:12:38 I'm going to also say Okay, cool.
1:12:41 All right, awesome.
1:12:43 All right, cool.
1:12:44 Let me do this.
1:12:45 I'll say awesome.
1:12:47 Uh I notice that when I refresh the Let me just double check this.
1:12:58 I go into network.
1:13:00 If I refresh, it's kind of like still pulling these.
1:13:12 I guess those little bites must be fingerprinted.
1:13:15 The content CSS is content.css is over one megabyte every refresh.
1:13:29 It keeps pulling it down.
1:13:33 How do we improve this?
1:13:35 All right, this is a bigger task.
1:13:37 So, I'm going to plan and I'm going to play with Sonnet.
1:13:43 All right, let's pass.
1:13:44 Okay, cool.
1:13:45 Go.
1:13:47 So, that's what we're going to do first.
1:13:50 Okay, the user's mentioning stuff.
1:13:52 Yes, correct.
1:13:53 Deep config.
1:13:54 Yep.
1:13:54 Right.
1:13:56 So I think like in this instance like I want the I understand that probably
1:14:00 the app the first time you load it will be bigger and then when you
1:14:04 refresh it should be relatively smaller every
1:14:09 time and I'm noticing that here when you
1:14:14 refresh right so it's like 1.1 megabyte transferred and if I empty it 2.8 eight,
1:14:23 which makes sense cuz the the fonts are cached.
1:14:26 So, I got this big font.
1:14:27 That kind of stinks.
1:14:29 But what are you going to do?
1:14:30 It's a big font.
1:14:32 But if I refresh, yeah, it's just big.
1:14:36 All the other ones are small, so that's good.
1:14:41 See?
1:14:42 Zero memory.
1:14:44 What does that say?
1:14:47 Memory served from memory.
1:14:51 The internet is wild.
1:14:56 I I figure I'm going to plan this.
1:14:57 Let's see.
1:14:58 On every refresh is like no maybe.
1:15:03 Oh, the Okay.
1:15:08 Steps.
1:15:09 Okay.
1:15:09 Mhm.
1:15:11 Ah.
1:15:15 Font subsetting.
1:15:16 The Nerf font includes thousands of glyphs.
1:15:17 Should we create a subset that only creates 50?
1:15:22 No.
1:15:23 Maybe uh one.
1:15:29 We want to create a subset of all of the ones
1:15:36 we are using in using uh throughout the app.
1:15:43 Also we should create a guide for people somewhere when they are contributing.
1:15:53 Uh two service worker for offline caching.
1:15:56 No.
1:15:58 Uh three.
1:16:05 Verify the copper first.
1:16:06 Should we check the browser tools and network tab?
1:16:08 Uh sure.
1:16:10 Uh, okay.
1:16:14 Oh, it does.
1:16:15 Thanks, Fahheim.
1:16:16 Yeah, I was a little like that makes sense,
1:16:21 but I would like to like see what it actually is doing,
1:16:27 but I'm sure there's a there's got to be a view, right?
1:16:30 There's got to be like a [snorts] There's got to be like a See,
1:16:38 I would think the response would just be here's the response.
1:16:43 Oh.
1:16:43 Oh, okay.
1:16:45 So, that must be like the default of what
1:16:47 came in and then I see one line, one column.
1:16:50 Oh, okay.
1:16:51 So, that's good to know.
1:16:52 I see.
1:16:53 Cool.
1:16:54 All right.
1:16:56 Uh, cool.
1:16:57 All right.
1:16:58 Let's see what it's doing.
1:17:17 Yeah.
1:17:18 What I have is this constants nerd font icons.
1:17:27 So, what this does is like this my mapping of all the fonts I want,
1:17:32 you know, actions throughout the app.
1:17:34 So, I have quite a lot, several hundred um that we're using.
1:17:38 I probably don't need more than that.
1:17:39 So, yeah, creating a subset probably would work in general.
1:17:43 So, I'm about it if so.
1:17:46 That's where this plan mode comes in.
1:17:47 I could have just told to do it, but it didn't.
1:17:50 Okay, the one is likely the nerd font.
1:17:52 Hm.
1:17:53 All analyst shows abs uses this.
1:17:56 Let's do it.
1:17:59 Automation.
1:18:02 Yes, let's do that to keep the CDN.
1:18:08 Sure.
1:18:08 Uh enforce strict validation uh in CI and for contributions three.
1:18:23 Not sure.
1:18:24 Let's document it.
1:18:29 Okay.
1:18:30 Finish the plan.
1:18:32 Finish the plan.
1:18:34 Okay, cool.
1:18:37 Mhm.
1:18:55 One.
1:18:55 Sure.
1:18:56 Two.
1:18:58 Uh, sure.
1:18:59 Three.
1:19:01 Should the font subset script auto install font tools?
1:19:05 Sure.
1:19:10 Sure.
1:19:11 Sure.
1:19:11 Sure.
1:19:12 Yes.
1:19:12 Yes.
1:19:12 Yes.
1:19:13 Yes.
1:19:13 Yes.
1:19:13 Yes.
1:19:13 Yes.
1:19:13 Yes.
1:19:14 Yes.
1:19:14 Okay.
1:19:16 No more considerations.
1:19:18 Let's do it.
1:19:20 Oh, nice.
1:19:20 Okay.
1:19:24 Husky.
1:19:26 Husky inside.
1:19:26 So, we have to keep telling it.
1:19:41 Sure, sure, sure.
1:19:43 Let's do it.
1:19:44 [snorts] All right, that should be pretty quick.
1:19:46 It should be done.
1:19:48 Let's Let's do this thing.
1:19:52 Remove the Yeah.
1:19:53 Yeah.
1:19:53 Oh, yep.
1:19:55 Yes.
1:19:57 Sure.
1:19:58 I don't know.
1:19:59 Sure.
1:20:00 Yes.
1:20:01 Sure.
1:20:01 Do it.
1:20:07 That's how I do it.
1:20:08 Uh, what am I building, Fahheim?
1:20:10 Yeah, we're building this Oh myosh configurator.
1:20:15 You can check it out live.
1:20:17 Let's see if I broke it.
1:20:19 Nope.
1:20:20 That's good.
1:20:21 So, you can update and have your terminal look beautiful.
1:20:24 There's a bunch of these like built-in ones which are cool.
1:20:27 This should Yeah.
1:20:29 Perfect.
1:20:30 Okay, cool.
1:20:31 Uh all this stuff.
1:20:33 So, you can like add different different things in here,
1:20:37 blah blah blah, which is cool, which I love.
1:20:40 You can be like, "Here's the Azure one.
1:20:42 Here's the CLI functions.
1:20:45 You can customize it.
1:20:46 get previews, see the templates, customize every little thing about it as well.
1:20:52 That's what we've been building out.
1:20:53 So then you can export the Oh my Posh config and like see it,
1:20:58 you can share it, you can import stuff.
1:21:00 That's why like my my terminal looks like this basically cuz I have
1:21:05 this Oh my Posh installed seeing different things uh as well which is cool.
1:21:10 All right.
1:21:11 Uh, so all right, start implementation.
1:21:21 Let's do it.
1:21:23 I'm going to use saw on it cuz I think it's a much larger ask pretty much.
1:21:31 Yeah.
1:21:33 11 to-dos.
1:21:33 See, it's like going to town.
1:21:37 It's just crazy.
1:21:38 Yeah.
1:21:40 Yeah.
1:21:41 You know what?
1:21:41 I wonder if for PRs, can we deploy a staging in the GitHub pages?
1:21:59 Does that work?
1:22:01 I'm going to ask.
1:22:06 I don't think so.
1:22:07 I don't think there's like staging environments for GitHub actions.
1:22:12 I [snorts] don't think.
1:22:13 Yeah.
1:22:13 Ah, yeah.
1:22:21 You're welcome.
1:22:22 So, that's what we're working on.
1:22:23 This Oh my sort of configurator that I built out.
1:22:28 I see.
1:22:28 Yeah, you can deploy staging environments, but it's not a native feature.
1:22:34 Use a deploy.
1:22:35 You have two main options.
1:22:36 Use a third party GitHub pages subfolders.
1:22:43 The hacker ways.
1:22:46 Interesting.
1:22:46 You deploy each PR to a subfolder on the GitHub pages branch.
1:22:53 Wow, that's crazy.
1:23:02 Yeah.
1:23:02 Gotcha.
1:23:04 And uh I figured as much I do it with Azure static web apps.
1:23:09 I actually have like deploying sub environments and stuff.
1:23:13 I figured it didn't but that would have been nice.
1:23:30 Ah cool.
1:23:38 So right now what I'm working on is uh we have the app but it seems
1:23:45 like every time I refresh this content CSS
1:23:50 is getting pulled in and we're not sure why.
1:23:56 It's very big and I don't like that.
1:24:04 and it's like a lot transferred and we definitely don't want that to happen.
1:24:10 So, I'm not sure like why it's happening.
1:24:17 So, our assumption is that it's some of the fonts or something else happening.
1:24:23 We're going to see So now it's going to it's also going to shrink.
1:24:34 Yeah.
1:24:34 Okay.
1:24:35 It's going to shrink a bunch of stuff.
1:24:43 Stop it just so it can do its thing.
1:24:49 Oh, that icon doesn't work.
1:24:51 Interesting.
1:25:19 Mhm.
1:25:44 It should update this as well, I assume.
1:26:13 build a lint validation PRS [music] and then when we
1:26:19 commit into main also deploy uh tell it to do that.
1:26:29 So yeah, that's okay.
1:26:36 Let's see what it's done.
1:26:37 It created a big some scripts.
1:26:41 Okay, cool.
1:26:44 Mhm.
1:26:48 To create a bunch of fonts.
1:26:49 So now we'll see.
1:26:51 All right.
1:26:52 Run.
1:26:53 Mhm.
1:27:19 It's doing a lot of work.
1:27:22 And generate fonts.
1:27:28 Ah, wow.
1:27:29 What?
1:27:30 Crazy.
1:27:32 That is very small.
1:27:47 H.
1:27:51 Yeah, we only commit the subset.
1:27:56 Okay, that's so good.
1:28:09 I'm still not 100% convinced that it is okay.
1:28:24 I believe you, but I'm not like 100% convinced that it's Oops.
1:28:34 is going to solve our problems, you know.
1:28:42 Mhm.
1:29:02 I could be wrong, but I mean now that font is tiny.
1:29:16 What's other part two is like now we like like it created this font but my fear.
1:29:38 That's not going to be what I I don't think this is actually what I want.
1:29:45 Uh because yucky users can go in.
1:29:59 Yeah.
1:29:59 Did I mess this up?
1:30:00 Yeah.
1:30:01 Yeah.
1:30:01 cuz like crap like the problem is that yes,
1:30:14 these are the fonts that we're using.
1:30:17 However, if I go here Mhm.
1:30:21 and I go here, this is this is the problem.
1:30:25 Like let's say I use I don't know composer right and I click on that and I
1:30:36 go here and I go here I go use data and instead of this Oh that worked.
1:30:49 That worked.
1:30:51 How'd that work?
1:31:00 How did that work?
1:31:07 Did that Did that work?
1:31:14 Hey, Nicholas.
1:31:15 Good to see you.
1:31:16 Yeah.
1:31:16 How did Oops.
1:31:29 Oops.
1:31:30 Music Spotify.
1:31:34 Okay.
1:31:34 And then click on that.
1:31:39 And then H.
1:31:46 How did that work?
1:31:49 All right, let me inspect [snorts] uh network.
1:32:01 Empty it out.
1:32:05 Uhoh.
1:32:06 How is it not running?
1:32:07 That's definitely running.
1:32:14 What?
1:32:19 Oh, different port.
1:32:20 I see.
1:32:21 I see you.
1:32:23 I see you.
1:32:24 Okay, close that.
1:32:28 Uh, that that thing is still very large.
1:32:33 Okay, so I don't like believe that it is going to work
1:32:40 because if I do this and then I say don't use that.
1:32:47 Yeah, exact.
1:32:48 Oh, use template.
1:32:51 What?
1:32:51 How does that work?
1:33:07 How I'm so confused.
1:33:11 Oh no, that doesn't work.
1:33:15 Oh, use template.
1:33:17 It does work.
1:33:18 How does Okay, let me I'm just going to ask it.
1:33:22 Okay.
1:33:24 Okay.
1:33:25 Let me save this.
1:33:28 Okay.
1:33:29 Faster initial better caching with constant base hashing.
1:33:35 All right.
1:33:35 If Okay, preload.
1:33:41 If the user user decides to use a icon [music] that isn't in our subset,
1:33:53 will it still get visualized?
1:34:05 Ah, no.
1:34:19 Yeah.
1:34:45 like why it's like we're including it but And all right, cool.
1:35:05 Let's also expand our do common use using Oh my posh.
1:35:20 our subset.
1:35:26 Okay.
1:35:33 I believe it.
1:35:34 I have to believe it.
1:35:57 a lot of code.
1:35:58 Oh, I got I'm going to assume this work.
1:36:12 I can always roll back.
1:36:14 Can always roll back.
1:36:16 It seems to work work.
1:36:19 I don't know.
1:36:23 I still think that this content CSS
1:36:28 is still getting pulled down with every everyone.
1:36:46 I mean, maybe I just don't know how this works,
1:36:48 but it's like every time I refresh the page, it has a bunch of stuff in it.
1:36:54 Got so much code.
1:36:59 Okay.
1:37:22 That's cool.
1:37:22 Did a bunch of research on like GitHub and did
1:37:24 a bunch of other stuff to like find other common themes.
1:37:28 All right.
1:37:29 I like that.
1:37:35 Build a land strength.
1:37:38 The deploy also then shrink the icon some the font icons and deploy.
1:37:56 Okay.
1:37:58 Added more.
1:37:59 Oh, cool.
1:39:00 Okay, that's like smaller.
1:39:03 That can that thing still big every time.
1:39:07 I can't like seem to get rid of that thing.
1:39:33 More duplicates.
1:39:34 Remove the duplicates.
1:39:35 Yeah, that's true.
1:39:37 Dude, dude, it's pretty smart.
1:39:39 It's like running duplicate stuff.
1:39:42 That's good.
1:39:42 Nice.
1:40:02 Okay, let's run it again.
1:40:04 See it.
1:40:09 Yeah, thanks Nicholas for hanging out.
1:40:11 Just this what I'd be doing.
1:40:13 Anyways, I'm going to be try to finish in the next let's see uh 20 minutes.
1:40:21 Okay, let's try this and let's see if I also deploy and then break everything.
1:40:27 That'd be the other other thing.
1:40:38 Yep, there we go.
1:40:39 Boop.
1:40:40 CI.
1:40:41 Let's leave the old.
1:40:42 Yep.
1:40:43 Cool.
1:40:53 CICD.
1:40:55 Nice.
1:40:56 Okay.
1:40:56 Cool.
1:41:04 All right.
1:41:04 I trust you.
1:41:06 Okay.
1:41:13 Now, the thing I'm interested in is like run dev.
1:41:59 Okay.
1:42:03 [sighs] When Okay, focus time.
1:42:10 When I refresh the page, I still see a content.css being transferred every time.
1:42:21 It is 1.1 megabytes.
1:42:24 Here is a sample of what is in what is in it.
1:42:33 See if we can figure out what's going on.
1:42:36 Yep.
1:42:38 Beautify.
1:42:46 Oh, wow.
1:42:49 I see what Oh, network chat.
1:43:02 Go click on this.
1:43:03 Look at initiator column.
1:43:05 What?
1:43:39 it will show you.
1:43:40 Check on the request for the origin is like some extension I have.
1:43:44 What?
1:43:44 No way.
1:43:46 Oh my gosh.
1:43:48 Card pointers.
1:43:50 What?
1:44:03 I don't even use it.
1:44:04 No way.
1:44:05 It's like, bro.
1:44:11 No way.
1:44:14 Oh my gosh.
1:44:15 Stupid.
1:44:16 It was an extension I have that loads a megabyte every time.
1:44:22 That is bananas.
1:44:26 I do not see dev container files there.
1:44:28 It'll be a better to have it.
1:44:30 Uh, yeah, I can add a dev container file.
1:44:33 Sure.
1:44:35 Wow.
1:44:35 Skip.
1:44:36 Wow.
1:44:37 Thanks, Opus.
1:44:38 Wow.
1:44:39 Oh, we went through all the music.
1:44:45 All right, cool.
1:44:46 Wow, it was an extension.
1:44:50 Crazy.
1:44:51 Thank you.
1:44:53 That's crazy.
1:44:55 Uh I don't know why I'm typing to it, but that's great.
1:45:00 It's funny because the That's bananas.
1:45:05 Okay.
1:45:06 That is crazy.
1:45:08 I like I guess still the icons are great.
1:45:11 It falls back to the other one.
1:45:14 Yeah.
1:45:15 Okay.
1:45:16 That's crazy.
1:45:19 I still we still did some optimizations.
1:45:22 I feel good about it, but not as good as I think I should in my opinion.
1:45:35 All right.
1:45:36 Well, let's uh look at this PR Mhm.
1:46:48 All right.
1:46:51 I think yeah.
1:47:26 Okay.
1:47:26 I'm like a little interested in like what this thing did.
1:47:37 All right.
1:47:40 Oh, it did run validate.
1:47:42 Okay, cool.
1:47:44 No, it'll deploy.
1:47:45 Skip.
1:47:46 All right.
1:47:54 they comment.
1:47:55 Oh, uh, I'm going to request a pull review from Copa.
1:48:01 I feel like I need to for some reason I changed a lot of files.
1:48:05 I'm not sure.
1:48:11 I did a lot of stuff.
1:48:17 Oh, that's it.
1:48:17 Mostly marked.
1:48:18 Okay.
1:48:20 Uh then it reformatted all these nicely.
1:48:25 Oh, wait.
1:48:39 Did it delete a bunch of stuff?
1:48:58 Oh no.
1:48:59 Okay.
1:48:59 It just moved.
1:49:00 It just formatted it.
1:49:01 I was like, "Oh, I can't really see it." What did it do?
1:49:04 It must have just formatted it a little bit.
1:49:10 Okay.
1:49:10 It's still the same length.
1:49:13 Interesting.
1:49:14 Okay.
1:49:16 Properly formatted JSON.
1:49:20 Okay.
1:49:21 Whoa.
1:49:24 I see.
1:49:25 Ah, I'm little terrified of this PR.
1:49:35 Ah, I trust you.
1:49:39 Okay.
1:50:03 That's cool.
1:50:17 It says good.
1:50:18 All right.
1:50:20 Okay.
1:50:23 I guess it's good.
1:50:33 See if it just broke everything.
1:50:47 Let's look at our deploy now.
1:50:49 Our actions.
1:50:50 All right.
1:50:51 Interesting.
1:50:53 I'm going to Let's see.
1:50:58 Validate, generate, build, deploy.
1:51:05 Oh yeah.
1:51:06 Oh, you wanted a create branch uh dev container.
1:51:16 Can you create a dev container file?
1:51:20 Me uh with all dependencies to make it easy for folks to contribute and build.
1:51:31 Sure.
1:51:32 They should be like in the I should just do it.
1:51:35 I agree.
1:51:38 I generated a font.
1:51:58 That was really quick.
1:52:16 Seems to work.
1:52:19 Seems to work.
1:52:28 Yeah.
1:52:28 Then all right.
1:52:43 And some of these are not correct.
1:52:59 It looks pretty decent.
1:53:02 Miss heartbeat.
1:53:04 Okay.
1:53:05 Uh Oh, there's your dev container.
1:53:37 That probably should work.
1:53:40 Sure.
1:53:40 Let's do a PR.
1:53:48 Hey, is it true that they're rewriting Windows with Copilot and Rush?
1:53:55 Rust, I think.
1:53:56 No, that's not that's not what that comment said at all.
1:54:00 No, that's silly.
1:54:06 That's [music] not true.
1:54:10 Uh there's a bunch of like core components that I think are written in some C++.
1:54:14 Maybe that's what they meant or services.
1:54:16 I don't really know.
1:54:17 I don't work in that team.
1:54:19 So down now although co-pilot is pretty good at, you know,
1:54:27 converting [music] stuff.
1:54:29 So maybe uh some stuff All right.
1:54:37 Well, there's a dev container.
1:54:38 Cool.
1:54:39 All right.
1:54:39 Well, I think the website works, so I think that that is positive.
1:54:46 Uh, and maybe we improved download times.
1:54:49 We probably did, especially if people are just using built-in uh [music] fonts.
1:54:56 Copy.
1:54:58 Like I think what I want to validate maybe it's
1:55:02 hard for me because I probably have the nerd fonts.
1:55:06 It's like if I type on LinkedIn, that worked.
1:55:22 Okay.
1:55:23 I'm curious if it just downloaded H.
1:55:30 How do I see it?
1:55:32 Okay, let's see.
1:55:46 It's really hard for me to visualize.
1:55:50 Ah.
1:56:16 Mhm.
1:56:23 That works.
1:56:25 That seems to work.
1:56:34 H.
1:56:49 And I want to make sure that That seems to work.
1:56:54 Okay, that seems to work.
1:56:57 It seems to work and I'm terrified that it works.
1:57:04 So, there's that.
1:57:05 All right, I think that's going to do it.
1:57:08 Check it out.
1:57:09 Check out the Oh my Posh visualizer.
1:57:11 I think it works.
1:57:13 I mean, I clicked on it and it seems to work, so that's good.
1:57:22 That doesn't work.
1:57:23 Oh, interesting.
1:57:28 That does seem to do something.
1:57:33 H.
1:57:34 Yeah, whatever that one is.
1:57:36 Do Azure.
1:57:39 That's doing the wrong one.
1:57:40 That's why.
1:57:42 Azure alt.
1:57:45 That's funny.
1:57:46 So, it should be that one.
1:57:47 There we go.
1:57:48 Okay.
1:57:49 Weird.
1:57:51 Okay.
1:57:54 Looks good to me.
1:57:57 These configs need to be updated.
1:57:59 That's for sure.
1:58:01 Uh yeah.
1:58:02 All right.
1:58:02 I think that's going to do it, folks.
1:58:05 We did it.
1:58:06 Thanks for hanging out.
1:58:07 Thanks for asking some questions.
1:58:09 Thanks for being part.
1:58:09 Thanks for liking and subscribing, doing all the things.
1:58:11 It's going to do it for me.
1:58:13 I'm going to go eat some food and drink more coffee.
1:58:16 Anyways, I hope you have a great uh
1:58:19 New Year's Day if you're celebrating New Year's Day,
1:58:24 wherever you're at, and go from there.
1:58:26 All right, I think that I have to figure out how to stop the stream.
1:58:30 I don't have a thanks for watching.
1:58:32 I forgot to I forgot to make that happen.
1:58:36 [snorts] All right, cool.
1:58:37 All right.
1:58:37 Well, thanks everybody for for hanging.
1:58:39 Happy New Year's and thanks for watching the channel.
1:58:44 All right.