mergeconflict404 === [00:00:00] James: Well, back in my day, Frank, I used to have to write, uh, Visix for Visual Studio to get my templates installed. I had to use wizards. I had to do like crazy key gen replacement shenanigans. That's what I used to do. Visix. Visix. I, I, I think [00:00:16] Frank: I do have Visix. I think when I published Kelka for the Windows store, I think. I think I'm using a, no, it can't be. They can't be that old. That's only for Visual Studio additions. What is this old timer talk? Why are we talking about old things like this? But, um, you did catch my attention with the word template there. Why were you making a template? [00:00:35] James: Well, templates are important. You know, I'm a firm believer of templates for projects and. Uh, you know, in the world of NET and Android and iOS and anything that you do, there's templates and in templates, the default templates are super important out of the box, I think they're the most important thing that can be developed and it's a hard balance. I've worked many years, not only on the Xamarin team, but close to the NET team and have, I've had entire papers written about templates and what they should and shouldn't do and doing user studies on templates and a whole bunch. You would be surprised because there's a catacomb of Of things that can go into templates. Right. And you also don't want to overwhelm your users, especially new users with too many options, too many things, too many things. You don't want to set them up for success. You want to evolve the templates as the technology evolves. It's like the reference template. However, that's not going to make everyone happy. Right. Remember the big change from, uh. The file new, you know, you know, console application that now it's just one line of code. You don't get all the ceremony around. It's there. You just don't see it. You know, that's a now there's actually a check box to go back. If you want to, you know, there's do you want minimal APIs, non APIs? It's fine. There's too many check boxes. Program. [00:01:53] Frank: cs. [00:01:54] James: Keep it simple. Keep it simple. One line of code. It's done. So, I think templates are really important. Now, over the years, I've developed and published many, many templates. And, through Visual Studio, there's the VizX, which is a Visual Studio extension format, basically. And for me, that's how I used to deliver templates, is you would bundle up all of these different formats. I had to Go through crazy formatting, like the templates don't actually compile because you're swapping out names of things and characters because you want the namespaces to be correct and the class names to be correct and all this substitution based on the file name, you know, all these weird things. [00:02:31] Frank: Can we throw the, uh T4 template engine. Yeah. It's got to go through all that stuff. Anyway, the wonderful T4 template engine. Continue. [00:02:40] James: It goes through all this stuff and then you get to deliver it to folks. Like, why would you do this? This is wild. Well, I started to develop templates a long time ago for Xamarin Android. Just core Android work. This was before Xamarin Forms was 10 years ago. I started doing this stuff. And I remember actually giving a session at Xamarin Evolve about these templates and all the things that were built in and setting yourself up because Android stuff is so complex and so crazy, but you do want things to be nice out of the box. So file new project, give me fly up menu, give me the tabs, give me all this stuff, right? You want everything, all the ceremony to be set up for you and adding little items like file, add new item and you had a little menu item and all this stuff. So you have to remember all this stuff off the top of your head. So I've done that forever. I did Xamarin Forms once, I did all this other stuff. Um, And then there's evolution of the templates as well that I kind of want to talk about today because there's new things that you just brought up, there's things that I've leveraged on GitHub. For example, there's new tooling that's been involved. The real question is, like, why did I do all this? And I did this because because In our minds, Frank Krueger, we believe that if we put in the work, we put in the effort, we put in the time, we'll create these templates. And then we'll save so much time in the future. [00:03:54] Frank: Yeah. Yeah. It's the code reuse hobgoblin that's on every programmer's mind, isn't it? Jeez. I didn't know we'd get philosophical here. I was ready to just counter all your points, but James, thank you for your bona fides, because, uh, true story here. I said to you, I have a topic this week, something I really want to talk about. No, you didn't. What was it? No, that's the true story. Yes. I said, what I said was I have a template that I use all the time. But every time I use it, it doesn't work. It's actually a bad template. I haven't updated it because it doesn't actually compile out of the box. The problem is I do so few templates that I can't even remember how to update this thing. And I went to my repository and there is a missing readme. Normally I'm at least good enough to have a readme that reminds me how to like, Update the NuGet package, compile the thing, run the thing, any of that. Nope, missing readme. So I am glad that you are a template professional because I want to ask you, what is the current state of the art of templates and how do I update my template? Because I don't remember how to do any of this stuff. I do it so rarely. But yes, wouldn't it be great if, I don't know, like you have Git templates, you have NET templates, you have NET templates, you have NET templates. I guess those are the only templates I have, the ones that are built into NET and Visual Studio. But, um, I feel like I don't take advantage of them enough and it's kind of pathetic. I don't know how to update my one template. So help, help me, James. [00:05:27] James: Yes. Well, again, we're under this belief that Even updating this existing template will save us so much time. And the actual answer to that is it won't save you any time at all. Um, and, and I'll tell you this much now it will save you negative amounts of time because you will put so much time energy into said template and updating said template and trying to use said template that you should have just copied and pasted all of the files went into VS code control shift F. Replaced MyApp1 with MyApp2, called it a day. Now that being said, we don't do it just for us, Frank. No, we don't. We're developers. We're de we're developers. We don't wear, we're just puffer jackets in the Pacific Northwest for no reason, inside your own house. You, specifically do this. Come [00:06:21] Frank: on, Northwestern right here. [00:06:22] James: Here we go. Put the puffer on. Yes. [00:06:24] Frank: Now we're good. Please enlighten us now. [00:06:27] James: Yeah, we do it for the greater good. For the community, for the people, for the people, Frank, because not only will we save time or so we believe we'll save everybody else time. We're going to save so much time for all the people, all the people are going to use these templates. So it's very rewarding at the end of the day, but wow, this is amazing. Like I made this great thing, published a great thing and all these people use that right. Uh, maybe there's one person, maybe it's two people, maybe it's 40, 000 people. [00:06:53] Frank: Who knows? That being said, You're hurting my soul right now. Thank you. Please continue. I have three stars. Okay. That's three people, including myself. That's four people. [00:07:03] James: There you go. Check this out. Boom. Started. All right. Um, let me fork it. Uh, perfect. All right. So, I didn't think with templates, That are fascinating is that there are tons of great things built into the box, right? There's tons of stuff. They get updated all the time. You should probably just use those. And as developers, I'm often using as well as an advocate and someone in the, you know, community doing work, like I'm doing demos all the time. So I'm file new and all the time. So those built in templates are super new. Now, the amount of time that actual people get to do file new. Uh, much less, you know what I mean? Comparatively to working on their main project. So that's why templates, whether the item templates or things to scaffold, the project is like super important because if Frank's over here making a hundred apps, he would rather do file, new file, new file, new app. I actually think that I was been more successful where I literally took. Just a sample app. I had my coffee app. And when I was building the Meisner app, the skiing app, I literally just took that repo. I was pretty good. I did copy paste. I did go into visual studio code and I just renamed everything. And. That was pretty great. Like it really, it honestly worked like way better than if I tried to templatize and do all this other stuff. [00:08:13] Frank: Let me interrupt you with my own anecdote there. I do that for, don't tell anyone, my web apps. Because I wrote one database access layer. And one user repository and a user login system that does all the crazy junk a stupid user login system has to do. And I don't ever want to write that code again. So no matter what web app I'm writing, I almost always copy and paste from this one project. The problem is this is the old 1990s problem before we had version control. You can never remember which project exactly to copy from if you're like me, because you're, I'm bad at having a fork and say, Oh, Point, this has become my template project. Like, I agree with you. Like official templates on NET are very hard. I'm kind of okay with maybe a separate git repo or just a directory that you know, to copy and paste from later. But I have a hard time separating that. So I get into this awkward thing of like, which of my five web apps should I copy and paste from? Because they all are slightly different versions because we're not doing version control correctly and all that kind of stuff. Um, but, uh, I definitely agree in principle. Uh, I do this for all my web apps because I'm never using a repository again. [00:09:29] James: Yeah, it's. It's quite a lot, um, to do just in general. And the fact that even just thinking about, okay, if I am, you know, templatizing this thing and I want to publish it, well, what am I doing? I got to put it in like CI, do I like publish it? Do I got to create in the app store? I got to do this thing. Like back in the day with the physics is you would literally. Have to like create and version of visits and upload it manually. And the dues, you know what I mean? It's like quite a lot going on in that regard. And then, you know, obviously that only works on visual studio. If you want to do on a visual studio for Mac at the time, or you wanted to do it for something else, you gotta do this whole thing. Um, and then there's like even bigger things like before I even get to the newer tooling, like there is. Like Template Studio. And there's like a bunch of NET MAUI ones where basically there's a whole wizard, right? So there is a template that's there, but then there's an entire like WPF, like, I want to create this page and that page. It's a whole wizard walkthrough. Templatizer like amazing to think about, like the NET MAUI Accelerator, or whatever, which is another VizX. It's like, it's like a template on, you know, 10, 000 basically. It's just like way over the top, but just like all the things you can imagine, like what, it's like highly customized, very nice. But nowadays you can go that route that requires a lot of work. But if you're just like me and Frank are like, I just want to create a template. Right. The hard part in the past was VisXs like this stuff is not cross platform, right? So if you're on Linux or on Mac, you know, what are you going to do? If you're just on the command line, you're not getting those templates because they're not there. Actually, how many templates are shipped nowadays are funnily enough. Just NuGet packages. [00:11:14] Frank: That's right. Yeah. Um, and that's the part I was suspicious of, but I couldn't quite remember, like, were they a specific kind of NuGet package or were they just a normal NuGet package? And I've actually been doing some digging around and I've discovered it is a whole different package type. So you create a csproj, but it's a special package type. And I guess, um, they kind of get auto registered. Um, if, as long as you install that package globally or something, then you'll be able to use it from NET new. Anyway, that was a lot. Uh, you just gave me a wonderful link. I hope it'll be in the show notes. Um, but yeah, it, I guess it is that simple. It's a csproj with a bunch of content that is, um, with a Package type of, uh, template. [00:12:05] James: They even have a entire sample repo that show you how to do everything. Now, the interesting part about templates is like, not just, you can't just be like, Oh, here's my project and then go create the template. No, it has to be like, you know, content or extensions. It was like a whole, like kind of rhyme and reason of how to do it. And then, you know, the target content folder and then all these other things and these other things. But basically there's a Microsoft template engine dot tasks. And that's one of the things that essentially figures out how to nuggetize it up, package it all up and get it out to NuGet. So just like you would, you know, do NuGet and, and build it up and pack your NuGet, you'd be able to do this. The nice part is that. The, um, there is a way to just do t net new template pack, which for all intents and purposes, it's a template. It's a template template, generator template, templates, template. It's correct. There is a package called Microsoft Template Engine authoring templates, and this are, these are templates, great of templates for building right. Templates. Templates. Perfect. Very meta. Amazing though. Kind of, kind of, it's astonishing because funnily enough, one of the things that I did and now Gerald have done through the years is we created templates. For creating plugins, not quite as meta, but basically which enable abstractions over stuff. So instead of you like creating an app or doing something like this, it's like a template of a template, how to do something. And then nowadays there's actually, uh, we stopped kind of doing that. We just have a template on GitHub. There's actually a GitHub. You can turn a GitHub repo into a template. And the good and bad of it is that instead of cloning it or forking it, you just say, create a repo based off this template and it just kind of [00:13:54] Frank: copies [00:13:55] James: everything, kind of does it, the magic there. But from what I can tell, at least there's not like a way, if listeners, if there is a way to do this, let me know. There's not a way to like, Sub out names. Like you can't be like, use this template. And then also here's three fields to fill in and then apply these three fields in a special way. That'd be really neat because one of the things that I did in my templates was at a plugin template. If you just called it battery plugin, it would replace all the things with battery and all this stuff. Or I think you just, I was like, name it battery. And then it'll figure out all the names for you. So anyways, no, I'm off tangent. You got something Frank. Nope. [00:14:36] Frank: Yeah, yeah, I just want to interject. I'm glad there is a template, template, generator, template, template thing. I'm just keep saying that because there is a template. config slash template. json file that, um, I assume it generates because I don't think I ever could have come up with this file. Um, but this is where you can actually state your one substitution. I think you can do in the NET new. world where you can give a name to you pass it along like if you're creating a solution you'd give the solution a name a project you'd give the project name and so you can just say a source name and that is the literal string it'll look for throughout all your files and replace with the name the user passed in that you pass in. later. So given that there's just a little config file that's able to accomplish that, it's not what you want. You want like a wizard, you want options and things like that. I am curious if GitHub has, um, a feature like that where you can, uh, choose substitutions. That would be something good for us to look up and have some follow up on because, yeah, that, I, I think that that is, uh, It's very tempting to just go the Git world. Um, I, I like it listed under NET new, but NET new also has the drawback of you have to remember to install the package in the first place and, or you do NET new install and give it the package name or something like that. I bounce around on machines a little too often. I think it might be easier actually to, uh, GitHub clone versus NET new. Tricky situation. [00:16:22] James: It does hard like the discoverability of it. Now I do think that if you install the templates with the NET installer, I do believe Visual Studio. On Windows, we'll pick those up and add them into your repertoire of templates. From my understanding, at least, um, don't quote me on that, but I'm pretty sure that's how most of the other packages templates are basically installed. Um, from my understanding. Um, not all of them, but I think some of them, I know in VS code, they won't. I'm pretty sure that list, uh, isn't all of them, but maybe it is. I'm not positive. So, but again, you can do done it new and then list, and then it would show you all of them. Yeah. And I guess like I'm a windows person. I'm an IDE person, so I want them to be there. That being said, I'm not really sure. And you could, you could help me on the Xcode part, at least like. You know, on the Android studio part, I'm not really sure. I have to imagine there are ways of getting extra templates, but does Apple allow that type of extensibility on Xcode? Like, is there even an Xcode extensibility model? [00:17:31] Frank: Not one. Okay. There is one for Xcode. There is an extensibility model, but it never gives you the things you want. You know, you, you, you want integration with the text editor and they don't give you that kind of stuff, sadly. Um, I honestly can't even tell you. I will say if. If, um, templates are a thing in Xcode, no one uses them because I never see them referenced. No one, I don't know anyone who publishes any or anything like that. Um, I, I do believe they have a good kind of snippet database, which most IDEs do, but I never remember to use them. Like, maybe I should just be storing all my templates as giant snippets, you know, just clone things that way. But, um, I, I, yeah, I, And I don't know anything about Android Studio either, but I don't think Xcode has too many features for adding templates. I'm going to check though. [00:18:23] James: Yeah. It's kind of funny you mentioned, you know, we talk about templates. I think that's a fascinating part is like we think of it as like all project templates or item templates. So being right able to right click and then add a new item, you know, there's scaffolding items, there's all sorts of things that kind of happen there. Even for me in the Android days, you've been adding like simple XML files or things that I would add to every project or add multiple times. It's a lot nicer to have a template than actually just writing stuff from scratch. It's for just little items inside of there. But I think you made a good point too, which is that. When we think of templates, it doesn't have to be just item or project templates. It could be like code snippet templates too. And I don't know if Visual Studio has a way of, they, there is a way of templatizing them. I think, but I don't know if you can ship them. [00:19:13] Frank: I think, I think in Visual Studio has a really nice feature where you can select any text and drag it into the, um, Object list, item list. There's some palette where you can just drag stuff into and it becomes like a permanent snippet that's remembered forever. Um, sorry everyone, I'm not doing that feature justice. If you know that feature, you know it. Otherwise, Google those words I just said and hopefully the right thing will come up. Uh, yeah, this actually goes back to actually an old argument I used to make. Um, I had always wished that the file new project template was always better. essentially blank, like maybe pop up a hello world dialogue or something like that. But then you spend all your time adding the, uh, feature templates. So a, a, a pre baked settings dialogue, a pre baked tab layout, a pre baked etc layout, slightly higher level controls, and objects and components. Because although it's easy enough to say, oh, there's a timer object out there, It's much easier to say NET NEW, my timer, and just get one that's kind of all set up and has some decent defaults baked into it and maybe integrates into the main form, who knows, you know, things like that. Honestly, I'm just going back to like visual basic ideas and things like that, old Delphi ideas. Uh, so I was, and now that I'm saying this, I should really take my own medicine here. Um, it, it would be nice to have more of those kinds of templates, keep, file new projects. Simple and just make it easy to add stuff on. [00:20:58] James: Yeah, I, I agree. I think that, um, you know, the, the NET MAUI templates nowadays are pretty blank. I mean, that's the thing is there's a lot of discussion over what is a blank template. Right. And there's two sides of the coin of a blank template. If a blank, how, how blank is a blank template because a blank template that's truly blank. Would literally be just a CS Proj with nothing in it. Empty CS Proj, yeah. Program. cs [00:21:33] Frank: hello world. [00:21:34] James: No, that's the thing. Imagine you're doing a new console app. An actual blank template. No hello world. It wouldn't even have hello world, right? So for NET MAUI for, well, I mean, if you've seen the Xamarin forms templates evolved a lot over the years, there was ones that had full backends and had like, you know, navigation and MVVM in it, like all this other stuff, the NET MAUI template is actually like, there's just a template. Right. And it's, it's very. Simplistic, which it just has a image, some text and a button that you increase there. Now, many people would say that's even too much. However, Frank, I would also like to say that one of the most important things of blank blank templates or whatever the default template is, is the demo ability of that template. I know it sounds silly. I know it sounds silly. Cause. It's not like developers every day are thinking about the demo ability of the template. However, I don't like it. I don't like it. However, how many times do I do file new projects and have to demo Donna Maui many, many times, hundreds of times, and this is reaching hundreds of thousands of people. So actually, the demo ability of that template is fairly important because you wanna be able to do some things to show it off, to build upon it. X, Y, Z. So I do think the item templates are important to be able to scaffold that out and do different things, but you need enough to be able to show people something, uh, that's inside of it and build upon the default template. Um, in my opinion, with, with at the same time, it shouldn't be annoying to delete the stuff that's in there. Right. I think if it takes you under. You know, 30 seconds to delete all this stuff, then you're probably doing okay. [00:23:27] Frank: Yeah. Um, delete time. That's an interesting metric. That's not the one I was thinking of. I was thinking of literal lines of code, um, maybe mixed with that quantity of files, um, but I agree, like, I, I, I think, um, Blazor has a pretty. Struck the balance pretty well with their new template. [00:23:51] James: Yeah. I like it. [00:23:52] Frank: They give you tabbed, it's not tabbed layout, but whatever, web version of tabbed layout. They give you a few example pages. They have the rough fallback. I think what they do, the important thing of they guide you along. They're like, here's how an app of this style should be written. Here's the directories to use. Here's how to name things. It's a real beginner. And I think it's, um, especially with their file format, it's really easy to delete. errorResults and all that kind of stuff. So I think they've struck a real nice balance there. I think like Maui should have a basic tabs, you know, things like, you know, it's most of Maui apps are used on a phone. So tabs can be your main UI, might as well have the file new project to be a tabs, but it shouldn't be a thousand lines of code. I remember a mistake with early, I don't remember if it was wind metro. I think it was WinMetro. Uh, when you did file a new project, it generated so much XAML, like every style you've ever thought of. Like they took like XAML from scratch. Like the style of your app was 100 percent defined within your app itself. And it would just spit out all this. Infinite amount of XAML. And I think that was the wrong way to go for a final new project. I think you should make your framework a little more powerful that your demo able, your cool demo cool project, uh, doesn't need a hundred million lines of code. So yeah, it's a tricky balance. And I know, I said empty. What I mean by empty also is it's not pulling in a thousand external libraries. Like empty should mean it's all just running self contained within itself. [00:25:33] James: Yeah. [00:25:33] Frank: That also, I just want a simple project I can build from. [00:25:37] James: Well, I think then beyond that, that's where the community packages and the things that we're talking about come in is like the ability to have that templating engine to build on top of it for people that are like, Oh, I want to really spin up. This project with all these things on top of it, especially for demo ability or for like custom frameworks or something like that, you know, if you're Uno or Prism or Avalon, you're something like that and you want to need your own templates that are going to build out these things on top of the core, which I think are important, but yeah, it's like really fascinating. I mean, I could talk for days about templates and blank templates and all these other things, but I agree with you. I think that things were a lot more of an issue when the CS project really Like all of the files and all of the information about images. And there's just, there's so big nowadays. You're right. It's like, it's just reading the files that are on there. So you can just easily, you can just delete the files from disc. Right. And like everything updates automatically and it's like super simple. Now, funnily enough in blazer, in the new blazer web app template, there is a checkbox that, um, asks if you want to use sample data or not, if you don't check the sample data. It will literally just say, hello world, with no styling, no anything, just outputs, HTML that literally says, hello world, which I don't think is a great I checkbox name. Yeah, it's, uh, I'm going to look at it here. I [00:27:02] Frank: was going to make the argument where I was saying the default MAUI template should have tabs. I agree with that. So there, there is a remaining argument. Should you have a truly empty, empty that still has like, at least the main message loop pump, you know, thing, things that you absolutely need to put a UI up. A Maui app is a ui, so, mm-hmm, , you should at least have a main page, but like, [00:27:23] James: yes, [00:27:24] Frank: no, uh, no shell, uh, no icons. Uh, no, you should still have icons. So yeah, the, the line for empty is really tough because yeah, no one wants to figure out where to put those stupid icons. [00:27:36] James: It's true. It's very, very true. It's like, yeah, how much of the resources, the styling, all this stuff that you want to put in there X, Y, Z is good. Yeah. It's like, you know, inside of a blazer application. Now you have to say like, well, there's always been authentication type and HTTPS you'd say, what render mode do you want? Right. What interactivity location do you want? Do you want sample pages? Do you want to not use top level statements? Do you want to enlist in NET Aspire? There's quite a lot. There's quite a lot of options. [00:28:05] Frank: I wonder what the NET knew, since I'm a dirty Mac user, I wonder what that, uh, cause I don't know. Does that, that, does that prompt you for questions? Um, I guess we could find out real fast, but I thought they mostly [00:28:20] James: don't prompt you for questions. VS code will prompt you for different things. I don't know how that works. Actually, if I do dot net new list templates, do not ask you questions, although that would be super cool. In my opinion. Um, [00:28:37] Frank: so I wonder what the blazer because that's how I judge blazers. Usually dot net new. [00:28:43] James: Yeah, there is a so. Today, at least for whatever I have installed, there's Blazer, web app, blazer, webby, web assembly, standalone app, and then Blazer server app. I'm not sure if those are all T net eight or if I have multiple older T net seven templates. . I think the standalone maybe is there, but yeah, if I just do, you have to pass in arguments. I think you can pass in arguments, but you'd have to know what those arguments are. So if I do T net new laser. Dash dash help help. I don't see what it does. It does. Okay, cool. So for that, for example, I can, I can pass in the framework. These are all like default ones. There's. Dash int for interactivity. I can pass server auto web assembly dash E for empty. That is what that omits sample pages that demonstrates basic patterns. There's [00:29:40] Frank: all right. [00:29:41] James: Dash off dash dash off. You can pass a non or individual dash dash use local DB, whether to use a local database instead of SQL light. Dash dash all interactive or, or also known as dash AI. That's funny. Chooses whether to make every page. So true or false, if that's global or not hash or dash dash, no HTTPS and dash dash use program main, whether to generate explicit program class. So what's happening is. That's Visual Studio. Visual Studio is explaining these options and then it's just calling the command line, right? It's just calling the command. [00:30:21] Frank: Well, now I wish that the, uh, Blazor template was released as a package. Cause I would want to go check out their template dot Jason or whatever. I would love to see how they're actually implementing those command line arguments. Um, again, we, we should do a followup show because I feel like, uh, I have not been taken advantage of this feature enough. [00:30:41] James: The fascinating part is it might be inside of there, to be honest. There was no [00:30:49] Frank: guarantee, so I was wondering if it could, if it was a package or not. [00:30:53] James: So there is, I'm not sure if it's a package, however, on their GitHub, on the ASP. NET Core one, there is specifically web. project templates. And you will see that there is a Blazor C sharp one, I think. I'm not sure which one it is though, but there's C sharp F sharp ones in here. They're in files. I don't know what those are, but there's content inside there. Oh my goodness. There's Blazor, web, C sharp. That's probably what we want. I think maybe, I don't know. There's so many things happening in here. But yeah, I'm assuming that it takes in those different properties. There's the template dot config CLI host dot JSON. There's an IDE dot host JSON. I don't know. It's all public. It's wild. And I'm looking, I'm looking, I'm looking. Oh man. There's a very large, that JSON file is 500 lines of JSON. There it is. So there is a, there is a, uh, Interactive location. There's choices. So you can say interactive per page, choose which components will have interactive rendering. So you, you have to define these different platform interactivity modes that get explained. And then you can say, um, basically specify them out basically of what you want to do, um, the different values. So very fascinating. And it probably gets passed down into your project template. So they're out there. I mean, this is, this would be the way to do it. [00:32:28] Frank: Uh, yeah, we just opened a giant can of worms. Uh, those template files are huge. I am going to have to read through them very slowly with a reference manual because OMG, those are huge. Yeah. Uh, apologize. I am choking over here. Um, because they're so such a big file and just like, wow, that is just so amazed. It's. Overwhelming my system. [00:32:53] James: All right. So the places the templates exist in 2024, I think they are important to the ecosystem, obviously important for file new, but I do believe that there's a lot of value that can be added in item templates from folks, uh, to really scaffold out things like you said, why wouldn't, I want to just say. Add new profile page, add new, whatever. And it's like scaffolds everything out for me. Like that would be just amazing. I do think there's a big opportunity there to build out an ecosystem of these snippets or these items that, that are really helping developers beyond file. You know, going beyond file new templates. That's the name of this podcast. [00:33:36] Frank: Yeah. Um, are we going to challenge ourselves to do it? We'll see. Can we take our own medicine? [00:33:42] James: No, [00:33:43] Frank: I might try. [00:33:43] James: We'll see. All right. Before we get out of here, Frank, um, we've got a WWDC emails June 10th or something. Are you going? Uh, I've never been to w Have you been to Wwtc [00:33:56] Frank: one, uh, 2017? No, it was iOS seven, so God knows. What was that? A century ago? [00:34:04] James: 10 years ago? It was 2014, maybe 20 14, 20 13. [00:34:08] Frank: Okay. iOS seven. It was quite a shock. It was the transition from. Skeuomorphic, Textured, Linen. [00:34:17] James: Oh, that's a good one. [00:34:19] Frank: To, uh, white Helvetica fonts everywhere. Wow. And it hasn't changed since. No, it really hasn't. Boring buttons forever. [00:34:30] James: That's true. You know, you get no gradients, no [00:34:33] Frank: drop shadows. Thank goodness the Vision Pro actually has an attractive, you know, everything's translucent, vibrancy effect on everything. [00:34:41] James: Yeah. Are you going to go this year? Are you going to try to go? It's the year of the Vision Pro. Yeah, I'm going to try to go. [00:34:47] Frank: Um, it's the year of AI, I hope. I mean, I want Vision Pro SDK version 2, desperately, but, um, it better be year of AI. I wanted year of AI last year. Vision Pro, awesome. Apple needs to do better on AI. [00:35:03] James: Are they going to do it this year? I don't really know. I don't, I'm not seeing it. I mean, it'll be there, but I feel like it'll be the start. [00:35:14] Frank: The start. Uh, they already started. They complete one word at a time in every text field. It's literally a start. [00:35:22] James: They're, they're far on, they're [00:35:23] Frank: far on [00:35:24] James: ML, right? They have the, the core fundamentals. They're far on ML. They kind of slowed down recently, but yeah, like they're far on ML. But, um, you know, they're going to do a core AI. Is that going to be a new kit? [00:35:41] Frank: Oh God. I hope not. I think we did a whole podcast, me complaining how many ML and AI kits they have. There's just too many right now. Um, yeah. Now, now that I said that, of course, yeah. It'll be, uh, core LLM Core . Yeah. That's a terrible name probably. Yeah. Well, it, it, honestly, in this world, it, I think it's really a distribution trick for them too. Like, do they really want to install a neural network on everyone's computers or are they gonna do the services route, the Azure route of, uh, hosted. ai and then I, I bet you that's a bit of an internal debate that they're having right now. Where do you strike that balance? [00:36:24] James: Well, you know, they kind of went down that path with like weather kit, right? Weather kit just is basically calls to an external service at the end of the day. And displaying information, so they could go down that route. [00:36:36] Frank: I think that's a bad example because whether you have to talk to a central server, you don't know the, whether the phone doesn't have sensors for it or a Mac doesn't have sensors for it, but a Mac could host a neural network. [00:36:50] James: Yeah. I'm just saying that it's possible for them to host services that we call into. Right. [00:36:56] Frank: But these are big, nasty, scary services. These are, you know, took Microsoft years to build the infrastructure to run this junk. [00:37:06] James: Yeah. I'm interested in what they're going to do too, because there's been a lot of Gemini talk and other talk around Apple specifically and what they're going to do if they have their own thing. Like there's a lot of You know, things out there like, Oh, maybe like they'll start there, but then eventually they create their own things. I still think that they're, I don't know. I mean, I, well, we, well, you know, what did the email say? Hold on, let me look at, were there any hints? Oh, I, I can't decode those hints. Those hints [00:37:34] Frank: are terrible. Did you get a hint? [00:37:38] James: I got, I gotta go to my work account. I'm scrolling. [00:37:43] Frank: I'm scrolling. That's how important it was. It was right in front of me. I swear. [00:37:49] James: WWDC. [00:37:51] Frank: Still scrolling. [00:37:53] James: Yeah, where is it? World. Let's have an apple. There it is. Save the date. Um, so it is just, ooh, oh, Okay. So it's save the date, Apple Worldwide Developers Conference. So if you search for WWDC, it's not there. So this is fascinating. So the image is, do you, did you find it? [00:38:24] Frank: I will find it. [00:38:25] James: Just type in the word, Apple, [00:38:27] Frank: Apple, [00:38:28] James: Apple, conference, save, save the date. Apple Worldwide Developers Conference. All I [00:38:33] Frank: have are, here's your Apple search ad invoice. Uh, don't, don't you get those like 8, 000 times a day? I need to figure out how to turn those off. [00:38:43] James: Does it proclaim? Um, I'm going to forward it to you, did you get it, did you get it, your Frank Krueger account? No, no. P R A E C L U M. org. [00:39:00] Frank: This is good radio. Did you get it? We need to get an email. [00:39:03] James: Oh, no, that didn't get it. You tell everyone. Type your email in the Zencastr box. Okay. We don't want to, I don't want to, I'm not going to dox you. I must've spelled it wrong. I gotta, I gotta, what did I do? [00:39:19] Frank: This is what people tune in for. [00:39:21] James: Oh, I definitely spelled Proclarum wrong. It's obviously super easy to remember how to pronounce. Well, you're in my normal inbox, but not my working email inbox. Okay. Did you get it? It's in your inbox. [00:39:36] Frank: You know what? I get space internet. It takes a moment. So. Did you get it? We did. I did get it. We did all of that so I could see this bad typography. This is really bad typography, Apple. They literally stretched out the two and the four. I know a stretched out letter when I see one. [00:39:54] James: No, you're missing the entire thing. Look at the WW up top. It's like Wonder Woman. It's a, it's, it's combined, but what do you see inside of there? Is there an V and an M? And is there a possible L's on, on some of these sides? There's, there's no L's. Where, where are you [00:40:18] Frank: getting an L? This is insane. Um, okay. There could be an M. You think there's another M? We're, we're still doing the M3. [00:40:25] James: It does, uh, M, M four, M seven, there's seven, uh, switch, there's three switchbacks on here. No peeks. Can we go [00:40:38] Frank: back to talking about how they stretched out the two and the four? The WWs are [00:40:42] James: combined into one W. It looks like Wonder Woman, yes, but it is odd. And even in the little Apple WWDC, there's a little thing on it, but June 10th to June 14th. So I don't know, I don't know what they're gonna be talking about. So I [00:41:01] Frank: just want to say that they stretched the two and the four at a 21 to 17 aspect ratio. Yeah. And it looks terrible. [00:41:10] James: It's a little stretched. Is it a stretch? Yeah. And you know, funnily enough, if you go to the, go to the learn more click button, I think that two isn't a stretch there. Is it? [00:41:23] Frank: Oh, no, that one looks actually correct. [00:41:27] James: It's a different orientation. It does. It doesn't look as stretched, but it's a little bit funky. Anyways, um, all right, that's gonna do it for this week's podcast. Let us know if you're going to WWDC, WWDC, WWDC, WWDC, WWDC, WWDC, WWDC, WWDC, WWDC, WWDC, WWDC. Thanks for hanging out and we will see you next week. You can find us on the internet at MergeConflict. fm. Uh, there is a Patreon page. You can support the show and we have a YouTube page at youtube. com forward slash at MergeConflict. fm. You can see our beautiful phases each week. Uh, if you like this show, uh, give it a review on Spotify It helps our show. Um, we like that and share with it for this week's Merge Conflict. Until next time, I'm James Montemagno. And I'm [00:42:10] Frank: Frank Krueger. Thanks for watching and listening. Peace.