00:00.44 James Welcome back, everyone, to Merge Conflict, your weekly developer podcast. I am one of your hosts, James Montemagno. And Frank, you're on the wrong monitor. I'm going to pee pip you right now. i'm going to put you on the right monitor. Oh, I can look at that big, beautiful face of yours. 00:10.24 Frank Jou. 00:12.81 James Right in my teleprompter. Boom. We're both a ah cool, warm 5500K. I don't know, whatever. It might count. I just, I don't know anything about cameras. Am I too yellow? 00:23.37 James What's going on? Tell us on the YouTubes. Frank, how's it going, buddy? 00:26.46 Frank think you're looking I think you're looking good. No jaundice over here. You've been having your vitamin B, so you got a good natural glow to your skin. Looking good, James. Nice to hear from you. Nice to see you. i' Glad that you can look directly into my eyes again. It's always unsettling when you do it. 00:43.21 Frank So good to be here, James. 00:46.76 James Let's talk about a little bit of AI agents. Let's talk about AI coding. 00:49.62 Frank Oh, really? 00:50.26 James And yep, why not? 00:50.49 Frank OK. 00:52.62 James It's another day. It's another year. 00:53.46 Frank Why not? 00:54.90 James Well, you're mid month. So hopefully you're halfway through your, your premium requests. 00:59.45 Frank I am failing at my um ah New Year's resolution. i said I'm going to use every credit by the end of the month. And we are now one third of the way into the month. And I am not at 33% of my credits. So you know what I'm doing? 01:15.78 Frank I'm talking to Opus about the weather, how it feels today. You know, just chit-chatting, just trying to make friends with the Opus. 01:21.62 James what's what's your fee What's your feels Opus? 01:25.08 Frank yeah 01:27.35 James is that ah is but is that Is that fast model still available? 01:27.39 Frank I'm getting my money's worth, gosh darn it. 01:31.51 James I think it's like a 30X multiplier. So you can you can burn them through pretty quick. 01:34.52 Frank Oh, yeah, that's true. I could do that. You know, i was using um Open Router. I was testing my library cross-intelligence. I use Open Router to test it just because it's a third party. 01:44.28 James Nice. 01:45.41 Frank You know, I just want to make sure it's talking to other kinds of services. 01:46.94 James well pet well What is OpenRouter for people that don't know? 01:50.53 Frank Oh, hmm. 01:51.53 James Yeah. 01:51.94 Frank Open Router is kind of an aggregator of all the cloud AI ah vendors, suppliers. what do What do we call those people? The people who make the models and host the models, they have APIs. But you know what? 02:07.42 Frank Having accounts on 100 different websites with 100 API keys, it's kind of a pain in the butt. So one alternative, and I think there's a bunch of alternatives, um one of them is called Open Router. And you can just take it one key from Open Router, and you tell them which model you want to use. And then you can even select from different providers if multiple providers support that model. The nice thing is if you want to try buy a bunch of different models, 02:35.53 Frank It's easier because like OpenAI obviously hosts the OpenAI models. Anthropic hosts the Anthropic models. Azure, totally, you can do all this with Azure also, except i find the Azure user interface a little befuddling, complicated, little hard for me. So I like OpenRouter because, you again, API key, you get one endpoint, you just tell them what to use, and it uses it. 03:01.27 Frank Is that right? 03:01.66 James There you go. 03:01.75 Frank Did I get that right? 03:02.66 James Yeah. Well, and and to your point, like yeah you can then, for example, if you were using a coding agent like Copilot, for example, you can in VS Code, you can bring your own key, you can point it to OpenRouter, and then you would get all your things. 03:14.82 Frank Okay. Yeah. 03:16.48 James If you want a QN or you want a whatever the the thing of thing is, other models that aren't available out of the box, you can bring your own and OpenRouter would let you point and pay. 03:19.90 Frank yeah 03:26.10 James How do you pay? You you pay OpenRouter and then OpenRouter pays other people for your token usage. 03:31.48 Frank Yeah, exactly. And I would say that's one of the biggest benefits of it is they actually make the pricing simple. Everyone seems to like really obfuscate their pricing and everything. But when you go to a model page, it lists all the providers and all the rates they charge for the different models. You know, it's gotten complicated the way models are priced so because you have the input token count, the output token cost. The cached token cost, the real-time token cost, the image token cost. There's a lot of tokens out there and a lot of costs to be tallied up. 04:04.95 Frank um And that's actually where I was starting with this story was my little library. um They also have free models on Open Router. So you can sign up there, create an account, and then use a bunch of models for free that are obviously rate limited. 04:14.34 James Yeah. 04:20.03 Frank And they'll yell at you after you use a certain of number of tokens. But and the other problem with the free models is they're a little bit transient. They come and they go. and it's you don't always get notified. So in my cross intelligence library, in its unit tests, it actually talks to a real server, which I know everyone, that's not a unit test. It's an integration test. I don't care. i'm trying to test the code, OK? It's got to talk to something. i'm not mocking it. Mocks are dumb. So but 04:52.25 James True, che is true, true, true. 04:52.48 Frank so instead, what I'm doing is I'm paying money every time the unit tests run. And they run very slowly because of all this. um But the model that I was using, ah I forget, we'll call it like Llama 4. I think it was one of the Llama 4s. Llama 4 colon free. 05:09.24 Frank The colon free being the important part because then you don't pay. Well, it turns out these colon free ones tend to come and go. And they tend to disappear. And so all my unit tests were failing because that model isn't being served anymore. 05:23.30 Frank Hilarious. Welcome to 2026. It's crazy out there. 05:26.84 James And then you need like a fallback, right? So you can say, okay, does this one exist? 05:29.40 Frank Yeah. 05:30.19 James I'll fall back to these other ones. I have the of the v of the VS Code ah changelog Twitter account. And it's funny because I coded that up. 05:40.41 James And it's it's basically looking at Markdown files on a GitHub to find the release notes for like the insiders build. 05:45.84 Frank Okay. 05:46.05 James But then like there's a day where like there's a release and like the URLs need to update and all this stuff. And we just have an aka.ms, so it'll switch. But it was like, okay, like look at the link and then like look back one like just in case like there's other things. 05:58.00 Frank Yeah. 05:58.12 James So it was like looking back. But then we're in the state where actually the aka.ms link was pointing to the stable build. I actually need to look. plus a number. so i was like, oh, like look. 06:08.56 James So was again, it's like fall back, but also fall forward. 06:08.57 Frank Okay. 06:11.12 James Like, oh, the link is wrong, fall forward to a build, you know, look at the other build. So I put that in. And then it was, it's really fun to watch these models. 06:17.05 Frank You 06:18.56 James I was watching GPT-54 like do thinking and it's like analyzing the cobwebs and it's like, it's like, actually, the the solution is very simple. You're already looking one minus. Why don't you look one forward too? And then it it was it like grinded for a bit and it was like one line and the code changed. i was like, that's great. I was like, I could have, I could have looked and understood the code. And that was a very simple change, but thank you. Now I know, now I know what you wrote a month ago. So, um, 06:44.89 James But thinking of this as what's very fascinating um is that in our toolbox, we've talked about a lot of things with agents, encoding agents, and one of them is the models. that That's the thing in your your toolbox. You also have MCP servers. Those are in your toolbox. We've talked about instructions and guiding the navigation of these things. 07:08.94 James There's the custom agents, which you can customize sort of the system prompt and the tools advance. 07:13.87 Frank That's advanced. 07:16.47 James But now, Frank, there are more things than that. There are ah hooks. There's hooks. There's skills. 07:24.35 Frank Hooks? Oh, shoot. I didn't know. 07:26.04 James ah 07:26.13 Frank Oh, I know about skills. I didn't know about hooks. Okay. 07:29.50 James um There is... I'm going to look at awesome copilot. 07:31.68 Frank Did you know there's WebMCP? 07:32.06 James When you go to awesome... 07:33.50 Frank Did you know there's AndroidMCP? Do you know there's MCP everywhere? 07:36.71 James There's MC... There's MCP apps. Did you know there's plugins? There's plugins, which actually 07:42.31 Frank Oh, there's plugins. I did learn about plugins. 07:44.60 James They take a bunch of stuff and then they bundle them together and they deploy them out into the link. So you got agents, instructions, skills, hooks, workflows, plugins, MCP tools, all these things all in one. And they're probably not even scratching the surface because other stuff that people would talk about. 07:59.12 Frank Yeah. 07:59.29 James But I've been having this conversation recently with some of my coworkers because it seems like skills are like the new cheese tacks for dogs. 08:06.40 Frank Hmm. 08:10.02 James it's like Everyone's just like, I need everyone's skills all day. I'm anti skills. 08:14.24 Frank Yeah. 08:14.97 James know many skills I need? 08:15.63 Frank Your anti-skills? Okay. 08:17.08 James Zero skills. know how many skills I have in real life? Zero skills. I'm going to have my coding agent match mine. 08:21.72 Frank Hmm. Hmm. 08:23.00 James No skills. I'm i'm skill. i'm I'm one instructions, copilot instructions.md. 08:25.19 Frank Hmm. 08:29.50 James That's it. No agents, no hooks, no workflows, no plugins, just skills and one MCP server. That's that's my, I think I'm doing it wrong. 08:37.86 Frank and you know I went one beyond that. i went all skills. So one of the very first agents I wrote was an agent that could generate its own skills. 08:42.44 James Oh gosh. 08:49.29 Frank And this is when things got a little bit creepy because I was like, what am I going to Okay, so I want like... I want an agent that can improve on itself because we're always talking about autonomous stuff. you know like I want actual AI. I don't want just automation. I want AI. I want something cool. 09:05.83 Frank And then for that, it needs to grow. It needs to develop skills, James, unlike you. It needs to develop some skills. Yeah. And so I thought, wouldn't it be clever if the first agent and I wrote just wrote out a bunch of its own skills? So if I'm like, oh, I need this thing from GitHub. Well, it doesn't know how to do that. It doesn't have that skill. But what if it wrote a skill MD file and threw some scripts into a subfolder called scripts? And then all sudden it could actually do the skills. So it's funny. I went i went off the deep end, man. i This was the crazy like cyclone of AI generating AI. i had no idea which agent was doing what anymore, but it's kind of glorious to just watch itself build itself and to give it that capability of just build out your own skills. I have to say the experiment was a complete failure. 09:59.40 Frank I decided, no, no, we are not going to do this, but... I can see a future. And by future, I mean six months down the road where someone smarter than me does that correctly. 10:11.46 Frank And we start actually seeing these AIs show some form of intelligence versus just being good little puppy dogs right now. 10:20.12 James Well, let me break down these five or six things in general for everyone. 10:24.38 Frank Okay. 10:24.88 James If you're brand new, you're like, wow, they're talking about this stuff. I don't know what any of this means. That's okay. 10:28.86 Frank Okay. 10:29.46 James Let's start with instructions. I'm just going to go. I'm going to go one by one by when they were introduced into the world. 10:36.14 Frank Oh, okay. 10:36.22 James so all right. All right. Instructions, the whole idea of custom instructions or agents.md file or your your claw.md files are all the same thing, is that these are little files that you give information to the agent that will be sent with the request every single time that you put out um with information. It's in the context window, I should say, of of that. of when you're sending a message to the agent. Now these instructions are usually like best practices um for how you'll want to code. For example, if it's C-sharp, if it's you know Razor, if it's HTML, it's usually how you want to structure your application. If there's things about accessibility, you know things like that, maybe how to build or run your application. This is normally what's been in them up until this point, for example. 11:22.90 James Now instruction files can be for everything or for like a, a glob, right? For example, like only for C sharp files, will load up my C sharp, you know best practices here. 11:32.27 Frank Nice. nice i didn't know that. 11:34.36 James So, but instructions were all we kind of had for a while. And a lot of people let those grow over time. So it'd be like lots of instructions to be complicated, lots of context in there. So from that, the next thing that happened were, um, 11:49.71 James MCP tools. So everything's context. So instructions, context, MCP tools, MCP tools are all about kind of more real-time information that the model doesn't have or actions that can take on your behalf. These two are very independent instructions over here. 12:04.77 James MCP tools are over here. The difference is that MCP has a bunch of tools, a bunch of names, like the GitHub MCP one. It can create issues. It can create a pull request. It could search for issues. It could search for users, right? You might have Superbase, and the Superbase one could you know run a schema change. It could query your thing. 12:21.21 James has a bunch of these tools. You load them up. And if you ask it to do something, it'll use the metadata from the tools to say, oh, I have this tool. I have this capability. 12:30.41 Frank Yeah. 12:31.16 James I can go do this thing. And then you kind of got into this frame, which is, hey, like these agents like have different modes. Like there's a plan mode, an ask mode, an agent mode. 12:45.56 James um What if I was able to create my own custom agent? Like I wanted to do something very specific, like a research agent. I wanted to have a GitHub agent that all it knows how to do is interact with GitHub because that's what I want to do, or an Azure agent. 12:56.32 James So it would override basically the custom the system prompt, and then I would also define what models or what MCP tools were you know it could use. So for example, I might have a GitHub expert that all it knows how to do and all it has access to is reading my code base and also the GitHub MCP tools. 13:14.78 James So that would be all it would do. right 13:16.50 Frank Yeah. Mm-hmm. 13:17.34 James and then In the more recent months, it was, wow, there's a lot of context growing here. What if, for example, instead of me having a custom instruction that was, hey, this application does a lot of image resizing, here's 500 lines of custom instructions on how to work with image magic, for example, to do custom image resizing. What if I created a reusable skill? 13:45.56 James And a skill is something that you load on demand because 13:45.95 Frank and 13:48.66 James You know, a skill like riding a bicycle, I don't have to do that every day, but I load that up on demand like Neo and the matrix. I load it up on demand, boom, right? And a skill's in a folder and it can have other instructions or resources. so it could have a JavaScript file, it could have other markdown files and would load them up. So Frank would say, oh, I want to do some imagery sizing. Oh, I want to build my application. There's a little bit of metadata, just like an MCP that's like, I know how to do this thing. 14:13.48 James And it'll load it up on demand and then it will take a look at it and boom, it's good to go. so that's where skills are. So skills became really popular because it was like, what if we don't bloat the context? We have all these capabilities. 14:22.96 Frank Okay. 14:23.99 James Boom, I want to do this stuff. Now hooks are actually completely separated. They don't have anything do with anything. Hooks are the agents doing these stuff. It's loading a skill. It's reading instruction. It's starting. it's stopping. 14:34.26 James It's resuming. And hooks are hooks into that system where you can do special things. So you could give it instructions or run PowerShell scripts or bash commands or things like that. in between And then a plugin was like, dang, we got like 8,000 things. 14:47.87 Frank yeah 14:47.93 James What if we had a system that was like my my my ah my GitHub plugin has the MCP, it has some skills, it has some instructions, it has whatever. 14:58.38 James didn't even talk about prompts or anything like that, the MCP apps and that stuff, right? 15:00.56 Frank Good 15:01.54 James But you can bundle up all that stuff and do a plugin that's curated up there for you. Whoa, so skills. 15:08.23 Frank good job. 15:08.63 James People are like, scale, scale, scale, scale. skills And people are like, I got a thousand skills. And the question is, if you got a thousand skills, is that just like having a thousand MCP servers and you overload the system? 15:18.79 James And that's a good question. How are you actually using skills? Because the world's gone crazy. There's Azure skills,.NET skills, skills, skills, all the skills. 15:25.83 Frank Yeah. 15:27.74 James Frank, how many skills do you got for reals? 15:31.50 Frank Zero. I'm like you. 15:32.76 James Zero skills. 15:33.37 Frank I'm skillless. Yeah. Well, I did have the wonderful idea, like I was saying, of have the AI generate its own skills, but meh. Okay, so here's the deal. Here's the deal, James. Skills are things that you don't want to write tools for. Tools are function calls. Tools are MCP tools. That's like um that's more of a LLM thing. They're called tool calls. The LLM ken is told about a JSON schema, and it knows that if it provides data in that schema and it calls this thing, then the thing executing that AI will execute some external tool. 16:11.46 Frank So that's what the MCP servers are, basically. They're just a standardized plugin interface. Oh, sorry to reuse that word. They're a standardized interface for calling tools and adding tools and all that stuff. 16:25.54 Frank So my perspective on skills is skills are just an easy, convenient way to create tools that are not MCP servers, that are defined primarily in Markdown. 16:30.91 James you 16:37.58 Frank So you can give them like, here's step one, step two, step three, here's the things I want to do. And you can also point them at a little bit of code if it's easier to add a little script that does something. So in the case of like your image resize, I might create a skill that says, i am the image resizing skill. 16:55.00 Frank And here are the six things I'm capable of doing. And in that markdown file, I could say, in order to double the size of a thing, here is the image magic script I call to do that. 17:07.48 Frank um That's all cool. that that I like that, honestly. You had whole things like Open Claw ah come out that are essentially just giant collections of skills. That's all Open Claw is, big old database of these skills. 17:25.05 Frank They could have been a big old database of MCP tools or other tools. um However, MCP, like I said, is just a way to add tools to these AIs. 17:39.38 Frank But skills are more, um they're easier to create from like a developer like me can just sit down and create a skill. That said, i don't because um what I find is I tend to do junky skills. And junky skills are little code snippets I put into my agents.md file. And I say, if you need to build my app, here's the command line to run. Whenever you make a major change, run this test line. And I put all that into what you were calling the system prompt, the agents.md file. 18:16.16 Frank Which, by the way, I've got to say, I've got to remind everyone out there, if you're listening, like there's bad marketing around these things. like I was talking to a friend the other day, and they weren't aware that Copilot had the capability to do like an Agent's MD file. 18:32.73 Frank And they're like, oh, it's an anthropic thing. 18:33.38 James Mm-hmm. 18:35.04 Frank like yeah, but everyone's copying everyone else. So whatever feature Google comes up with or Anthropic comes up with or GitHub comes up with, they all copy each other immediately within a week, usually. 18:47.81 Frank So it's it's funny that all these things are, they're not standards, but they are standards because everyone's out there copying each other. So just in case you're out there and you didn't know, like pretty much all these fancy features are available in all the different millions of different agent um user interfaces. 19:04.85 James Oh, yeah. If you go to agents.md, for example, um... You can use it in Vue supported agents, Codex, AMP, Jules, Cursor, Factory, Rucode, Ader, don't even know what that is Gemini CLI, Goose, Kilo Code, OpenCode, Phoenix, Zed, Semgrep, Warp, GitHub Copilot, Coding Agent, VS Code, ah Ona, Devon, Windsurf, UiPathing, Juni from JetBrains. 19:22.30 Frank Yeah. 19:32.39 James I mean, that is just agents.md. 19:34.52 Frank Yeah. 19:34.83 James And actually funnily enough, um What's not on there is ah Anthropic with Cloud Code because they have cloud.md, right? 19:43.43 Frank That's funny. 19:45.88 Frank Claw.md. Oh, there yeah, they're being such sticks in the mud. 19:47.26 James um But they made agentskills.io, which is Anthropic, 19:55.96 Frank Yeah. 19:57.11 James just like MCP, also Anthropic. 19:57.26 Frank Yeah. 19:58.87 James And that also adopted ONA, MUX, VS Code, Claude Code, you what ah the they're in everywhere, right? 20:06.30 Frank Yeah. 20:06.43 James So you see like all these standardizations come up, right? So everyone's coming in standardizations, but you also don't want to be left behind, right? 20:10.44 Frank Mm-hmm. 20:13.08 Frank Yeah. 20:13.21 James Because if all of a sudden, like VS Code doesn't have skills or VS Code doesn't have AgentsMD and blah, blah, blah, right? So they all kind of come together on it. Yeah, totally. 20:20.85 Frank So just getting back to your question, though, what skills do I have? 20:23.24 James Hmm. 20:24.25 Frank I'm a little bit sad to say I have zero because like I totally get their benefit. I get that they're actually pretty easy to create. But in the same way, I never bothered to create like prompt files or anything like that. I tend to just... 20:38.42 Frank create an overly large agents.md file, and that works for me. like um you know they they put in the little circle in VS Code Copilot that shows you how much of the context you're using. Most of my context goes to like the stupid tool calls and all that kind of stuff. So my my little prompt file doesn't take up many tokens at all. It's fine. 21:01.56 Frank um i Like everything we talk about on here, it usually takes me a few months to finally adopt it and figure out where it's going to fit into my flow. like I wasn't even using different agents before. Now I at least use like the plan agent versus the implement. like I've learned to do that much. 21:18.10 Frank um I've learned to create the agents MD file. 21:18.18 James Nice. 21:20.78 Frank you know that All these AI companies are moving forward at the speed of light. I'm moving at the speed of sound. um I'll catch up with them in infinity years. um But I do get their point. 21:33.33 Frank like it just it It's an easier way to extend these AIs and to write a little bit of code that they can execute and do all of that kind of stuff. So I really do appreciate skills. 21:45.21 Frank I need to learn where they fit. And my my other problem is all my apps are so different from each other. I just haven't in my own mind figured out what is the common set of skills that all my apps could actually share and make use of, like where I could create the Frank plugin, which enables all these skills and every project I'm in. 22:05.75 Frank I haven't quite figured out what the Frank plugin is yet and what skills that would involve. So that might just be my small brain at work. 22:15.49 James I'm starting to use a lot of, um I have this ah folder in my OneDrive at work. It's called workwork work, work, work. And ah my whole idea is to create a folder and a structure in which um work-related MCP servers and skills and instructions and prompts are all there. So for example, I have one that's like, you know, updating different GitHub issues. I have one about like YouTube stats. And I do this like ones where I need to like go look at GitHub. I need to go talk to YouTube. i need to do this stuff where, 22:45.71 James What's nice about that is I have the GitHub MCP, I have a YouTube MCP, and then I have skills that say, okay, hey, I know how to go query and go do this thing in XYZ. 22:48.93 Frank Mm-hmm. 22:54.80 James So I'm using in that regard, which is like very tailored. In VS Code, you can actually do slash create skill or slash create like prompt or slash create whatever, and it'll just create it for you. It's like you did this thing, now turn into a skill. 23:07.38 James In my own applications, I'm still in that same boat. Like I do think that there's obviously super cutting edge, right? And I demo these features. Like I've demoed how to use skills all the time and things like that. 23:17.98 Frank yeah 23:18.68 James I prefer if the agent just does it for me. Like for example, in, 23:21.50 Frank Yeah, that's what I'm saying. 23:24.25 James Yeah, in the most recent ah VS Code, there's a new integrated browser and you can link the integrated browser directly to agent mode. And what it can do is it can invoke commands in the browser, but can also automatically run playwright scripts if it needs to go even further to test the feature. Where before you'd have to rig this all up, now it just does it, right? So I'm still trying to figure out the integration. And then usually there's that light bulb moon moment, right? 23:49.59 Frank Yeah. 23:49.85 James And you're right, like right now in my instructions, for example, I, at the very end, I say, whenever you finish a turn and you've completed before you do this, build both the app store build and the normal build. 24:04.97 James So I'm doing a lot of builds on my machine, but build it in debug. 24:06.00 Frank Okay. Mm-hmm. 24:08.52 James It takes 15 seconds because I don't want you to write, I don't want you to write buggy code. I don't want have to have open Xcode, hit the debug button and it doesn't run. So I'm like, always do this. That could be a skill, right? 24:19.13 James But then a skill is loaded on demand, which is I'm asking it to do a build, right? The instruction is I am telling you at the end of every turn, do this thing. So that's where it becomes a little fascinating of like, okay, this skill you know is about being reusable, but I actually want things to happen every time. 24:38.76 James So that's like the kind of the trade-off and where you would use those different things. 24:41.33 Frank Yeah. Yeah. 24:42.32 James Now, what's fascinating is that you're starting to see these repository of skills come out. you know And Vercel has a skills, like there's like skills marketplaces and plugin marketplaces and all this stuff that you can plug in. 24:54.42 James And what would be very fascinating to you and me is like, what if there were a bunch of .NET skills that we could just plug in, right? Because one of the things is, like, for most people, they didn't want to create instructions or a skill. So there's literally a button that pops up when you open up VS Code that's like, and or the Copilot CLI that's like, 25:14.52 James slash init this thing and like, we'll do it for you, right? It'll it'll analyze your code base and do it for you. 25:17.38 Frank All right. 25:20.09 James And for plugins, you're like, well, where do I even get a plugin? Should I write a plugin? Like you're saying, like, how do I do it? But what if there was just plugins available? So actually now if you go to getup.com slash.net slash skills, i think there's also one for Azure. So Azure slash skills. 25:34.01 James there is a bunch of skills and plugins readily available to you. They're distributed through a plugin store, which have skills. So the skills are plugins that have skills and agents and other stuff associated with them. 25:47.13 James But there are a few things that are of interest because the thing 25:47.54 Frank Yeah. 25:51.32 James is you kind of want the agent to get it right for some of these complex things. And the agent knows a lot of stuff, but as things evolve, you want them to be up to date. So I wanted to kind of go through our use case of plugins, which right now is minimal, but because just a few days ago, the.NET team released.NET skills, 26:12.94 James I wanted to kind of go through, do we find these, like any fruitfulness from these? Are there things that maybe you would put into your application because there are a base level set of skills and plugins available for every.NET developer that you could easily plug in to the CLI and to VS Code or anywhere else that skills are related. So I kind of want to talk through and say, have you looked at these things? Have you analyzed them? 26:36.63 James Are they juicy enough, right? 26:39.93 Frank Yeah, so I dove in because the moment you you had mentioned kind of ah early precursor to this. What what was it called? Like.NET Awesome or something like that or something like it was like a repository. 26:51.51 James Awesome co-pilot. 26:53.53 Frank Awesome Copilot. What a great name..NET Skills has not be in that name, but.NET Skills makes a lot of sense. 26:56.54 James Yep. 27:00.77 Frank um Yeah, this repository of here's a bunch of prompts that people have come up with that they find useful. So I have been digging into them because i was a little angry at myself for not digging into the awesome co-pilot ones. 27:14.94 Frank So I decided to remedy that by first learning about these.NET skills. And I have to tell you the plugins part was the first thing I had to learn about because I'm like, what is a plugin? But it turns out plugins are just combinations of all these skills. And so I started to dig in. um They group a lot of the skills. 27:31.96 Frank I was curious, like, what are the generic ones going to be? How detailed all are they going to be? Because I have tried to write a few of my own skills. And I wanted, these are kind of like pro tips also. Like this is like, I learned a program by reading other people's code. Well, now I'm learning how to AI by reading other people's prompts and everything. So even, i not to skirt the issue completely, but even if you don't find these skills particularly useful, they probably get the brain juices flowing to the point where you can start to think, OK, this skill is actually pretty close to what I would want. um maybe I'll start tuning it. So I dove in with kind of that perspective. I don't trust people to create reusable things that I'm going to like, but I was all set to be impressed by like, okay, maybe this will get my my brain flowing on things that I would like. I have to tell you, the one skill, I'm probably not going to use it. 28:26.52 Frank But I had the best time reading it because I learned a lot was the.NET C-sharp skill for how to do native interop, P invoke, basically. And I'm trying to find it in the repo right now. 28:43.54 Frank um it was one of the i think it's just in the yeah it's dotnet skills slash dot net slash c sharp scripts oh no sorry uh dot net p invoke is the skill c sharp scripts is also interesting we we can talk about that one uh well i found it really funny because someone took put all the effort into writing this skill which is basically 29:03.05 James Thank you. 29:07.45 Frank a blog entry on how to do p invokes correctly in.NET and specifically like a new way to do it because I always do my p invokes with dll import but there's a new way to do it there's library import it's better it's newer it's.NET sevener sevener and I had the most fun just reading the skill I'm like well now I know as a developer how to do p invokes better than I did before And if I ever do need like AI's assistance for doing these things, I'm 100% going to pull in this skill. 29:44.31 Frank So once again, it's the.NET skills, slash.NET, slash.NET P invoke, skill.md. Good stuff in one. 29:52.09 James Yeah. 29:53.05 Frank if you if If you haven't kept up with how P invokes work in this world, just go read this document. man Treat it like a blog entry, because that's what these things basically are to me at this point. 30:04.38 James Yeah. There is, i think the thing that I'm the most interested in with skills is that I feel like when people are like, Oh, skills are like, I'm going to, they're reusable. So I'm going to use them all the time. 30:15.26 James But actually i think the benefit of a skill is if it's hardly ever used. Okay. 30:20.62 Frank It's the esoteric knowledge. Yeah, I get you. Yeah. 30:23.86 James Yes, because the thing I'm really fascinated about, because the things that the things that AI should be doing every single turn ah when I ask it to do something, it should know how to just do those things or with my guidance through my instructions should know how to write code. i should be able to interpret. It should be able to look at my code. 30:45.27 James It should do it. And then also, if you've P invoked once in your code, it should look at your code. and write code that same way. 30:52.28 Frank Yeah. 30:53.98 James Right? So ideally this skill is like, I've never written a P invoke before, or I need to write a P invoke. I am going to follow this and not have to wrap around and do a bunch of stuff. But the thing that find really fascinating is the.net diagnostics skillset. 31:09.84 Frank Oh, yeah. That was going to be my next one. You're getting ahead of me. 31:13.75 James Well, it is super fascinating because it is things that I'm not doing that often, but I actually maybe should do like deep debugging, deep performance investigations and incidents analysis. 31:22.84 Frank Oh, that one. Okay. Yeah. 31:25.53 James And the, yeah, so this one is filled with analyzing.net performance, CLR activation, debugging,.net trace collection, dump collection, micro benchmarking. 31:25.56 Frank Okay. 31:35.91 James I mean, again, these are things that I myself am not doing very often or have ever really done. But I would love to figure out how to do a dump collection or.NET trace collection and actually do it a full performance analysis. 31:47.35 James And even like you were saying, you go into this puppy and it is full of all sorts of goodies, inputs, outputs. And it's step by step. It is a beautiful document. 31:57.45 Frank Mm-hmm. 31:58.68 James It's almost just documentation. But it's it's even... More because it's very specific towards like how agents would do it. Scan the report, do this thing. It's like talking about grep filing. It's talking about this. Look at severity levels, like how to do inputs and outputs and all this stuff I mean, it is big. It's a bunch of code. That's like, I am doing performance analysis and prioritization and fixing and these things as well. It's very, very fascinating to dive through as well. Reviewing hot pass, audit ah you know, auditing allocation heavy patterns. These are things like I do not do. And it's 50 performance anti-patterns, right? Including like link and regics and collections. So it's interesting because I'm wondering, right? 32:41.21 James Like, The link stuff is like inherently in this in this case for a skill, which you can also just run as a prompt, by the way. So skills can be invoked as prompts. I can just say like slash analyze and it would just do it to a specific file or to the whole code base. 32:53.33 Frank OK, thanks for that. I didn't know. i was curious about that, actually. 32:55.47 James Yep. Just slash. So you can say, hey, analyze the code base. And it be like, oh, I can analyze or you can just say slash and then it'll just call it just like a prompt. So then that becomes a debate of like, well, do you want a prompt or do you want, you know, skill or both? 33:05.16 Frank Mm-hmm. 33:10.62 James And it depends on how you want it to be invoked. That can be invoked by the AI organically or not. So it's a little bit tricky. But yeah, I think in this case, it becomes very, very fascinating because i don't even know how to do half of this stuff. 33:23.03 James I've never done half of this stuff. 33:23.87 Frank Yeah. 33:24.11 James and I've been doing down that for like 20 years. You know what I mean? There's kind of bananas to think about. so 33:29.66 Frank Yeah, but I mean, God, isn't it weird how this is just better documentation? Don't tell any of the docs people that. I'm sorry, docs people. But like it's so like pragmatic, because you have to be pragmatic with an AI, that like it's refreshing kind of docs. 33:45.18 Frank um The one that I keep laughing at myself with is the.NET MSBuild or building stuff. How to generate a bin log. 33:55.89 Frank Bin log. Bin logs. Everyone at Microsoft talks about how great bin logs are and how how much detail there is. And you can learn... if Are you getting a weird build failure you don't understand or a weird proper to be property is being set that you don't understand who's setting it or why it's being set or any of that? Bin log it. It's the answer to everything. Except i always try to tell the Microsoft people, like no one knows how to do bin logs except for Microsoft employees. like I generate two gigabytes of log files and then I just look through it by hand and I don't know how to bin log. i don't 34:31.81 Frank Bin log confusing. I know good, but bin log bad also. Well, James, there's a skill for that. um There's in fact too, there's bin log generation skill and bin log failure analysis. 34:46.31 Frank I still don't want to know how to generate bin logs, but you know what I'm willing to do? Tell an AI to go generate a bin log. I'm willing to do that step because I know, according to Microsoft, bin logs are going to solve all my problems. 34:58.56 Frank I am 100% willing to say, hey, AI, go get this plugin, go use the skill, figure it out for me, and then upload the bin log directly to every Microsoft employee and have them solve the problem. 35:11.81 Frank That's what I want. 35:11.99 James The interesting part about this is like there's, you know, there's blogs, there's documentation, there's tutorials. These are more like tutorials of like, here's how to do this thing. 35:19.05 Frank Yeah. 35:21.35 Frank yeah 35:23.06 James And there's not a lot of information of why you're doing it or like the meaning behind it Documentation is all about, is all about the full story, right? Of like, oh, bin log. What is a bin log? How does a bin log work? it'd be like It'd be like a whole dictionary, right? Which makes a lot of sense if you know nothing about bin logs. But in this modern age, like we can just tell the thing to do the thing and it'll just know how to do the thing for us automatically. Like, oh, you know what I need to do is I need to analyze the performance. I need to analyze the binary logs. I don't need to know anything about the whole history of bin logs. I just needed to do the thing. And that's really what skills are really about. It's like do the thing. 36:00.18 James and here's exactly how to do it, which in my mind, as I'm reading this skill, it's kind of like that tutorial. But sometimes tutorials also explain more things. 36:07.16 Frank Yeah. 36:09.05 James These explain nothing. It is here, I mean, explains it, like step, write your thing. 36:12.89 Frank Yeah. 36:14.32 James It's here is how to do the thing, but it's not, here's why you're doing the thing. The AI doesn't need to know why it's doing the thing. It just needs to know how to do the thing. 36:22.74 Frank Yeah. um I don't know. I feel like it's... I'm not sure what documentation is anymore. Why isn't it this? Because I almost prefer this. 36:33.18 Frank like Here's one..NET MSBuild scales. don't know why I'm obsessing over the MSBuild ones, but there's build parallelism. 36:40.46 James They're 36:42.16 Frank James, ah a lot of my builds take forever. And by forever, I mean many, many minutes. And you know what it says right here in like line three? 36:53.24 Frank Use dash M. Because you know why? The default is one node, sequential builds. If you just do dash M with nothing else, it's going to do a parallel build. I'm like, why isn't that the default? Why? I paid all this money for all these CPUs. Just use all the CPUs. Why why is one the default? 37:14.39 Frank that That's like the small arcane knowledge that you have to dig through. Lots of docs to find out. But here it is, line two of the skill, like, hey, pass M without a number, and it's just going to use all your CPUs. 37:21.47 James Yeah. 37:28.72 Frank I'm like, yes, yes, that that is what Frank wants. Frank wants all CPUs in use all the time. 37:33.11 James Yeah. 37:35.99 James Well, 37:36.20 Frank I'm not lot from these. i'm I'm hoping I will use them as skills, but man, I am using them as tutorials also right now. 37:42.36 James Well, my favorite part also is that there's not just skills in this.net skills. There's also agents. And inside the MS, I think the MS build is my favorite one, by the way. i It's my favorite one. 37:52.70 James You'd think it'd be like Maui or something else. No, I think this is it. 37:54.79 Frank Right. 37:55.20 James Because there is an MS build Agent, there's just an agent that all it does and all it knows how to speak is it is an expert at MSBuild and using these skills and doing these things. 38:04.64 Frank Love it. 38:05.75 James But there's more agents. There's actually like an agent for MSBuild code review and then a build perf agent. So you can have just an agent that all it does is build perf that knows about these other skills in combination. 38:13.01 Frank Yeah. Yeah. 38:16.50 James So it is kind of fascinating, like reading these things and understanding like where it's at in this moment in time ah for these things. 38:17.39 Frank yeah 38:23.72 Frank yeah 38:25.35 James It's it's really fascinating. 38:25.91 Frank You know what I really appreciate here, which is um I think when these AIs were first coming out, I was a little bit nervous. And I think I said on record a few times, I'm like, this is the death of a lot of programming languages because the people training these networks are intentionally or unintentionally biasing them towards, well, in the beginning was definitely JavaScript because there's just gigabytes of, there's terabytes, exabytes of JavaScript sitting out there on the public internet. for the AIs to just go learn from. Every website has gigabytes of JavaScript that these networks can learn from. And so JavaScript had an unfair advantage in the beginning. These AIs were very good at writing JavaScript. And I think I was very nervous in the beginning that 39:11.22 Frank um we we're all going to be at the mercy of the people training these AIs. What I'm starting to understand now is these skills are a great way to backfill all the missing knowledge. 39:24.54 Frank So if I were to come out with Frank's programming language version six tomorrow, you bet your doggy that I'm going to write a million skills about how to use the compiler, how to invoke the debugger for that language, how to build for this operating system and that. And although I would like to say I'm writing that documentation for the humans, 39:45.97 Frank today you're running it for the AIs. And that's what these skill files are. So I just want to say, like I'm kind of happy that this is filling in all the parts. Because like yeah, I don't think a lot of people know about bin logs or parallel builds in.NET. 40:02.62 Frank Because we just don't talk about it that much. A lot of people just use Visual Studio and they just take the defaults and just run away with it. And here's a beautiful way to get that knowledge out there and more importantly, we get into the hands of the agents so they they can help everyone. 40:17.97 Frank It's pretty exciting, honestly. 40:20.50 James Yeah, and I'll be interested to see where these things evolve. I do like that there are more easier ways of accessing these marketplaces, these plug-in systems, like give me this stuff. I do envision a day, and I'm curious your thoughts on it, is like if I just create a project, like a Maui project, and I'm only in VS Code or Visual Studio, 40:48.18 James Should the skills just be there? should they Should they even be visible to me? Should it just have a bunch of skills ah available how to do things for Maui? 40:54.36 Frank Yeah. 40:56.95 Frank Yeah, I think it should. um I mean, there's a lot of skills here. So this.NET skills, like we we can't go through all of them because there's a lot of them. Someone put a lot of effort into all of these. And each one has one paragraph description, basically, with it. 41:12.79 Frank And it's trying to summarize it. um it's It's tough, but you can definitely see a world where every system prompt, whatever you want to think of, like the initial prompt, the initial context that every agent is given, is a list of all the skills in the same way that today we're giving it a list of all the tools and the tool schemas and all that kind of stuff. Now, right now we're in the awkward state of we all basically have a token budget of a little over 100,000 tokens and we're all trying to live within that budget. you know Bill Gates said 640k is enough. We're not even up to six forty k yet. We're So, you know, I look forward to the world where our contacts are at least 640k. 41:55.06 Frank But when when we do get 640k contacts, yeah, put list out every single, if it's a.NET project, list out all of these.NET skills. I'm taking a wild guess. 42:06.58 Frank Let's call it 100 them here. That's 100 paragraphs. Yeah, please, please pre-fill my contacts with at least informing the AI that they're out there. Because Yeah, I can do slash command, and and thank you for telling me that. 42:19.47 Frank But I have to know that skill exists if it's not discoverable some other way. 42:22.87 James Yep. 42:25.35 Frank And these things, I would rather the agent know about them than for me to memorize all 100 skills are out there. 42:26.11 James Yep. 42:34.77 James I think so. I think it'd be fascinating how to see how the tooling evolves because we're still in the state that you have to go configure things, right? 42:41.93 Frank Mm-hmm. 42:43.61 James I do believe that with MCP, it's like the furthest along. I mean, instructions are instructions, like there's a in it and do a thing. But I think with MCP servers, at least it's like, oh, I'm doing this thing. 42:54.64 James There's a gallery. I can click. I can install. There's remote servers. like you know' There's a little bit more integration there. it'd be fascinating. I know now in VS Code, I think in the extensions, you can say at agent plugins, and it'll show you plugins, and it'll do a bunch of stuff. 43:08.64 James Configure it for you. As the tooling matures, i do think that it'll be easier. 43:12.59 Frank Thanks. 43:14.03 James in an ideal world, would be really cool, right, in my mind, is as I'm just coding, It gives you like, Hey, did you know, like, there's a skill of it. I see that you're doing, ah trying to do a bunch of MS build. 43:24.39 Frank Yeah. 43:25.88 James I have seen that there is a skill. Do you want me to load that up on demand? 43:28.80 Frank Yeah. 43:30.25 James It's like, Oh, I see that. I've seen this recently with agents where it's like, um, it really needed to do something with the GitHub CLI, not the GitHub Copilot CLI, not the GitHub MCP, but the GitHub CLI, which exposes basically anything in the GitHub API to it, including more things that are then in the MCP server. 43:45.18 Frank yeah. yeah. 43:50.99 James So it's doing some really advanced GitHub stuff and it's like, I really need to do it it's like, you know what? You know what I can do right now? I can just WinGet install this for you. Let me just do it for you. In fact, then I will WinGet install for you And you know what I'll also do? 44:04.64 James GH login. And I'll just, I'll just prompt a login for you. It's like, yes. You know what? The agent's like, you know what I really need right now, James? You know what I really, really need? is I need the GitHub CLI. 44:14.96 James So why don't you install that thing? And then I will just do it. And I was like, that's cool. 44:18.20 Frank Yeah. 44:19.24 James You know what I mean? So so I was like, yeah, just do the thing. You know, I'm on Windows. You know, I got Winget. do that I mean, ask me first and then do it. But I thought that was neat, right? 44:28.83 Frank Maybe. 44:30.02 James It's like, oh, I am now, like, that means that the the the model, these these these models, they're aware that there is a vast ecosystem of tools that it can use. 44:43.27 James It knows how to use those tools, but also knows how to get those tools. I think that's really important. It's like, oh, I see that this is a down in Maui app. 44:47.93 Frank Yeah. Mm-hmm. 44:50.55 James Oh, I see that I have all these skills available to me. In fact, it would just be better if they were all just there, like you're saying ahead of time, or at least very contextually, like, oh, I've loaded a Maui app. 44:57.50 Frank yeah 45:00.82 James Let me load the Maui things, right, that are like on demand automatically for me. And some people may not want that, but I think if you get better results because these are super hand curated skills from the developers and the engineers of the thing, then yeah, load that up for me on demand, baby. 45:20.50 Frank Yeah, and like you said, so MCP has matured. like It feels like every time I go into the chat, the first few seconds are spent optimizing tool selection. All that's doing is going through the giant database of tools and figuring out which ones it can throw out right now so it doesn't fill up the context with a bunch of JSON schemas. 45:35.61 James Yeah. 45:38.75 Frank I can easily see the same thing happening. 45:38.79 James Yeah. 45:40.56 Frank like Here are 1,000 skills. And as the very first thing it does as a part of my my little chat experience, it's little agent workflow, is go through those 1,000 skills and figure out the top 20 that, given this request and given the code base, will most likely be useful in this project. 45:58.24 Frank So like you said, it's tooling issue. But I like that these skills are here because like we can start writing them now. We can start building them. 46:06.15 James Yep. 46:06.62 Frank And then it's up to the tools to just make it easier to access them. This is this is programming, the AI. It used to be that we we were all told that we're going to write system prompts for the AI. 46:18.68 Frank What no one ever told us is like, no, you're actually going to write 100 system prompts for the AI. that's what's That's actually the best thing. And that's what these skill things are. And yeah, you you're you're making the distinguish you're distinguishing between agents and skills. 46:33.64 Frank But um I don't know. I feel like the agents part is kind of going to go away over time. wellll We'll see if I'm wrong there. But I think the fundamental building blocks, tools, MCPs to deliver tools, and skills being human authored tools without coding up an MCP. 46:52.35 Frank Yeah. 46:52.63 James Yeah. I mean, besides the, I mean, the plan agent that like really does a lot of finessing and doing stuff, there's like the ask agent, right? 46:53.24 Frank yeah 47:01.82 James And like really the only main difference between those two is like one can edit code and one is just the tools that they have available. What I think will be fascinating is if over time, these agents get better at understanding my context, like, or my, not even just context, but my state of my frame of mind, like often I will ask Yeah. 47:22.22 Frank Yeah. Read your mind a little bit. Please read my mind a little bit. 47:24.73 James Yeah. Yeah. So for example, I might say, oh do we did we really need to do that? I think we might be doing too much. And what I'm asking it is a question that just needs an answer and an and like an analysis doesn't need for you to make changes. 47:40.18 James And often what it'll do today, if I'm in agent mode, it'll say, oh, you know what? 47:41.03 Frank It's 47:44.87 James You're absolutely right. You're absolutely right, James. 47:46.75 Frank desperate. 47:46.83 James That is, I've overdone. So it's like, let me go ahead and modify this. I was like, I wasn't ready for you. I really want you to be planning right now, but I don't want to tell you, don't change code, only plan or go into those modes. 48:00.15 James Like I ideally want you to read my mind a little bit, which is hard, right? the It's the subtlety of the words that I'm using, right? And the system prompts and inherently the system prompts of each of those agents is telling it to do specific things. 48:08.54 Frank Yeah. 48:15.41 Frank don't even think it's so hard. like um i ran I'm sure everyone runs into that scenario of just the oh ready to please AI that's just so ready to go edit all your code. 48:26.99 Frank I'm like, no, babe, I just wanted to have a discussion here. um 48:30.02 James Yeah. 48:30.64 Frank I think asking it to read my mind isn't outside the realm of possibilities because it turns out humans are awfully predictable. And I think it can learn the pattern that Frank likes to talk through problems before he allows you to touch his precious artisanal code that he spent 20 years perfecting and doesn't want you just hammering away at it. Like, it could keep a little frank.md file that says, make sure to ask Frank at least five questions, even if we're just patronizing him. Yeah. It makes him feel like he's in control. And that makes Frank happier. And that means Frank will probably have approve of your requests later on. you know I could see it building this small psychological profile. And i really don't think I'm talking out out of field here. like 49:19.06 Frank Why not? Why isn't it doing that already? like It should know what I prefer and what I don't prefer without me having to write an agent's MD file saying this is what I prefer and what I don't prefer. Mm-hmm. 49:29.43 James Yeah. And there's these memory fragments that are being collected as well. And I don't actually know how those are working. This may be for a deeper discussion that someone that understands understands the memories and and how that works and however the coding agents are doing stuff. 49:41.42 James Because ideally I do want it to learn how I code and how I speak over time. 49:46.59 Frank Yeah. 49:46.81 James Right. Because a good example is like, if I say something in a certain way and then I'm, I stop it I'm like, Oh no, what I actually meant. And I steer the conversation to like, not like, don't do that. Do the same issue. Be like Oh, 49:57.59 James James is using these words and like what it is context is his is like this. So maybe in the future, before I make changes, I should do this thing like memory fragment snap done right now. The problem is I changed. I have like 18 machines. So are my memories scattered all over the place? 50:12.54 James Like memento up in here. 50:12.72 Frank Dropbox, maybe. Yeah. 50:14.36 James got sticky notes all over the place. Um, all right. All right. We're at 50 minutes in. Let us know if we are crazy about skills. 50:19.04 Frank Yeah. yeah 50:22.34 James Go check out the.NET skills. GitHub.com slash.NET slash skills. Great repo. Put it in the show notes maybe if I remember. um Let us know. do you got a bunch of skills? You got one skills? you got no skills? You have nothing? do you have zero things? If you have zero things at minimum, open it up. Set to GPT-5-4. It's very good. Say slash init in it and your CLI. Boom, boom, boom. Slash create create custom instructions. 50:43.95 James 5.4, very good model. Codex, also very good model they're all model. They're all good models, by the way. But GBT 5.4, my new default. So be careful, people. It's pretty good. It's got a pretty good, bigger context window. 50:55.62 James All right, that's going to week's Merge Conflicts. 50:56.34 Frank Cool. 50:58.06 James James's pro tip before we get out of here, Frank Kruger, did you know on Mac OS... You know your your menu bar, your menu bar up top, that thing up top, it's way up there, it has about 1,000 icons in it, toolbar, know, thing. 51:07.07 Frank Yeah. Yeah. With a little apple on it. Yeah. yeah Yeah. That one. 51:11.29 James It's got Apple on the far left. 51:11.35 Frank Yep. Hi. 51:12.29 James It has about 1,000 icons on the right. 51:14.52 Frank Yeah. Yeah. 51:15.70 James Yep. Did you know that you could hold down command and then you can drag them around? Pro tip. You can sort the order of those. 51:22.64 Frank Yeah, since OS X the beginning. 51:23.83 James Command. 51:25.87 Frank Yeah, every it's it's it's it's a real day when a Mac user learns that. It's very important. 51:32.12 James wow. Very important. ah Pro tip. 51:36.50 Frank That's a good pro tip. 51:36.67 James James is the pro tip of the day. Pro tip. All right. 51:38.74 Frank drag Drag those icons because they're in the wrong order. 51:39.07 James Let's go it this because we're conflict. like what' you say 51:42.64 Frank I said because they're always in the wrong order. They just guaranteed to be in the wrong order. 51:45.60 James What'd say? Oh, the crazy part. is that they're always in the wrong order. And then when you open a new app, you'd almost expect it to open at the end, but like sometimes it remembers the order in which it was. And you're like, how does it even know? 51:59.83 James Crazy, crazy Apple magic there, that's for sure. 51:59.87 Frank okay Yeah. 52:03.27 James um So I'm so used to Windows, which you can just drag it and put it down there because it's only, you know, it knows. 52:08.89 Frank Yeah. 52:11.02 James It knows inherently ah like a click and drag, like the click in the menu opens. It's not click release. 52:19.83 Frank Right. 52:19.99 James It is click release, but it's the the on Windows, you can long click, drag it. 52:21.72 Frank um On Windows. Yeah. 52:26.02 James It's the click release that opens it up. 52:28.41 Frank That was a Steve Jobs thing. 52:30.71 James Oh, it was? 52:30.74 Frank He doesn't want to have to do a full click to do something in the menu. mouse Push the button down, move the mouse, lift the button up. was ah That was a big Steve Jobs contribution to the Mac. 52:42.74 James Very fascinating. Very fascinating. It's not bad. 52:46.43 Frank Storied history. 52:48.09 James Wow. All right. That's to do it for this week's Merge Conflict. So until next time, I'm James Montemagno. 52:54.56 Frank And I'm Frank Kruger. Thanks for watching and listening. 52:58.42 James Peace.