Live Coding - Oh My Posh - Visual Configurator! Hello 2026! Let's Go!

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.

Study with Looplines Download Captions Watch on YouTube