Here are a bunch of thoughts on AI tooling usage while I sit in traffic for an hour. Enjoy!
📄 Auto-Generated Transcript ▾
Transcript is auto-generated and may contain errors.
Hey folks, I am going to talk about AI stuff cuz why not? Um, no, we had some good conversations at work the other day and some stuff that I was doing on my own. Uh, man, this car has got to stop with the beeping. Um, really made me think about couple different angles on on AI tooling. Um, what is this person in front of me doing? Clearly uh no idea how to use a signal. That's okay. Um but it's like obviously with things moving so fast with AI, you know, every tool. Okay, this thing is really got to give it up. Um it's cuz there's frost on the car. the uh the change in tooling happen happening so rapidly and all these tools that are available and all the models coming out all the time. Um even as someone who is using AI tools a lot, I'm like I'm feeling very overwhelmed, right?
Like I try something out and I'm like, "Okay, it works like this kind of sucks for this other thing." Um, and then I don't know like a week later it's like if you go back to it it's like wow this is amazing and this other tool that I've been using sucks in comparison. Um, so it's a really interesting time to be a developer using AI tools. Uh, but it definitely feels like overwhelming with the rate that things are changing. So, the little bit of context I'm going to give is that over the weekend I I don't usually use Claude Code. Uh, not because I think it's bad or anything like that. I think it's I think it's a great tool. I think it's really powerful. Um, super extensible. It's just that the the way that I'm often working to develop things is like I don't prefer to be in a terminal.
And so for that type of work for like for working in Claude personally that's the kind of thing like I like the experience of being able to interrupt the agent like it's kind of like I'm letting it do its thing and I'm and I'm babysitting it and that way if I'm like oh wait like this is going off the rails I can just jump in and and kind of get it back on track. Um but I don't know like I also like using git uh like copilot and visual studio for that because as a net developer like you know if I'm building C things visual studio is really really good um and so I can get the same kind of uh thing going on with co-pilot and visual studio right so over the weekend I was using claude for um basically I was like, "Okay, I really want to get to this point where my my dependency injection uh sort of library that I put together for for helping with plugins.
I'm like, I really want to see if I can convert this to be source generation." Um for those of you that aren't familiar with any of the things I'm saying, um in C andnet, we have this uh capability called reflection. And it's kind of like at runtime we can inspect sort of like meta information around types. Uh it's pretty neat. It's pretty powerful. But like uh a lot of people that if you end up using it, a lot of people kind of like abuse it because they're they're not familiar with like sort of the tradeoffs or the consequences because it kind of lets you cheat at certain things. It's like it can be a band-aid for some, I don't know, like poorly designed things if you don't know what's going on. But you really can like take advantage of it for things like plugin and dynamically loading things at runtime.
Um but there are especially over the past few years like more situations where um for optimizing the applications that we have like we end up trimming out a lot of stuff that's not actively used. So there's a lot of really cool optimizations to trim code out of assemblies. And uh the side effect of that though is that reflection breaks because if it's not actively used and you like sort of need to reflect on it at runtime um like that information if it's not opted to be included it will just get trimmed out. So, um, a lot of people I mean I don't know I say a lot of people I've had some people that were asking me about what I built and they were like, "Oh, well seems cool, but like literally can't touch it because um of what we're building." Like we like the trimming would just not work with that.
So, I'm like, cool. I think it'd be a really interesting opportunity to convert this over to source generation. I need to explore source generators more. I think they're super cool because for a lot of what I've built using Reflection in the past, I don't really need plugins to be done dynamically at runtime. Uh, for a lot of what I build, I think you can build super cool systems that do dynamically load things, but I just need it at startup. Um, and really I know all the information at compile time for the stuff I build. So, I'm like, this this would be pretty cool for me, too. Um the added benefit is that like from a a speed perspective like reflection is historically very very slow because it's doing some of like this meta type inspection and um with source generators it's like you have generated the code that you need at compile time.
So it is much much much faster. like this seems like an interesting opportunity for me to leverage and to learn and and I'm going to use Claude to help with it. And so I was using planning mode with claude going back and forth came up like basically it did a few um iterations did a few commits and it had most of it in place and I was like this is awesome but then I ran into this issue where I'm like I I don't really trust that it's working completely. Um and this is the same not like specific to Claude, right? It's like an LLM kind of thing where it confidently tells you things, but I'm like, I I don't even know if I believe that the tests are doing what I need them to do. And so I tried playing with an application that would do trimming.
Um, and there were a few scenarios that were broken. It it actually worked pretty well, but there were a couple scenarios that were broken. But then I ran into this issue with Claude because I ran out of my limit. And so I said, "Okay, well, I'm kind of in this groove right now of using like a terminal approach for this. I could switch over to to Copilot and Visual Studio, but I said, "Hey, I remember that there is a Copilot CLI. Like, why don't I try this out?" And so I did. And my first experience was pretty terrible. Um, almost to the point where I like I was just going to give up, but I realized uh my model selection uh just wasn't right. I got excited and I was like, I'm going to use like a GPT 5.2 model. So, at the time I'm recording this, uh, that's, you know, one of the latest GPT models.
Um, and it was terrible. Like, it just felt like stupid. And full disclaimer, I take responsibility for that. Um, I'm not saying it's a bad model. I just don't I seem to not be able to work well with it. And I tried some codeex models uh from GPT and it was the same thing where I'm like, man, this just feels like it's stupid. So, I was almost going to give up and then I was like, okay, let me just go back to trying. I can't remember if I started with GPT51, which has worked well for me. I think I ended up back at Opus just because I I like using Opus a lot. It's pretty powerful and I seem to be able to to jive with it. So, um, once I went back to Opus, I was like, "Holy crap." Like, "Okay, we're cooking again. This is this is pretty cool." Um, so I used Co-Pilot CLI, much like, you know, people use Clawude Code.
And I had a really, really good experience with it after I got my model selection right. Um, it doesn't, at the time I'm recording this, it doesn't have like a built-in plan mode like clawed you can say slash plan and then plan with it and it asks you some questions back which is really nice. So, um, that's not a built-in thing in in the co-pilot CLI, but there's nothing stopping you from having a conversation with it and saying like, let's plan and design this. And that's exactly what I did. And each time I was like, give me multiple variations of this. Whoa, my camera's all crazy. What's going on? Um, I got to tighten something down. Sorry, I just looked over and you guys are looking off in outer space. But, um, there's, uh, sorry, I lost my train of thought cuz because of that co-pilot planning.
Um, I was asking for variations of things and I was saying, "Give me like an unbiased approach, talk about pros and cons, and then it was good because it would give a recommendation at the end, like based on things you've said, here's what I recommend, and then I could go back and forth with it and tune it." And in the end, like after the the weekend was done, I I had, you know, full source generation support. Um I have like way improved documentation. I have uh analyzers so that I can help guide developers to do the right thing. Um so that they don't run into um you know runtime issues with with my package. So overall um I felt really good. There's a cop here. Let's see what's going on. Nice. Okay. Um, and so I had a lot of success with the co-pilot CLI. Now I build something called brand ghost which is my social media and crossosting uh platform and it uses needler for all the dependency injection.
I said hey this would be the perfect test. Uh I say perfect test as in like a stress test because every single thing in need or uh in brand ghost is a plugin and they should all be figured out at compile time because I know them all at compile time. So turned it on um the sort of original path using reflection everything worked perfectly. So uh no surprises there. That's great news. And then um I switched it over to try using Sorus generation and that's where everything uh went wrong. So uh I'm continuing to work with uh the Copilot CLI um to fix issues and then I'm using GitHub copilot uh in Visual Studio to actually like implement the package. So, it's iterating trying to like see what we need to tweak and tune in in the brand ghost solution that's consuming it and then I go back to co-pilot uh CLI where I'm like, hey, here's the issue we're running into.
Go fix it so I can go fix it in the package. So, pretty cool back and forth loop here. But, um now I want to transition to talking about a conversation that came up with work because it it felt very relevant to this with tool usage. And so um we have a big push like obviously at Microsoft and I mean many places there's this a big push for AI tools and using them in your development flows and things like that but um within our team at least we're trying to take a bigger approach uh bigger push sorry um around like education and and knowledge sharing. So that's the approach we're taking. Like uh I I definitely realize that regardless of what uh is being said internally at Microsoft, even if no one said anything, um the sort of the pressure on developers to be able to, you know, to get get with the times for AI tools and, you know, if you're not going to use it, you're left behind kind of thing.
I I get that that's real. And then of course you layer on anything that is in the workplace where it's like we have co-pilot um we have uh you know a company that's a lot of the business is kind of being aimed at the success of co-pilot and so yeah there is like obviously these additional pressures but we're not and I mean this genuinely like in in our org I feel like we're trying to do a really good job with not like use this or you're screwed. It's more like we want to enable you to use the tools effectively and that means knowledge sharing. So um around the knowledge sharing there's like because there's so many different tools to use in different ways I wanted to spend more time talking about using tools like different tools in different ways. And so I I will be doing more of that uh on my main channel Dev Leader.
Um, one of the sort of I don't know like New Year's resolutions I set for myself was trying more tools. So, I'm already trying to do that with using the C-Pilot CLI, but I want to do that because I think it's important to to kind of see the the pros and cons of these tools as they're evolving. And the the hypothesis that I'm going to put out there is that I I feel like the the direction we're heading in is that it's not that like right now everyone's like, "Oh, cloud code is the best thing that's ever happened." But when I hear some people talking about why they think that in some of their use cases, I'm like, "Hey, like I actually think that like I've been doing that in Copilot in Visual Studio or or GitHub Copilot like in the cloud." Like I've been doing that with success for months and months now.
So that's not me saying I'm better than you. That's me saying I feel like there's uh sort of different people have these different discoverability opportunities in the different tools. Like some people fall into it more easily in some tools and they're like, "Oh wow, like this works so well." And then they try another tool and it might be capable of the same things but it's not as uh intuitive to them or or maybe they pick a model and it's not effective or whatever. there's like these uh I don't know like serendipitous experiences that some people are having which is really cool and then you have the exact opposite thing happening for some people and they're turned off from it. So um my hypothesis is that as the set of capabilities across these tools um continues to become like more uniform. I think that it's not going to be like one tool that's like the best.
It's kind of like you know whatever you find more intuitive to work with. Right? If you're the kind of person that loves working in a terminal then great. you'll probably continue to use things like um like Claude Code or maybe C-Pilot and the CLI or other tools like that. Uh if you're like me and you like working in an IDE like I will, you know, long term I'll probably stick to things like working in Visual Studio with Copilot and you know uh running cloud agents and stuff like that. And it's going to be a matter of like they all have the same like capabilities. It's just that the interface that you're working in is like what do you enjoy more? Right? And so I want to give you a couple of examples of these things where we don't have that right now. We don't have uh consistency.
I already mentioned one that's planning mode. Right? in claude you can say slash plan and it puts you into a like a literal mode where you should be working to plan and like if we think about co-pilot in uh visual studio or visual studio code um at the time I'm recording this there is no like plan mode actually in visual studio I'm not sure if there is in vs code like I I just double checked it and there there isn't I think cursor might have a plan mode I don't even know. But like it's not consistent. In Visual Studio, we do have like a chat mode where it's not going to um take any sort of uh destructive actions, right? It can't edit and you can plan in chat, but it's not a dedicated plan mode. And you could go write custom prompts or like a skill or like a custom agent or something to use and like effectively get, you know, a really tailored plan mode for yourself.
But again, it's a different um user experience to get there. That feature is not consistent. And I think that we're going to see that we get a consistent type of planning mode because the industry is like, hey, that's a really intuitive thing. We need to plan um and like let's kind of make that a first class thing in the tools, right? Um I think we're going to see stuff like that. we already do have um I mean Visual Studio with Copilot um will do like a task list kind of thing, right? So based on how much context it pulls in, it will say like I need to go build like a a to-do list. And so that's like a a thing that's becoming more of an industry standard.
people started to realize, hey, if you want these things uh these agents to work more effectively, like it does really well if you give it a task or does better at least if you give it a task list versus just like a prompt and like you cross your fingers it's going to get it all done. You give it this task list to chip away at and it can refer back to it. Um seems to keep it on track significantly better. Right? So this is a thing that's starting to show up in more tools more consistently. Um what else? Like um we have like skills, right? So uh like we have MCP servers, we have skills, we have like all these different things are coming to agents. Uh there's custom, you know, you write your custom agent and it like what's a custom agent? It's like a it's a prompt.
Okay. Uh what's a skill? Well, a skill is also a prompt, but it's also like a package of like maybe some other scripts and stuff you want to run. Like all these things are like rapidly getting released for uh these tools and there's a lot of things that are consistent, but there's still a lot of things where like even with the the skills for example, every tool has their own skill folder. Like we got to We got to do better than that. Right? My point is that my hypothesis is that over time um the capabilities become more uniform. Right? One of the reasons I briefly mentioned so far unless uh I didn't say it and I just thought it is that I think I said it for Claude. I like being able to interrupt, right? Copilot CLI you can do the same thing. Um I think in cursor you can interrupt in the chat.
Uh but I noticed that like uh Visual Studio right for co-pilot and Visual Studio at the time I'm recording this you don't interrupt it. You have to stop it and then like I don't know what the implication of interrupting is where you can like inject a you know an additional prompt to help steer as it's going. I don't know the sort of the implication of that versus stopping giving it a new prompt and then having it continue. Uh, I find that in Claude when I interrupt or like sort of give it a new prompt as it's going, it seems like it like it is very smart. Like it's like, "Okay, here's some new context. I'll I'll re steer." So, I really like that. It feels intuitive. I feel awkward having to stop execution to be like, "No, do this." Cuz I'm like, "God, how far did it get?
Is it going to continue on? Is it going to like completely disregard the main flow of what it was doing and just, you know, only address the last thing I said? Like it's it's just weird. Um, so I think that's another thing that will become more uniform in these tools, right? If I could interrupt elegantly in uh in Visual Studio with Copilot, I may not have as much of a need like ever to go to Claude. Um, Claude has the ability to do like parallel uh agents, right? So, it can take tasks and go, "Cool, like it makes sense for me to split this across multiple agents in parallel that maybe have different capabilities. It'll go do it." and like the the GitHub or my goodness the uh the co-pilot uh team there was an engineer posting on LinkedIn saying that they're having like parallel
agents and stuff coming to the the CLI and I was like hey like like what what about Visual Studio like what we need like a um you know a consistent story here and I get it like all this stuff is moving so fast to go release something in Visual Studio versus, you know, a smaller uh standalone tool. The release cycles are different. I I get it. Um it's just that it's kind of perpetuating this challenge I'm talking about. Right. So, bringing it back to some of the conversation from work was like I I think that we have a lot of people that are exploring tools or trying them out. um you know they're using co-pilot in particular ways to solve certain classes of problems which is great and like some of the questions that come up are around like well not in a not in
a condescending way or anything like that but in a curious way like well why would I use claude versus uh the co-pilot CLI versus VS Code for this versus full-on Visual Studio like why would I use the different tools. And so right now, my primary reason is that I feel like because we don't have uniform or consistent capabilities across the tools, um it it means that each one sort of has a I don't know, like a set of things that it's really good at or better at and a set of things that it's less suited for. Right. So, like just to give you an example, like I know everyone is hellbent on Claude being so amazing right now and I think it is good, but like one of the reasons that I was not using Claude as much is because I need it to I need agents to run in the cloud, right?
I I'm not going to clone a bunch of folders on on my computer for my same repository and have a bunch of agents running that way. Like to me that's super awkward. And if I use GitHub Copilot like in the cloud, I can literally make issues on my phone, assign them, they get worked on. I can I can literally do it before I go to work and then check at lunch and submit new issues. Like that workflow is crazy powerful for a bunch of things that I do. So is like, oh, Claude Claude could never. And it's like no, they they did they made cloud agents, right? So like that's just another capability that's becoming more uniform. So you know, like as these things are, you know, moving in that direction, we're not there yet. And I think that I I have different opinions about which tools for me are working really well in certain scenarios.
I saw someone posting online. It's like they said something like, you know, if you're a developer and you're using chat GBT still at all in your development, like then you're not like a real developer, something completely stupid. Um, and I think they're trying to uh assert their, you know, their AI superiority with whatever tool they prefer. And like don't get me wrong, I think that if you are limiting yourself to only chat GPT as a developer, you're probably missing out on some really awesome tools. Like I agree with that as a statement. But to say if you use chat GPT then therefore like you're not a real developer or you're stupid or implying anything like that, like I think that's just Um, and I take it personally because I do, man, this camera. Come back. Um, I do still use chat GPT for a lot of uh development because I like the interaction.
Come on. No, I'm not going to I won't be able to get this while I'm driving. This thing is just loosey goosey. I'm so sorry, you guys. You maybe you want to watch out the front or something or It's not working. I should have tightened it before I started, but I use Chad GBT to to have back and forth conversations or uh researching API surface areas and stuff because it has a good research mode, right? and like I can use it in the browser on the go and I find that personally I've been able to instruct it pretty well for um when I wanted to go look for online resources and sometimes that feels kind of clunky in Claude or in in Copilot. So, I have certain types of things like researching API surfaces. Um, sometimes just like uh I don't know like troubleshooting stuff that I might see like in the Azure portal.
You could make this argument for um AWS as well. Um just like stuff that I feel like would benefit from doing a little bit of uh like internet searching. Chat GPT for me still works very well that way. So I still use Chat GPT very regularly. Okay. So does that mean that I'm, you know, not a good developer? I don't know. Maybe maybe I'm the worst. But that's one scenario where I would use it. And if if I had employees asking me like, "Hey, like what are like we're not going to use chat GBT at work, but I would say, hey, this might be a good conversation to have with like M365 C-Pilot, like maybe completely outside of the context of like Copilot and Visual Studio.
I'm like if you're trying to do something in the Azure portal or you're trying to understand uh certain types of interactions or whatever like maybe M365 copilot would be the right thing here or a better thing a better tool right we also have like a research mode um so like hey you need you want to put together the basis for a design document or something like maybe use research mode, give it a bunch of guidance, point it at uh you know some sources, and then say like go do research and and put like a report together. Like that's a really good use case for M365 C-Pilot that's not, you know, Visual Studio C-Pilot or Claude. Could you could you do that in Claude and Visual Studio Copilot? Like, yeah, probably. It's just that I feel like there's a a better tool for it in that circumstance.
So, you know, the the three I think it's roughly three major ways that I think about um my AI interactions are like like a chat kind of uh research mode almost. And I like using chat GPT for that. I I don't use um nothing against it. I just haven't really dabbled with it. I don't use like Gemini. Um I don't think there's anything wrong with it. I just haven't needed to. Maybe I should spend more time trying that out. Uh and I'm sure there's lots of others. Like I know a lot of people are using like AI browsers and stuff like maybe that's a good option for some of the things that I'm thinking of here. Um so that's like one situation. Um, if I'm doing like theoretical kind of design conversations, then like chat GBT could still be really good for that. But once it becomes more like working in my codebase, then then chat GBT stops being the effective thing, right?
if it's in my codebase. I really like using GitHub spaces because it's very much like a chat GPT style interaction, but I can add in my repositories. Uh I can do it from my phone so I don't have to have it clone down to my machine. Um, so you know, if I'm going to do architecture refactoring, um, really big sort of like feature designs and stuff, I really like uh a back and forth chat with C-Pilot um, in in GitHub spaces because I can give it that context. I can do it from my phone. And if if everything's good to go and I get to a point where I'm happy with like how the conversation's going, then I can instruct it from there, like open up a new GitHub issue and then I can do a similar process back and forth and refine that issue. Um, and I've made videos and stuff on this before.
Uh there's a there's definitely one on on my dev leader channel that that shows like I had a feature request come in um for brand ghost. I went back and forth with co-pilot and GitHub spaces. Uh it's really interesting because I tried to showcase in that video that there's some things that I didn't mention to it and you can I I highlight it to you as the viewer because you don't know my codebase but I'm like hey look like co-pilot made this kind of inference. it made this connection and I never mentioned that and like it's kind of a good lesson for us to be like hey like you know maybe these are useful details but it's really cool to see that it like it picks up on on some things and then the flip side can happen too where it's it's bringing up stuff and you're like oh man like that's completely not relevant.
So, I really like that back and forth approach um in GitHub spaces to get to an issue and then you know depending on what it is that might be something where uh I can feel comfortable assigning it to GitHub copilot and like um to go do it in the cloud and make a pull request and I would say over the past like 6 months I've done so much development that way right where co-p pilot agents can basically get a pull request to like I don't know like 80 to 100% of the way there and if it's not 100% uh with a little bit of back and forth like to comment on a few things I want changed then it might be something where I'm like cool I got 80% of the way there now I'll clone it down make my changes that that would have been maybe too much of a pain in the ass to to prompt or like I don't even know the the answer.
So like I need to to spend more time like in a familiar tool. Um but that's been a workflow of mine that I've really enjoyed using. Um and one again one of the major reasons for that is that once I have the initial conversation to get the planning and things organized, I can be mostly hands off while it's running in the cloud, right? There's other features that that are way less involved from like a planning perspective where I can say, "Hey, here's a a bunch of similar patterns. I want a feature like this. Go do it." Right? Here's the API spec. Go do it. Um, and had a lot of success that way where I can blast things off to um to GitHub Copilot running in the cloud. Um, I find on on our front end for brand ghost, uh, it seems to be able to get much closer to oneshotting things.
Uh, I'm not a a front-end developer, like admittedly. So, uh, there's some things I get nervous about the coding patterns, but I'm like, man, it works. So, like, uh, it's a lot closer to vibe coding for me. I'm really sorry about this camera, guys. I don't know what to do. Is that helping? I don't know. The next time the traffic dead stops, I'll see if I can tighten this thing. Um, but it seems to do a little bit better of a job in the front end. Um, but it's way closer to vibe coding for me, which makes me a little nervous cuz uh I don't want to push stuff that I don't understand, especially when it's working and I'm like, "Yeah, but like is this code shit?" Probably. Um, the back end stuff I'm a lot more comfortable with. Uh, and I can kind of review the code and and feel way better like pushing it.
I have to tighten this with one hand and it's I can't tell if I'm loosening it. I don't know. Sorry. next video will be better because it can't possibly be worse than this thing. Um, what else? I think there's definitely things where I don't want to dedicate the full development to an agent in the cloud, right? um sometimes big refactors uh some features like uh I I just I really want to be sitting closer to it and so uh co-pilot in Visual Studio works really well for me. Uh I am you know I am a Visual Studio user. I've been using Visual Studio for like maybe longer than some people watching this have been alive. Um, I know like VS Code is much more like popular than Visual Studio, but uh as a like C developer, it it just feels like a a worse experience overall using VS Code.
For me, back to a capability kind of thing. The only thing that's ever driven me to use VS Code over Visual Studio for C development is really that like a bunch of the AI features are are landing in VS Code first and it feels like very frustrating that um that that's happening. So, you know, I I spent a lot of time in Visual Studio coding that way and then using C-Pilot. And again, like even it's not like I don't write lines of code anymore, but I'm certainly writing, you know, far far far fewer lines. And sometimes it's a matter of like as I'm messing around with something, I want to see the pattern. I want to feel like if I'm making this uh you know a library function, I want to see how I'm going to call it. I I want to know like what that feels like to to kind of use it as a developer.
Um and then like once I mess around and I'm like, "Okay, I have an idea in my mind like here's how I would go approach tackling this now that I felt it out." That's where I'll kind of shift gears and go back to co-pilot. Um, in Visual Studio most of the time at that point to say, "Cool, you know, here's an example of the pattern. Um, here's got to look out for. Here's where I want it applied. Like, go do it." Because at that point, that's the less interesting part for me. Like, that's the very mechanical, monotonous mooring part. Like, it's got to get done. And historically, yeah, I gotta be the one to go do it, but like I don't have to be the one to go do it. Great example from uh today, this morning was talking about some uh some of the needler work for my dependency injection framework.
And um is this my exit here? There's been so much No, it's not even this one. There's so much traffic on the highway today. It's uh I don't know how long this video is, but says there's still another 20 minutes for me to get to work, which is absolutely crazy. Um the thing that I had done with Needler this morning when I was going back and forth trying to uh get some things fixed in Brand Ghost was that um we realized I say we as in me and the agents realized that uh the way some of the source generation stuff's working, we can't put an attribute in a certain spot. It's not going to work. So that's fine. Um, but I had already instructed co-pilot, like that's how I wanted it to be done. And so I'm like, okay, I'm not going to be the one to go touch all of the spots for this.
I know the pattern historically. I'm I'm the one who has to go do it. It's not an easy search and replace in the code, but it's like it's a very consistent refactor that has to happen. So perfect, right? Copilot, like, sorry, I was wrong. You have to go touch all these files now. here's what you need to go do. And like that to me is such an awesome feeling for uh for using AI, right? Like I know the pattern. I know it's got to happen and I I don't have to be the one to go do it now. Feels really good. So, man, where I just want to Sorry, there's so much traffic here that I'm Yeah, definitely not. Okay, next one.
Um, and then from there like it kind of brings me to like these uh these terminal UIs and like I don't know like I if I think back to whenever it was like last summer or something I like one of my most popular videos on on my main YouTube channel is uh is a Claude Code video, right? And I'm showing using uh someone made something called Claude Flow. It's the the V2 of it and they were kind of pushing some of the limits for Claude to do like multi- aent work before Claude kind of supported multi-agent stuff out of the box running in parallel and orchestrating them. So, I I showed a video um on that and if I think about that, I'm like, man, I was using Clawude a lot back then because it was able to do some crazy things like that.
and it seemed like it was ahead in terms of some of the scenarios I wanted to use, but I eventually moved away from that because I'm like, look, I can just I can queue up like a bunch of different GitHub issues and have, you know, multiple agents do stuff in the cloud. Like, what are we talking about here? This is so much better for me. Um, and then, you know, kind of moved away from claude. So the terminal interface for me personally is it's less intuitive. I am you know uh very much will admit like as a developer I like using guies. I like having a graphical user interface when I'm working on stuff. And I know there's like elitist developers who are like oh you need to use a terminal for everything. And I'm like, dude, I I'm happy for you that you like that, but like you're just like, you're not going to convince me that I will be happier in a terminal.
It just it's not it's not a user interface that is intuitive for me. It's like I've heard people say uh you know using git like oh like if you need a UI for git like you're clearly dumb. It's like come on man. I I don't know about you but for me if I'm looking at history I really like being able to have a visual. And if you need to use asy art to print a visual in your terminal like what are we doing here man? like just use a a gooey. I don't know. Um but if you like it, I'm not going to convince you otherwise. I don't care what you use. Use whatever you love. Like I want a UI. And so with these terminal AI tools, the only time I'm finding myself gravitating towards them is because um there's some type of interaction that I'm not getting out of the box uh with like uh Visual Studio and Copilot.
And the one most recently from over the weekend was this ability to uh like yes, I can do planning uh in a conversation. I've mentioned that several times. I can totally make that work. Um but the the ability to interrupt uh was really helpful for me and it seemed more intuitive on the terminal. So I was rocking and rolling that way. Um, and yeah, I think the other thing that I would mention too that's like maybe it's kind of hard to explain because I don't have it like I don't know, it's not like a a concrete science or something like that, but I think when I was building out some of this library functionality for Needler, um, it it felt a lot more like the there There's a lot of back and forth in the design or the options to pick, but when it was going, I'm like, a lot of it I don't really need to babysit, but I I do want to check in on it.
Whereas some of the stuff that I'm doing in Visual Studio working with Copilot when I'm trying to get it to do things um it's either like let me you know oneshot this thing to go refactor things the same way and then I can keep I need to keep continuing on with my development right after that. Um or I need to like kind of to be more hands-on. So, I don't know. It's kind of weird, but they're I I I find that they are converging a little bit that way in terms of how I'd use them. And if I could interrupt co-pilot, I don't know. Like, I don't really have a a use for for Claude really. Um, but yeah, I think in a nutshell, cuz I'm obviously I'm rambling, I'm sitting in traffic here still. In a nutshell, I think that we're going to see a lot more converging of these uh capabilities across these tools.
Um and then the need or like this push for like, oh, I do this and this tool and this and this other tool. I I just find like that's going to um maybe become more uniform and you kind of stick to just like your preference of uh modality, right? Like I like using a UI, so I'm going to stick to a UI. And then outside of that when I need stuff to run in the cloud like I don't know maybe um like I like making GitHub issues in the GitHub web interface. I I know there's MCP tools where you can make the issues and stuff like from from chat from talking to an agent, but like that doesn't feel as intuitive to me. Maybe if that becomes more of a first class experience then like maybe I won't use the GitHub UI, right? Like we'll see.
But the capabilities I think are going to become more uniform. Um okay, my exit's coming up here. Finally get off this godforsaken highway. Uh maybe one more thing to kind of touch on is uh skills which is not the most new thing but I think we're getting uh more integration with this kind of stuff. So um what is a skill? Well a skill is a prompt and a set of scripts and a description and yeah um and every tool is doing it slightly different. Surprise. So, what's really cool, and I'm going to butcher this, uh, so I apologize, but my experience with making skills was really just from this weekend. I was doing more of it. And, um, the skills seem to be like if I have the equivalent to like a prompt I want to to keep rerunning or to reuse, uh, I can make it a skill so that uh, the LLM knows to go like leverage that prompt.
basically, for lack of a better word. And when I'm saying prompt, it's a prompt plus maybe some some scripts that the prompt is associated with. Okay? So, if that sounds kind of messy, I'll give you an example that's completely outside of writing code. So, um, for writing blogs, one of the things that, this might be a domain that people aren't really, uh, familiar with, so I'll kind of give a little bit of extra background. Um, aside from like if you're writing a technical article and just talking about like doing things to educate people, that's great. But, um, one of the things with blogs is like we want to make sure that people who are searching for the things that we're talking about can discover it.
And depending on what you're writing a blog about, if it's not just a technical article, but it's like, you know, um if you're thinking about marketing and a funnel in terms of driving users to go do things, um you need to make sure that your your content will compete properly against the available things online. Okay? So, search engine optimization. And so there's different things to consider for search engine optimization like the keywords being used, how content is structured, all this kind of stuff. So I was able to work with Copilot to basically make skills that it can use for this kind of thing. So it was really neat. So I had like a skill that I can use for SEO optimization. So it can take an existing article I have in a markdown file and then based on the keyword I can have it do like competitor analysis.
So it will go search online. It will uh look at what competitors are doing based on top search results and then kind of score my article against the competitors, right? And then kind of it's not just like like word count is part of it, the structure is another keyword usage. Ah, these lanes are closed. That's why that's annoying. Um, that explains my traffic today. So, this is one skill that as I'm asking Copilot to like help with optimizing a blog, what it can do is keep running the skill after it's made iterations, right? Cuz it has suggestions that come back from the analysis. it can go work on them and then it can run the skill again and do the analysis all over. Uh so it's super cool, super helpful. It's one skill.
Um I had another skill because um for writing blogs, if you guys see my content like for my newsletters and stuff, one of the things I do uh is just like YouTube videos, you need like a thumbnail or like a featured image for your blog article. And so I'm terrible at making them and I've relied on AI to help with that. But what I don't like doing is going to an AI tool to go generate it. Then I have to go upload it to Azure. It's like a cuz that's where my hosting is. Like it's a pain in the butt. So I have a skill that can generate the AI image. it can upload it to Azure and then if I don't like it I can basically just talk to the LLM and be like no like replace it with a new one and using the skill it just repeats it and overwrites the image.
So we're getting capabilities like this where we can think about what are the things that I'm doing over and over again. So, if you have prompts that you're saving and you're repurposing them kind of thing, um it might be a really good opportunity to make something like a skill. Um and then your LLMs can instead of you being the person who has to go give it the prompt to go do something, you can Oh man, that person almost missed their exit and they just drove through like all this gravel. That could have been a lot worse. Um, the LLM can basically pick up on the skill to go use, which is super cool. Um, so I'm like I'm spending a lot more time thinking about, okay, like what kind of skills can I can I introduce because we keep doing the same thing over and over again, right?
So maybe there's uh instead of just a prompt for for doing performance analysis and stuff like maybe you give it a skill so that it has the right tools, the right guidelines for it and then when you're having a conversation with co-pilot or claude and you're like hey like um you know build this feature or fix this bug and we need to like really consider uh performance then it can basically go, okay, cool. Like I know I have a skill for performance analysis. Like I'll go use that skill so that as I'm working on this thing, I can take advantage of that. Um yeah, I don't know. Like I think there's I think this year, especially in the beginning, uh I'm probably going to spend a lot more time like crafting skills. Uh which I I'm pretty excited for because it's not like a it's it's weird.
It it seems like it's such a simple thing, like isn't it really just a a prompt and a script and like Yes. Um, but it's kind of giving me an ability to like not have to like have a bunch of prompts saved or like uh it's it's one more level of like developer experience, I guess. So, if I can notice the patterns where I'm constantly doing things or I'm like, here's another way to look at it. I like using C-Pilot for ABC, but sometimes I have to go to chat GPT or some other AI tool to go research something, generate it, perform some action. Like, why can't I make a skill? Cuz it could just be a little program that runs with a prompt associated with it. Why can't I make a skill so that going forward Claude or co-pilot can go kind of do things the same way that I would manually, right?
So, I'm trying to find these types of opportunities. Um, and I think because that's a new thing for me, I'll probably have a bunch of them that I do initially and then it'll kind of level out. I'm so sorry about this camera experience. I just looked over and the camera's like bouncing around in here. Um, yeah. On that note, I saw someone on Instagram or something. They were talking about like having the camera positioned almost in the the passenger seat, kind of looking forward slash at the side of my head. Uh, but maybe more forward. Maybe that's an interesting angle I'll try out. I know. Uh I had at least one comment from someone that was like, "You got to do something about like these like your videos suck because because you know you're not doing different camera angles." And I'm like, "Dude, like it's literally just anchored to the ceiling in here.
So, I don't got a video editing team for this, which is why I need your help to make the channel popular. And then we can drive Lamborghinis and have cool video angles and I don't know, do all sorts of fun content creation stuff someday, right? Until that day comes, we can't even afford to drive in the fast lane. How do we fix this? Come on. Was I doing it the complete? Yeah, I was just loosening it the whole drive. There, I fixed it. That feels stupid. I thought I was tightening it when I was driving, but I was just loosening it even more. So, oops. Okay, so almost at work here. That was a ridiculously long video because of traffic. I missed a meeting, uh, which is shitty. Um, I'll use this opportunity just to remind folks of other stuff I got going on. So, uh, obviously you're watching Code Commute.
If you have questions about software engineering, career progression, that kind of stuff, leave them in the comments. You can go to codemute.com. You can ask questions anonymously that way. Uh, or just have a, you know, a more in-depth write up. Um, up to you. But that emails me and then I can I can read through it. Um, comments are fine too, right? Like just leave them on videos. It doesn't matter what the video is. Otherwise, you can reach out to me on social media. It's just dev leader. Uh, I have code commute social accounts, too. Uh, LinkedIn is arguably the best. Uh, Twitter does really stupid stuff with, uh, message request filtering, so some of the requests I don't even see because it doesn't notify me. Uh and then yeah, I got other YouTube channels too. So I mentioned my main channel is Dev Leader. That's where I do a lot more of my like actual programming tutorials uh primarily in C.
And then I have uh a lot more like AI coding videos that I'm doing so you can see how I'm using AI tools. Uh not because I think I'm the best at it, but so that you can see real use cases for it. I'm trying not to be uh the person who is like, "Oh my god, like you never need to learn to code again because AI, it's the best." Like, no, I'll show you real examples of what I'm doing. Um, and hopefully you find that helpful. I have the Dev Leader podcast, which is where I interview other software engineers. So, that's another YouTube channel, and Spotify. And so on that channel, not only is it interviewing other developers, and you get to see some of their uh career journey, but I also do a live stream every Monday at 7:00 p.m. Pacific. And so those topics, oh, nice some spots.
Those topics are uh generally from code commute. So, if you enjoy the conversation here, the topics here, and you want to be part of the conversation, check out the live stream on the Dev Leader podcast channel because then you can come hang out, ask questions, that kind of stuff. It's also um how I feed my newsletter. So, um if you again like the topics, uh Devleer weekly, so it's just available at weekly.devleer.ca, A you can check that out. It's an email newsletter, but you don't have to subscribe. It's also acts like a blog. So, if you're just like, I want to see what the live stream is, go check it out at weekly.devleader.ca. Thanks so much for hanging out on this drive. How long was this? I can't read. Upside down. Uh, very long video. Thanks for being here. See you in the next one.
Frequently Asked Questions
These Q&A summaries are AI-generated from the video transcript and may not reflect my exact wording. Watch the video for the full context.
- How do you approach converting a dependency injection library from reflection to source generation in C#?
- I wanted to convert my dependency injection library to use source generation because reflection can break with trimming and is historically slow. Since I know all the plugin information at compile time, source generation allows me to generate the necessary code during compilation, making it much faster and compatible with trimming. I used Claude in planning mode to help generate the initial code, then iterated with GitHub Copilot CLI and Visual Studio to refine and fix issues.
- What are the differences in your experience using Claude Code versus GitHub Copilot CLI for AI-assisted development?
- I initially tried Claude Code because I like its extensibility and the ability to interrupt the agent to keep it on track. However, I ran into usage limits and some trust issues with the tests it generated. When I switched to GitHub Copilot CLI, my first experience was poor due to wrong model selection, but after switching to the Opus model, it worked very well. Copilot CLI lacks a built-in planning mode like Claude, but I can still have planning conversations with it. Overall, I found a good back-and-forth workflow between Copilot CLI and Visual Studio.
- How do you decide which AI tooling to use for different development tasks?
- I use different AI tools depending on the task and context. For research and API surface exploration, I prefer ChatGPT because of its research mode and easy browser access. For architecture design and large feature planning, I like GitHub Copilot in GitHub Spaces for its chat-style interaction and ability to handle repositories in the cloud. For hands-on coding and refactoring, I use GitHub Copilot in Visual Studio for better control and integration. The choice depends on the tool's capabilities, interface, and what fits my workflow best.