I've been busy building things with the Copilot CLI! But more recently, my hands have been almost entirely out of the code and almost entirely out of Visual Studio -- and I never thought I would say that.
As with all livestreams, I'm looking forward to answering YOUR questions! So join me live and ask in the chat, or you can comment now, and I can try to get it answered while I stream.
View Transcript
All right, I think we're rocking and rolling here. We're not going to go to Instagram today because we're going to be looking at code, which should be pretty cool. Um, I'm hoping to do this live stream in a way that is looking at all kinds of code. Um, yeah. I think the idea that I had for this is that in previous streams, we've tried like I don't know, tried like sitting down to code some things. And uh, I find that by the time I'm through talking, it's like there's 10 minutes left and we're hoping that like co-pilot or Claude is going to put something together for us. Uh, and I think it's just cuz I talk too much. So, I figured uh maybe I would just walk you through some of the the stuff that I've been playing around with and trying to build and
that way I can just stop and talk about interesting things that I've seen along the way or if you have questions then we can jump over to that. But I feel like I've kind of set myself up for failure in the past where it's like, oh, we're gonna build whatever and then I just blab too much. I think we if we're building something from scratch, I think we need more time and I'm trying to do these uh roughly an hour long and you know we can probably schedule a live stream sometime where it's like hours long and we're just building stuff, but today's not that day and my Monday sessions like I don't think are the are the the right fit for that for me at least. So, if that's the kind of thing you're interested in, by the way, uh, leave a comment, send
me a message, let me know because like for content creation, I don't know, like I do this cuz I hope you folks enjoy it and you have fun. So, if there's another format or you want to like actually do like an end to end thing over a few hours or something, even if you can't make it live and you'd want to watch the the recap of that, let me know. Um, I'll do it. It's just that like this slot doesn't accommodate that for me. So, we're going to talk about a handful of things. Um, I'll start off by saying that the approach I've been trying to take starting off this year when it comes to AI tools is to play around with different tools. Now, we're a couple months in and I already feel like I'm going to start breaking the the goal I had,
which is to try different tools. And it's just because I've been having a really surprisingly good time with the co-pilot CLI. And I want to mention too that I I realize you might say, "Well, Nick, that's cuz you work at Microsoft. You have to say that." Um, I don't have to say that. I do work at Microsoft. But the the co-pilot thing isn't like a surprise, right? Like if you've watched my other stuff, you know that I'm a C developer at heart. I've been using Visual Studio for a million years. Uh not not the blue one, the VS Code one, the purple one, the big daddy Visual Studio. I've been using that for forever and that's where I feel at home coding. And so having C-Pilot in Visual Studio is super helpful. Um I've talked over the past, I don't know, roughly a year about
using GitHub Copilot. And honestly, for a long time, what I was doing was take my phone, right? I'm out and about and I'm like u say I'm about to leave for work and I'm like sometimes I'm eating breakfast and I I'm thinking about a feature that I want to build in brand ghost or like how do I fix that bug? I'll make the work item assign it to co-pilot and like that that did really really well for me for a really big chunk of last year. And I've made videos about that. I've talked about that. And my my point is not to say oh that was the best way. That was just a way that really worked for me. And so I could balance asynchronous stuff by firing it off to GitHub copilot agents and stuff uh to go work on work items, make pull
requests, and I'd check it out later. And then when I wanted to actually get hands-on and develop, what I was doing was sitting down with Visual Studio and having co-pilot and work through things. And yeah, I've used Claude a bunch last year. Um I did some videos on something called Claude Flow. I think there's another newer version of that now. And so that was cool. Um, infected FPS says, "I feel like GitHub copilot started out strong, but I found cloud code is running circles around it in the last few months." Uh, infected FPS, Microsoft, in my opinion, has done a very bad job at naming things. When you say GitHub Copilot, what do you mean? Um, do you mean uh like GitHub the web UI assigning it to co-pilot agents to work on PRs? Uh, do you mean uh co-pilot in VS Code or Visual
Studio? Or do you mean GitHub Copilot CLI? I'm curious because I have very different opinions about all of those now. And um, as someone who works at Microsoft, we're going to challenge a lot of my beliefs. Okay, I'll just say that. Um, but what I will say is that in more recent time, I know that uh CLI and VS Code Wow. Okay, I Okay, I'll say on the VS Code and Visual Studio extension part uh my like I have been having less and less of a good time using C-Pilot in Visual Studio and that's very conflicting for me to say. Yeah, Microsoft having a naming problem. My dude, if you saw how many acronyms we deal with on a daily basis, oh my goodness, I've been at Microsoft for over five years now and every day I learn new acronyms. It's insane. Um, but okay,
so I've been using Visual Studio for a very, very long time, and I am the kind of person, and I've said this many times before, where I'm like, I'm not the kind of person who's like, I'm going to go use Vim and I'm going to be at the terminal, and I like I use Git in uh, Git extensions. Like, I am a UI person. I've always been that way and I don't have any shame in saying that. So, me programming in Visual Studio, I feel at home. And the problem I'm facing personally, and I'm sure other people are too, but like using Copilot in Visual Studio in my opinion should feel like I like it should feel like the best experience ever to me. That's what it should feel like because it's a tool that I've used for forever. I'm very comfortable in it. I'm
very at home there. I like it's you know car and net development is key there right like it is so good in my opinion some people hate visual studio that's fine but for me that's that's where it's at and then you layer in co-pilot and I feel like this should be the best experience ever for me and it's just not and it's frustrating because I can jump over to VS Code and use Copilot there and I'm like it's it's better than in Visual Studio Studio except I don't like VS Code or I can use Cursor and it feels better than Visual Studio and I'm like I don't want to use Cursor. I want to use Visual Studio and the the thing that's been extremely conflicting for me recently. It's like I said I've already I've used Claude a whole bunch. It's just not my preferred
way to go. And at the beginning of this year when Copilot CLI was getting a little bit more attention I'm like I got to try it. said, "I'm gonna start using more different tools this year, and I'm hooked." Um, I know that like a lot of people are buzzing about Claude, and that's totally cool. I'm I'm actually said this on Code Commute. I'm super happy that some people are finding like whatever tool it happens to be, and I think for a lot of people that's clawed because there's a lot of hype right now. They're finding these experiences where they're like, "Oh my god, like this is the coolest thing ever. I can't believe how powerful this is." I am genuinely so happy to hear that people are having those moments when I have been talking with people about like, hey, when you use Claude, right?
Like, and you compare it to a different AI tool, like what what was it about Claude that like what was the feature that stood out that made you you want to stick to it? And I'm having a really difficult time getting people to explain specific features. And it's like more just it was a good experience. And I'm not diminishing that. the whole point is that it's supposed to be good and you found that great. But I'm I'm not able to find like specific things when I talk to people about it and I' and I've used it and I've enjoyed it and it's been good. But I've been finding that the co-pilot CLI for me at least recently has just it's it's literally taken me out of Visual Studio now. don't I don't program in Visual Studio. And that's such a hard thing for me to
say right now because it's like an identity crisis. Like instead of me getting home, firing up Visual Studio, having I have like a whatever like a 48 inch monitor on my on my desk right now. I got these other monitors on the side. Instead of having all these screens filled with Visual Studio and docked and going between stuff, I I have like a bunch of PowerShell tabs and then like get extension so I can go look at source and then like a browser so I can be doing other stuff at the same time and I'm not using Visual Studio and it's crazy. Caleb saying I don't prefer cloud code either. I'm curious um Caleb what is uh what is your reason for that? Right. And I don't I'm not trying to put people on the spot, right? I'm not trying to pit these tools against
each other. Uh hopefully folks that have seen my content before know that that's like never my goal. I'm not trying to say X is always better than Y kind of thing. It's a genuine question. If you don't mind sharing when you've had things that work well, like what was it about that? And if they haven't been working well, what were the things that that haven't? If you can quantify or qualify, it would be super cool to hear. In fact, at IPS at the end of the day, it's all about what works for you. 100%. Right. And so as we go through some of the stuff today, I just want to show you what's been working for me. It's not uh not to push co-pilot CLI. I genuinely mean it. If you watch what we go through today and you're like, "Wow, Co-Pilot CLI seems stupid."
That's fine. Like, I'm not offended by that. That's totally cool. Um, I might cry a little bit after the stream, but uh, no, but seriously, it's just like I just want to show you, but if you see some things and you're like, "Cool, I can do that in Claude and I want to stick to Claude." Hell yeah, do it. That's cool stuff. Um, in fact, it says, "I I haven't been able to replicate the results I get with some Claude skills." Obra superpowers are. Okay. For example, anywhere else personally. Cool. And so like what's interesting too is uh like infected FPS is mentioning skills in the chat, right? So like that was a thing um like as skills started to come about I'm like well what's that versus a prompt, right? Like I don't it's it's just a prompt, isn't it? It's just a prompt
and sometimes you have like a a script with it. Sure. But it it it starts to create like I don't know like more natural ergonomics in the environment you're working in and like the LM picks up, you know, your skills and stuff a little bit more naturally and it starts to do more of the the workflows and stuff that you're doing more commonly. So I think it's, you know, like if it if it comes down to like just the vibes are better and it's working for you, I think that's totally fair. So it's this is all curiosity from my perspective. Caleb says, "I think Claude is not better enough for how much more it costs." Okay. Also went over 20,000 messages to ChaiT last year, so I understand its nuances very well. Okay. Very interesting. Uh, plus codeex. And I still haven't used codecs. I
think I have access to it now. So, I'm saying it out loud. like I need to start using codec so I can try it out because I've gotten hooked on the co-pilot CLI and it's a problem now cuz I I wanted to to play with more more tools this year. Okay, let's get flipped over to some things. So, I'm going to pull up my other screen here. Um, by the way, as I'm walking through this stuff, I want to be very transparent. My goal is not to to show you things to be like, "Hey, go download this. Go use it." Um, literally I'm showing you right now something on my screen called Needler. This is something I built for me and I don't uh expect that necessarily it solves problems you have and that's totally cool. I just want to talk about some of the
things. So um needler is a dependency injection like harness that I have and I use it for scanning uh dependencies and doing plug-in systems and I noticed that with need or with dependency injection in general and the fact that I build a lot of plug-in architectures most like 99% of the time I'm not doing plug-in systems where I'm loading plugins like uh you know midlife cycle of an application I I load them at startup and almost always I know what they are at compile time. I just like structuring my code that way. So I switched it over to source generation with co-pilot but I I wanted to just like have a I don't know like more of a full-fledged experience and kind of build this out. So I use C-Pilot to then uh work on some CI/CD workflows. And so they it actually publishes documentation
and stuff now. And so everything that you're seeing right now is like co-pilot. I vibe coded it with co-pilot. And so it makes documentation. Um I have some of these other things. I think I showed this before in one of the other videos, but there's uh or live stream, sorry. There's uh like it runs benchmarks. It's not perfect the way uh this gets generated because it's it's vibe coded, right? But like it will go generate benchmarks. Um, these run once a week if there's been new code in the week and no one else has run benchmarks. Um, so this is pretty cool. And you know, the the goal of the benchmarks is not to say, "Oh my god, look, needler is faster." It's not. It's not faster than normal manual dependency injection registrations. It's not. Um, but if you compare it to reflection, which is
what I was using to go scan for assemblies, it's faster. Okay. So you could just to give you an example, right? Like um perfect chart here. This is for using a host builder innet. If you use manual uh dependency injection registrations, there's your time. Okay. And if you were to use reflection to go scan for things and register them, there's your time. And if you use source generation, it does it at compile time. So when you run it, it is faster. It's just a little bit slower. than manual stuff, right? So, in my opinion, this is just to show you what you're getting yourself into for performance. It's not it's it's minimal, but it's source generated. It's pretty cool. Um, there's this page for analyzer. So, if if folks are watching and you're not like .NET developers, analyzers are Roslin analyzers, and you can think
about it like a a llinter on steroids. So you can in kind of like inspect expressions and stuff uh and at compile time you can run uh rules across your codebase to enforce things. There is a whole API reference which gets generated. Um is this broken? Oh no maybe my my stuff broke. So see like this is the side effect of vibe coding stuff right? I broke it. So maybe okay the stable ones are here. So we can go through all of these things, right? So this is all just generated um you know there's again vibe coded there's some broken syntax. So how I've been doing this kind of stuff though just to show you um I don't necessarily want to go fix this one right now. We'll come back to this tab in a second. But how I would normally do this is I
would say like in plan mode I would um let me go back one sec. I got too many things flying around on my screen here. Um, this I would take this URL, right? And then I would take this, let me make it simple. Um, I'll jump back over here. And I would say something like, I noticed some of the generated documentation for the API reference has some issues with escaped characters. Then I would give it an example. Uh, you know, I might give it the URL or give it the path just to kind of point it out more specifically. If you're sometimes too specific, then it will go fix that thing and then depending on what it was, it might not be fixing it systematically, but I would do something like that and then in plan mode usually see uh what it's picking up on,
right? Like is it going to fix the one spot? Did it notice that there's actually an issue uh with HTML characters coming out of doc comments that aren't being escaped properly? Or it looks like in this case it's like I don't know, like double escaped or something crazy, but you know. So then I would go back and forth on the plan, make sure it's covering what I want and then flip over to autopilot uh and let it do its thing. So we're not going to do that because that's kind of boring. But that's how I would go address this kind of thing. Um there is code coverage. It gets spit out. Oh, did they they did co-pilot? Copilot generated a different version of this for me. Usually that coverage tab. Oh, it it didn't uh this is broken. That's why. So something happened where the
development version the API reference like this is busted because it's supposed to be here and then it looks like I lost my code coverage. That's okay. I'll go I'll go fix it. And by me I'll just go ask co-pilot to go fix it. not a big deal. But yeah, this usually opens up a code coverage report, which is pretty cool. And then I've linked over um this kind of stuff actually gets pulled from my website, um which is neat. So when I do a new build, it will go find any articles on my website that are tagged uh with with Needler and then it will go link all them into the documentation. And it will do the same thing with YouTube videos on my channel. Although I think this one is hardcoded. Um, but I should be able to change that for from CI/CD to
go pull stuff in. But anyway, uh, that's one example of a thing and I thought it was pretty fun to go make that and I decided I was going to extend it, give me one sec, to a couple of other fun things I have been doing. I just want to pull up my GitHub on another tab here. Um, nope. There we go. Okay, so I made these public so you can see them if you want. And I'll just put my GitHub in the chat in case anyone is curious, but again, not telling you to go use these things. Um, I did a similar thing for Google Page Speed Insights for Google Keyword Planner and Google Search Console. I'm going to make dedicated YouTube videos. Maybe not on the maybe on these ones. We'll see. Um, but these are all purely vibecoded MCP servers and I
was building them because I was doing some work on my website because I I don't know folks might not know this but I started Dev Leader blogging in uh 2013 and I gave up on it for like 10 years and um when I got back into it I was writing more technical blogs again and blogs were the first thing to drop off content content creation as soon as it came became overwhelming again. So in 2024 I stopped writing blogs again to go make more videos and do other stuff. Um but I I historically spent a lot of time trying to like how do we optimize for SEO and get the right keywords and stuff like that and it's a it's a pain in the butt. It's a lot of work. So, um, it was just too much and said, "Okay, like I'll leave the website
up, but I'm not writing blogs." But I wanted to get back into it. Uh, the video I recorded on Code Commute today was talking about some of these things, but like my my site map was down for two years. Like just some of the most ridiculous stuff. Like I did some damage to my website without realizing. Um, but there's page speed insights, Google keyword planner, and Google search console. And, uh, Google has an official Google Analytics MCP server, but I needed access to these three things so I could play around with Copilot. Okay. So, I said, the APIs exist, like I I want an MCP server for it, and Google didn't seem to have one when I went looking. So, I said, okay, co-pilot, go build it. And um I can't remember what triggered this in my head, but if you're reading my screen, you
might notice that there's this funny word. Um I'll zoom in on it. It it almost looks like C, but it's spelled a little bit differently. Um it's go. And if you know me, you know that uh I use this one. I use that programming language, but I don't program in Go, right? I've never actually I'm going to be honest with you, I've never even seen this code. And so this whole thing is vibe coded the entire thing. I've never read a single line of code in this repository or this repository or this one over here. Um and I had copilot go build out an equivalent go and car mcp server and I use this in the terminal. So can I let me kick one of these off? Let's do that. Let's go. Um, where is my code? And I could say copilot. It's not showing
my API key or anything, is it? Cool. Just one of those, oh crap moments. Cool. So, it is doing a whole bunch of MCP server setup, but I can say like go run um PSI on my homepage. And yeah, I know there's a bunch of stuff that isn't properly connected there. That's an issue for later. But um so I can do this because I hooked I I wrote this. Oh, one sec. I didn't put it into autopilot. So, because I wrote the MCP server, I can now go do this and I can go have Copilot run page speed insights, get performance input for my homepage, and then I can talk to C-Pilot about the things we need to do to fix it. So, it's cool to me at least because I had this issue of I need to work on the performance of some pages.
You know, which ones are problematic? Why are they problematic? Don't look at these scores. They're not good on mobile. They're not good on desktop either, but um mobile's real bad. I don't know. It's like it's crazy that if you were to go to my website on your phone, like it's saying first content paint is 12.3 seconds in. Like that's insanity. I've never seen that when I visit. But anyway, um I can use this and say like uh like slash plan uh list five opportunities blah blah blah blah to go like optimize for performance and we can do that. I actually wrote a skill um blazer performance audit and what it will do is it will go hit a few pages on my on my website running uh sub aents. So I think it does four different pages including the homepage, couple blogs and infected IPS.
I don't even want to imagine the mobile issues for my personal project. Yeah, mobile. Um and so it does this orchestration across eight agents to go collect page speed insights in parallel. pulls the data back and then it runs uh sub aents again to go do an analysis on all the results and then uh aggregates them all and then comes up with a plan uh to go optimize things. So this is the side effect of me doing it by hand a few times first and going okay this pattern is something I like let's turn it into a skill. Okay, so that's how I've been using skills, just to reiterate is doing workflows manually and being like this is a a thing I like. Like it worked well with co-pilot. Maybe it didn't do it perfectly, but like this is something I would repeat and I
don't want to like do it by hand again or think to myself, oh man, if I lost this session, I would never be able to do it with co-pilot again. So generally what I do is I would like let's say that we did this, right? So um I would do like plan um based on the results suggest five we can make in code and then blah blah blah I could add things like I think in my agents MD file already talk about TDD and red green uh for testing and uh the types of tests and stuff I expect. So I could do this, run it, and then at the end of all of that, I could say like another plan, right? So once this worked, I would say plan again, and I would say based on our conversation, I would like to build an agentic
skill that does X. And then I would say like, you know, talk a little bit about what we did and then maybe how I want to tune it a little bit, right? I would let it build the skill, but because we're in planning mode, I get this opportunity to see how it's reflecting on the conversation and to see the things it wants to talk about. And let's pretend just for a second, let's pretend that um the page speed insights that it ran, right? Uh it might not be obvious, but the way that it works is that it ran two of these analyze page calls. Okay, the MCP server actually allows you to call both at once, but it does it serially, I think, through the API, I think. So, if it takes too long, the whole MCP tool call like times out and then you
would have to go do one then the other. So, I guess there's enough maybe it's in my agents file or something, but it knows to go run them in parallel. But let's say that these things were crapping out and I wasn't getting the results. If I looked at what skill was being planned when I was talking to co-pilot, I could be like, "Hey, you didn't talk about anything to do with retrying, right?" And what I don't want it to do is go run this skill and then like it's failing out half the time and then it just ignores like the mobile optimizations. Like no, I I go retry it if it didn't work. Um, so you can use planning mode. uh uh go through it again. I'd have it build the skill. Then what I like to do is I go open another tab. Okay,
so I have a whole new co-pilot session. You could kill this one and and resume it or whatever, but uh I open a new one. I go use the new skill and then I if sometimes I will notice that it's not optimal. So I will see it's screwing things up again or it's not doing uh the right result or whatever it happens to be. So, I take the entire chat, and there's probably a smarter way to do this, like I could point one session at the other session, but I just copy the entire chat and I bring it over to this original session. And then I say to co-pilot in plan mode, like, hey, I I tested this out in another session. Here's things that I didn't like, like it was uh, you know, rerunning things that were failing. it was uh making the wrong
decisions or just did bad stuff that I didn't like. And here's the whole conversation. And because it's in plan mode, I would say come up with a plan or suggestions to correct these things. Once it looks good, I flip back over to autopilot and let it go. Okay? So, I I do this loop of getting it to build stuff like a workflow that I've enjoyed, trying it out, and then getting it to improve it. Okay, so I used these uh or I used C-pilot to build out these other MCP servers. Um they're not super interesting. I don't really want to waste your time necessarily, but the cool part in my opinion is that like it vibe coded them entirely. I've never seen a single line of code across any of these repositories. I'm not saying that like to I don't know how it comes across.
So let me clarify. I'm not saying that to to brag to you because I I don't think I'm like I'm not like the best at doing this or something. I'm just I'm saying it to you like I think it's really fascinating that I don't I've never written a line of go in my life. I don't even know if I've read a line of go in my life. I don't know what go code looks like. But there was something when I was reading about MCP servers and I wanted to do oh I wanted it to be crossplatform I think. So when I was talking to co-pilot I was like hey we can do a car one that uh we can do self-contained and if we did a go one because it suggested go then it would also have uh no dependencies. So I was like that's
pretty cool. Um let's do both because I like C. So it did that for all three of these repositories. Okay. So, the other part I wanted to mention though is because I showed you what I did with Needler right where I have this page. I also did it for the other ones. So, I have uh all these little subsites for the things I'm building, right? How to build from source. It will also pull articles from my my blog if I wrote them. Um, but that's the Google Console one just to show you. Right. Here's the other one. And again, it's just I had co-pilot go do it. All right. I said here's the P. I literally I literally made that a skill. Uh, where did it go? Which I don't know what's in my list of skills. That's might be scary. Um, there's a bunch
of stuff in here, but the I wrote a skill for it somewhere. I just can't remember what it's called. Repo docs. Oh, yeah. Repo docs. You can see this one right here. Produces a doc site at uh GitHub.devleer.ca. Structure data llmtxt cicd. So, it's pretty cool because I have a skill for it because I repeated it and now the next time I want to go make a little library, I can give it all the same uh kind of functionality. So, that's a handful of these projects that followed the same pattern. Again, just to quickly recap on that was like I I have this issue where I need data for my co-pilot session to be able to talk to it. So for me, because I was working on my blog, I need page speed insights. I need Google search console so I can see my blog's
performance and give co-pilot some information about where we want to focus and then uh Google keyword planner, which I was using to come up with blog ideas. But I can talk to co-pilot about those things because it's fetching that stuff from these MCP servers that I had it built. So the meta point there is like I wanted to get something done. Didn't have access to the data. And instead of going, "Ah crap, I guess Google doesn't make this." I said, "Wait, Google has an API, right? Okay, like Copilot, go make this." And and it worked. So, the whole point was not that, hey, look, I vibe coded this. I'm so good at vibe coding. I don't think I'm good at vibe coding, but like, thanks, co-pilot. Like, you you did it for me. I didn't have to. Okay, so what's next? There's two more things
I kind of wanted to show because there's yet another one of these. Um, I made something. I thought it was clever and now that I'm every time I go to say it I'm like this is maybe so dumb. But I made something called Narnia. It's called Narnia. It's another vibe coded thing. Thank you Copilot. Um Narnia is based on C-Pilot's Chronicle SQLite database. And maybe you're getting the reference now. I know it's not that funny, but like the Chronicles of Narnia, it's kind of funny. I don't know. And so Narnia is an MCP server and a web UI for work. Yeah, in fact, thank you, Infected FPS. I know that was an audible, ha, I know. Um, it's to essentially work with this chronicle database that is your sessions. So why right it's I'm sure this is something that copilot CLI will have something like
this but what I was noticing if and this applies for you claw users and I'm sure you have your own tools and stuff that that you like but um I noticed that if I'm well I'll just show you because you can see it right you see how many tabs are open in my PowerShell window if my uh computer and sorry Microsoft but if my computer decides to do the thing I hate which is ah it's time to update and like guess you're not using your computer right now because it's 3:00 in the morning and it closes all of these PowerShell windows I know that the sessions exist right like I know that they're on disk it's okay I can resume them the problem is I can't find the sessions easily and I know they're in this chronicle database I know they're on disk I know
that I can open up Copilot and say go through your sessions or go through this database and find this stuff. I know that. And so when I've been trying to do that because this has happened to me at work. This has happened to me in my personal projects. I'm finding that it's like it's stumbling upon doing it and I'm like this should just be a first class thing. And I'm sure it will be. But what I I like now is I can go start co-pilot. In fact, in fact, it says maybe I'm weird, but I just run a single session and close it when I'm done for the day. Oh my my dude, how do you multitask? And I I don't mean that to say that you can't, but how do you do it? I'm curious. Or do you not? I find uh I need
like multiple sessions up and this is what I mean. Maybe I'm doing it wrong like but this is how I've been trying to work on a bunch of different stuff in parallel. So I'd be very curious to hear from you if uh if you aren't multitasking and that's just working really well for you or if you are multitasking you have a completely different way to do it. But how I like to do this would be something like um show me or open up the Narnia UI in my browser. Oh yeah, I forgot. So this one's starting a web server. Usually, it's running somewhere already. There we go. So, we got this Narnia UI. And so, this is yet again a vibe co. Sorry, I should have said flashbang. That's very bright. Um, it's a UI. It's vibe coded. This is in Blazer. And so, all
that it's doing, it's it's simple, right? There's nothing fancy here. This is literally just a SQLite browser. That's all it is. In the chat, sometimes I hate claw because it costs too much, but I think uh it's process more structured in detail. Okay. For simple task, I won't use it though. Okay. In fact, FPS says, I just plan the next feature spec while I'm implementing the current one. Okay. So, infected FPS, are you using um when you're using your terminal this way, you say um you plan the next features spec while it's implementing the current one. What is your I'm curious if you don't mind sharing what does your process look like for doing some of your your planning and specking like because would that not be another session or or are you not using the same tool or is it not with AI again
not asking you to challenge you on it just really curious to hear from different people on it. So this um this is literally just a a SQLite viewer, right? There's nothing special here. And so it it shows uh your sessions. Like this is the one that I just did. So this one's pretty boring. Um but if I go back here, um this one here, this is the one we did a little bit earlier. I didn't like I didn't make it do this. This is already in the SQLite database. I'm not trying to take credit for that. This is just a SQLite viewer. Right. You can see some of these sessions went on for a long time. This is uh when I it was building more stuff in Needler recently. Um if you folks are net developers, you might know that Microsoft had something called um
semantic kernel for doing kind of it's like an LLM wrapper in your code. So you can start hooking up tools and giving them to an agent. And so they recently released a uh Microsoft agent framework that in my opinion is like a successor to that. So you have agent orchestration and so I was building functionality for that into needler. Right. Did we lose the needler? No, it's still here. So if I go back to let's do github. There we go. If I go into here, can I search for Microsoft? Can I spell Microsoft, please? Agent Framework. Okay, so there's some documentation here for how we can use Microsoft agent framework inside of Needler. And I just wanted to see what it actually did for docs. what I had it build was all or most of it was sort of like I finally got co-pilot to
try aligning to like not just building extension methods. So you can actually define um your agents and stuff in a like a source generated way. So where's a good example of that? Uh declaring agents. Yeah. So if you see this part of my screen here, so we can use Needler to declare an agent just like this where you have this class. You give it an attribute. So your your agent has some instructions and a description and you can basically wire up agents and orchestrations and workflows uh in a way that is very much like source generated for you. So you can see there's different attributes. So it's more declarative and then it source generates what you would normally use to go hook it up by yourself. Um so you can see here it's uh and maybe it's not obvious but this method is source generated
like it doesn't actually exist. It generated it. So create the triage agent handoff workflow. And there's other ones for like chatting and stuff like that. So anyway, that's what this session was just to kind of bring it all back. Sorry, why can't I highlight properly this session here? Okay. And so, okay, in fact, so essentially I'm planning out in writing what I want to design next. Cool. Okay. I get detailed of behaviors and outcomes, but not on code. Very cool. Okay. So like I spec out how I wanted an activity log to work in my project explaining what events to use, the behavior, how I envisioned in the UI, okay, how it should look and act. Then I toss all that in the next plan session where Claude goes through uh designing and planning and imple implementing what I wrote. Cool. That's awesome. Uh yeah,
so you actually take this time like you're saying in writing so you can like for you that's how that's a helpful way for you to think through these problems and and and sort them out. So, I think that's totally cool. I've been finding what before I sign off from this session, I'm going to show you what I've been doing on the side because it's it's taken me way back. Um, and for me, it's actually different. So, thank you for sharing that infected FPS because I think for some people that that is a super helpful thing where you kind of detach, remove yourself from code and you can think through and I guess it depends on what you're building too, but you can think through solving these problems in different ways uh or what the next thing is for you. But, um just to kind of
wrap up this Narnia thing, it's ridiculous. Uh repository so you can see where I was spending time. Oh man, it's crazy. What is going on? That was a weird It's not doing it again. Okay, but you can see like proportionally where I've been spending my time, right? I've been working been working on my blog. Been working on my blog more than I've been working on Brand Ghost. It's because we're doing some other stuff with Brand Ghost that doesn't need code here. Um, but yeah, you it's it's cool. Like you can see where where things are going. So, it's a lot of stuff on my blog that was getting worked on. Um, what else? Hot files. Wow, it's kind of weird. Why am I touching my MCP server configuration so much? Tags. Wow, look at that. I hope there's no curse words on there because I
I be swearing at C-Pilot a lot. No, just double checking. I don't see any curse words. Uh what else? File history commit. Oh, this is cool, too. So, you can search by commits. So, if you were looking in Git and you're like, man, where like what session did this change get made? You can go search for it in here. Um, and yeah, like that's mostly it, but it's just a little tool to help me go find my sessions and stuff I was working on. Like, it's not groundbreaking. I don't I'm not trying to pitch this to you to go use it or to sell it to you or something. The point was like I was like, "Hey, I have this this silly issue where I can't find my sessions. I'm fed up. Co-pilot, go build me a UI for this SQL database." And it did.
Okay. And then affected FPS. Is this one of those things where I want to focus on quality of each feature versus throwing a ton of halfbaked features at tech? Yeah. Yeah. Uh I actually read through my project and debug it even though I mostly only read the code before merging it. I can actually read. Got it. Got it. Okay. Makes sense. Yeah. Yeah. That's I think that's totally fair. And again, thank you for sharing that because I do appreciate uh you know, hearing different thoughts on this stuff. Okay. I'm going to talk about one more thing. Another I keep realizing that when I do that, that's hiding my window, isn't it? One sec. Yeah, that hides everything, doesn't it? That's so annoying. Um, I'm not a I'm not a good streamer. I'm sorry. I'm trying my best here, but this is something else I'm going
to jump to. So before I get into it, for those of you that do or do not know, I don't know how many people know, but when I talk about side projects and stuff for software engineers, right, I am like my personal belief, let me go back to just full-on talking with my my head here. My my personal belief is that um because it's worked well for me, I think side projects are super super helpful. I don't think that they're necessary. I don't think that you have to go uh you know change your life as a software developer to go build side projects and stuff like that to be successful. I'm not saying that's the case. But I do encourage people to do it because if you have the time, you have the capacity and you want to get better, then it's just more practice.
That's that's the motivation, right? I feel very fortunate that for some weird reason I'm super nerdy and I love to program or build things in code. Uh, I'm starting to change my language around that because I'm I don't know if it's that I love to program. I like building things. Programming is the tool that I've been using for that. It's obviously shifting a little bit more for AI. So, side projects are a way for years and years and years that I've been able to get more practice with coding. And so I think just for a little bit of background when I started programming I was in grade nine. So I was 14 and my first full-time job would have been after four years of high school and five years of university. So nine years I had internships in there too but nine years before I
started working full-time and it would have been four years before I had my first internship. So let's let's use that as a as a benchmark. Okay. So, four years before someone was willing to pay me to code, but I love to code. I was coding. I'm not saying like all day every day in high school, but I I like to code. So, that was a hobby of mine between playing Diablo I be coding. Um, and then in university it was the same thing, right? Like I like to code stuff on the side, but always had side projects because I like to do that. One of the side projects that I've had in different forms for over two decades is a role playing game. And it's not it's not it's not not something that you can go download and play and it's not I think something
I think will ever get finished. But for me having that is a playground to go try things out has been really cool. It's allowed me to rewrite things, to refactor things, to try different architectures out, to try different patterns out, to to write code in, you know, to try and push limits of like patterns to use. Like, you know, uh PE people will say .NET developers like they put interfaces on everything and that's no good. And I'm like, well, let me try it. Let me try literally putting an interface on everything and see what happens. Like, is it a good idea? No. like I know it's not a good idea but I want to try out and see what happens and then sure enough you reach a point for me it was like yeah like this feels really really silly but at least I know
what that feels like now at least I can sense when it's for me really hitting that limit because otherwise I do genuinely like interfaces or generally both um so there there's a lot of patterns and things I got to try over time to be like I know what I like and what I don't like. The same thing with like plugins, right? Like the last version of this role playing game that I made that I sort of reinvisioned was like every single thing is going to be a plugin. It's actually terrible. Like when I go back and look at it, I'm like there's no way it makes sense to keep building on that. It's so it's so cumbersome because I took a pattern and went way too far with it, but it taught me a lot. Okay, so I don't know what got into my mind
over the weekend, but I still have all that code. And so I said to co-pilot, here's all the code. We're going to start rewriting this thing. And now that I have something that I can talk to about this stuff, I said, "Here's the code. We're going to rewrite this thing." And these types of systems that are in this game, they're based I don't know how many people play role playing games that are watching this, but you might know some of these titles if you're a nerd like me. Um, you know, uh, these systems come from Diablo II. Okay, these types of systems come from Path of Exile, Path of Exile 2. These come from uh you know last epoch these types of things like the dialogue system and quest they come from the Elder Scrolls. So, Morrowind, Oblivion, Skyrim. Uh, and I told it in
like a a big planning session at the beginning. I said, "All of these things that we're talking about, Dimension, we're so back. All of these things we're talking about, when you go to look at my code in my game, this is where the inspiration comes from. So, I don't just want you as co-pilot to go, "Cool. I I know some Diablo I references." No, I want you to go to the internet, go see who was talking about like building tools for Diablo, if there's any information about the software engineering side of Diablo. Uh, for Path of Exile, there's lots of people who built like tooling around it, like the the skill planners and stuff like that. It means they have some insight into how the data looks. So go look at that. I want you to have access to this information for our conversations. Okay.
So we start this whole thing off. You got all my old crappy code. You got all of the reference material that I was thinking about when I was building this. I never had, you know, good examples of uh documentation or I'm just kind of I've been modeling this stuff over time. and I said, "We're going to start reimplementing this. So, let's get into plan mode and we'll pick the first part." And so, I think I started doing this on on Saturday night or Sunday and I had it going. And so, it's cool because it's actually building out this role playing game. And to give you a little bit of context, uh, when I build these role playing games out, I do not start with anything that's visual, which probably sounds kind of ridiculous because I actually don't really care about playing the game. I don't
care about what the character looks like. It's those things are like the last thing on my mind. I care about loot. I care about the kinds of items and stuff that can spawn, get generated, and stuff like that. Uh everything else after that is kind of like whatever the cherry on top, but like it's all about the items for me. So for me to work with and play with item systems, I don't need a fancy UI. I want to spend my time getting these systems down. And usually that means I have I like having a little console app that I can play with the game systems and interact with them to to feel them out. And then that way once I'm feeling good about them, you build whatever UI you want on top. Do I want to use Unity? Do I want to use uh
Go dot? Do I want to use uh what's Unreal? Sorry, I'm drawing a blank, but um you know, like what do I want to use? Do I want to build my own engine on top of that? Not doing that again. Um but I can I can cross that bridge when I get there. To me, those parts feel like those parts kind of feel like wasted effort. And I don't mean that because they're not important for a game. I mean that because they don't really interest me. I don't care about rendering the sprites on the screen. They like it's just not I don't care. It's not really interesting. I care about the game mechanics. So, I start with a console app. And so, it has been building out this console app. Uh I should explain to the console app itself is just to exercise scenarios. So
you can think about it like interactive tests. So I can get a visual for what's happening when I we try to do things. But if I go run this is building it, I get this little interactive uh terminal that I can play with. I can show the help which will give me all of the commands and Oh, I'm not sharing my screen. What am I doing? No one No one's yelling at me. You guys, you're supposed to yell at me. So, here it is. And so, I can start interacting with these systems. And like I said, they're all just kind of like uh they're all just like interactive tests. Okay. So, one more thing I wanted to share because I thought it was kind of clever and it's sort of lore, if you will, for um I don't know if you keep watching my content
and stuff in the future. Um I have I have two dogs. My wife and I have three together, but I have two. There's Laya and Loki. And um I couldn't come up with a good acronym for Laya, but I I did with Loki. So, this game framework is actually called Loki. And uh one of the nice side effects of that is that my dog Loki is very very anxious. Uh actually, some of you maybe seen Yla. She sometimes sneaks in here when I'm making videos and like she sneaks in and she'll be like in the background or something. She's not here today, but um Yla and Loki look very similar. They're both Kons. But Loki is very very anxious. And I have found over the past couple days, one of the really nice side effects of having uh a little framework like a a pet
project, no pun intended, a pet project that um is called Loki, is that I've already said on this stream that I get very very very frustrated with Copilot and I will I will type some things that I would not say to people ever and I will say them to C-pilot because I'm frustrated and um I've noticed that when I'm working with co-pilot and building Loki, it it might sound funny, but it literally reminds me that I have this very anxious dog and it forces me to calm down. I shouldn't say force. It It seemingly makes me calm down, which I thought was a really interesting side effect is like it reminds me of my dog and I'm not going to shout terrible things at my dog as I'm trying to code stuff. So, um, let's try it out. So, let's go generate some stuff. Boop.
So, it loads a whole bunch of data. Just going to scroll up through it. This is pulling in a bunch of game data that has never been finished. So, for those of you that did play role playing games and you know about loot generation and stuff like that, we got all of these magic aixes that can spawn on the items, there's tons of them. Okay. And then we got a couple of examples of how the modifiers for your items can show up in these pools for uh being randomly selected. We got a bunch of different uh item types that are base types. None that this is finished. By the way, this is just like some game content that existed. And so this is all the game data that gets pulled in at least for this part. So that's everything you're seeing on my screen. Then
it goes and runs these item generation scenarios. And so oo someone else to to ban. Bye-bye. Okay. So goes and generates uh items based on these scenarios. And how I've been working with co-pilot on this is like we we sit and talk in a planning mode and I will say like here's like a scenario that I I want to have supported in the uh item generation logic. Right? So I I really like complicated item system. So, I'm thinking, okay, I want to make sure that when we are in a map that can, you know, some loot's going to drop if uh I want to be able to factor in things like the time of day. I want to factor in the weather. I want to factor in like, do you have a specific quest state or something? I want all of these different things to
be able to influence how item drops work. Do I do I actually need that in a game? No. But like I think it would be really interesting to see a game system that could support it. So then I talked to co-pilot and I'm like, "Hey, like how do we support this now?" Right? Like I want to factor in the time of day. I want to make sure that in a particular quest state or a particular map, let's say, you can't uh there shouldn't be any coldbased weapons that can drop, right? You're in you're in the lava map. There should be no cold based weapons that can drop. Cool. Like, we can actually take the state of the map and filter out items that could spawn. So, it builds out all these scenarios for me. And there's there's unit tests and integration tests that can do
this kind of checking. But this gives me a way to interact and see that. Right? These ones down here, these ones were ones that I kicked off this morning before going to work. And I said, I really want to see a scenario where um let's say your character is wearing equipment or you have a quest state or whatever other condition. I want to be able to influence the rate at which modifiers can be applied or spawn on an item. So maybe you're on a map and back to the the fire like the lava example, right? Instead of being like, okay, no cold items can drop, maybe it's just that fire items, you know, are like 50% more likely to drop. So we can add a modifier on there. Like this one is fire affinity, so it's a three times multiplier. So it says that you
should have one of these aixes that are three times more likely. This one here says ice curse. It means cold is excluded from generation. So that means if we were to go look at this item that generated here, it says only these two modifiers can spawn. So let's go see. That's ctxC. That means it's this item. I'll copy it. I'll do item inspect and we can see the item. And so it says the explicit modifiers are cruel. But if I go back up, is that right? Let's see what it said. CTXC glacial is blocked. Searing and windr runner only. That's not what it is. So maybe there's a bug, right? And I have to go give this back to co-pilot cuz that's cruel. That's not the two modifiers it said. So interesting. Might have to go ask it. Right. This one is a fire affinity
sword. So item inspect and looks like it is not working, which is fine, right? This says quick strike. Actually, that's not true. Um, it's not that it's only fire. I got to read it again. Fire affinity says others have this weight and searing is three times more likely. Doesn't mean that it's the only one. Um, let's see. CTXD means Windrunner and Oh, Windrunner is up a lot. So, ctxd, if we check it, this one here, speed boost sword, we should see something pretty likely that's going to be speed impacting and it's not. So, all of these examples didn't work. Uh, but the tests actually what they do is they run these in simulations. So they do like I think it's doing like a thousand simulations and it will try to see statistically is it doing what it says. So anyway it's cool because I can
talk to co-pilot about building these things out. So this is one of the other sessions that I was doing with it. And so I go back to planning with it and I said great. We've been talking about the aixes that can be generated on items, right? So if you have a magic sword versus a rare sword, magic uh swords can get these types of aixes. Rare ones can get up to three uh prefixes and three suffixes. Again, if this is going over your head because you weren't nerding out playing role playing games, I'm so sorry for you, but um you should play role playing games because they're really cool. That's what we focused on before, but I'm like now like what if I want unique items? What if I want legendary items? What if I want different types of items to be generated? So, we
started talking about it and I said, great. Like one of the systems that we need to focus on is like these loot tables. And the loot tables are actually very similar in my opinion to these other pools that we just did for aixes. So now I have this conversation where I can start planning this out and I can go back and forth and give it scenarios, make sure that we agree on it and just have it build it. So, I haven't seen any of the code that it's been building for this at all. And when I was recording my my code commute video Oh, is that the wrong session? Oh, it's cuz I resized my window. No, where's my scroll bar? Can I just type at the Oh man? How crazy is that? Why is there a scroll bar in PowerShell? Is this a a
joke? Look how big this session is. There we go. Okay. So, I was wrong about what I was pointing at. My apologies. This is the one I meant to say. What we have in the item generation. Um, so the thing that I want to focus on is that we have, you can see right here, it's talking about how it's generating things and it's using a context for it. There's these pools. I wanted to make sure that what it's doing for generating items is very similar to how it generates uh aixes and modifiers for things. So, um that's the thing I'll be building with it next. But I don't need to see the code because I can see through the usage of that that UI tool. So, that's what I'm doing kind of on the side. And so when I'm waiting for my other co-pilot sessions
to to finish up, I switch over to this and we talk together and slowly but surely I'll rewrite my entire role playing game and I will never or I shouldn't say never I will have spent very little time looking at the code and for me that's really cool because I cut myself off there but um when I was talking on code commute today I realized that I think for some people they they really really do enjoy the the coding part. Like they like being in code and that's totally cool. Absolutely nothing wrong with that. I do think that I historically have really liked being in code. But what I'm realizing, especially over the past few weeks, is that I'm spending a lot less time in code itself. I haven't really opened up Visual Studio all that much. spending less time in code and I'm still
really enjoying what I'm doing because I I don't think for me it's ever been so much about the code. I think it's been about building things and code is the tool that I've had for that. So, um yeah, in fact says being in code is great, but I've always enjoyed the problem solving more. Yeah. Yeah. And I think there are things in code that are really hard, interesting, fun, challenging things to go solve, specifically in code. So, it's not that I'd never want to see code again. Certainly not. But I think I'm proving to myself that it's a for me, it's a lot less about code and a lot more about like solving interesting problems and building things. code has just been the tool that I had to get better at to do better at those things. So, wanted to share all that because it's
a bunch of stuff I've been vibing, I've been building. Um, and it's just it's been a lot of fun. I've been really enjoying it. And so, for me, it's been a lot of co-pilot CLI, but I think Codeex is next on my list. Um, I'll go back to Clawude again at some point, but I was using it a lot last year and I think there's a lot of people using it at the start of this year and I'm like I like I got to try more tools. I don't just want to go back to Claude. Uh, but Copilot CLI has been impressive. It's the first tool ever that's taken me out of Visual Studio like pretty pretty consistently. So, it's it's really neat. But yeah, I think that's it for today, folks. So, thank you so much for watching. Um, bit of a different one
for this week. So, do appreciate you being here. Hopefully, there's something interesting. If you have thoughts or comments, obviously put them in the chat. If you're watching the recording of this, leave a comment. Um, and let me know. If you want to see like a live stream where we we spend more time and actually build more things, like start to finish or work on a big feature or something, let me know. I'll carve out more time for it. But I kind of need the feedback before I decide to do it because it's a big time commitment. So, um, yeah. In the meantime, if you are interested, uh, my newsletter that I usually put out for the live stream, I'm just going to share the link. It is weekly.devleer.ca. The article goes out on the weekend. It will give you a heads up of what the
live stream's going to be. It's almost always on the article itself. This time it wasn't. I wanted to do uh one more specifically looking at uh you know vibe coding and stuff like that. But if you're interested, you can check that out. You don't have to subscribe. Like if you don't want emails, that's totally cool. I'm not trying to pressure you into that. Treat it like a blog post. And if you're like, I don't know, Mondays were kind of fun to hang out on a live stream. Great. Check it out on the weekend at some point. See what the stream's about. And if it sounds interesting, come hang out. I would love to see you here. And uh if live streams aren't your jam or you want similar types of content, uh I would recommend my my YouTube channel, Code Commute. So, I'll put that
in the chat as well. Um I got a bunch of YouTube channels, but Code Commute is where I'm answering uh submitted questions for people, make vlog entries on them, and that's usually one of the topics that is for this live stream. So, just a heads up. That's why I'm telling you like if you thought you know if you like these conversations code commute is very similar to that. And then of course my main channel is dev leader. So I will be trying to get some videos recorded talking uh a little bit more dialed in on some of the the vibe coding stuff or the AI tooling. So they'll be edited and you can see how those go. Um but yeah, thanks for being here and I hope to see you next week. Take care folks.