Agentic Workflows with Don Syme
Read full transcript 29 segments
-
And I like the idea of like setting the And I like the idea of like setting the junior engineer up for success, but I junior engineer up for success, but I junior engineer up for success, but I also call out that in a world where also call out that in a world where also call out that in a world where you're the expert, the AI is the junior you're the expert, the AI is the junior you're the expert, the AI is the junior engineer with unlimited energy. So, give engineer with unlimited energy. So, give engineer with unlimited energy. So, give it the toil. it the toil. it the toil. And in a world where you're maybe not And in a world where you're maybe not And in a world where you're maybe not the expert, and like I don't know Rust, the expert, and like I don't know Rust, the expert, and like I don't know Rust, I think of the AI as being more senior I think of the AI as being more senior I think of the AI as being more senior to me until my code smell ability meets to me until my code smell ability meets to me until my code smell ability meets it or exceeds it, and then I start it or exceeds it, and then I start it or exceeds it, and then I start treating it again as a junior intern treating it again as a junior intern treating it again as a junior intern with a lot of energy. Hi, I'm Scott with a lot of energy. Hi, I'm Scott with a lot of energy. Hi, I'm Scott Hanselman. This is another episode of Hanselman. This is another episode of Hanselman. This is another episode of Hanselminutes. Today, I have the Hanselminutes. Today, I have the Hanselminutes. Today, I have the pleasure of chatting with Don Syme. He's pleasure of chatting with Don Syme. He's pleasure of chatting with Don Syme. He's the designer and architect of the F# the designer and architect of the F# the designer and architect of the F# programming language, but he has turned programming language, but he has turned programming language, but he has turned his eyes to something more interesting his eyes to something more interesting his eyes to something more interesting lately, which is agentic workflows. lately, which is agentic workflows. lately, which is agentic workflows. How's it going, sir? Hello, Scott. And How's it going, sir? Hello, Scott. And How's it going, sir? Hello, Scott. And it's a real pleasure to be appearing on it's a real pleasure to be appearing on it's a real pleasure to be appearing on your podcast. Great your podcast. Great your podcast. Great >> Yeah. >> Yeah. >> Yeah. Great to be back here. It's been a Great to be back here. It's been a Great to be back here. It's been a minute. Absolutely, it's been a minute. minute. Absolutely, it's been a minute. minute. Absolutely, it's been a minute. And you know, I think you and I are in And you know, I think you and I are in And you know, I think you and I are in an interesting place right now because an interesting place right now because an interesting place right now because we are people of a certain age or a we are people of a certain age or a we are people of a certain age or a certain amount of history and context at certain amount of history and context at certain amount of history and context at a moment in computer science where I a moment in computer science where I a moment in computer science where I think more stuff is changing than think more stuff is changing than think more stuff is changing than anything I could remember. I cannot anything I could remember. I cannot anything I could remember. I cannot think of a time that was more kind of think of a time that was more kind of think of a time that was more kind of chaotic and interesting than this time chaotic and interesting than this time chaotic and interesting than this time that we're in right now.
-
that we're in right now. that we're in right now. It's a super super interesting time. The It's a super super interesting time. The It's a super super interesting time. The way I You know, uh I think a lot about way I You know, uh I think a lot about way I You know, uh I think a lot about what people entering software what people entering software what people entering software engineering and is is is coming into. engineering and is is is coming into. engineering and is is is coming into. And I I you know, they've One analogy I And I I you know, they've One analogy I And I I you know, they've One analogy I like to use is that they have wizard like to use is that they have wizard like to use is that they have wizard powers in their hand. powers in their hand. powers in their hand. Uh you know, they've got the magic Uh you know, they've got the magic Uh you know, they've got the magic staff. They can bang the ground and staff. They can bang the ground and staff. They can bang the ground and you know, up comes the the magic the you know, up comes the the magic the you know, up comes the the magic the magic construction of piece of software magic construction of piece of software magic construction of piece of software using modern coding agents. Uh and it's using modern coding agents. Uh and it's using modern coding agents. Uh and it's extraordinary powers. And there's a lot extraordinary powers. And there's a lot extraordinary powers. And there's a lot to learn about how to use those well and to learn about how to use those well and to learn about how to use those well and how to use them well in teams and how to how to use them well in teams and how to how to use them well in teams and how to uh use them well in companies and and uh use them well in companies and and uh use them well in companies and and what it meant All the ramifications of what it meant All the ramifications of what it meant All the ramifications of having having having full of wizards kind of working full of wizards kind of working full of wizards kind of working together, but it's incredibly changing together, but it's incredibly changing together, but it's incredibly changing times for software development for sure. times for software development for sure. times for software development for sure. Do you Do you mourn the loss of the Do you Do you mourn the loss of the Do you Do you mourn the loss of the craft or do you think that the craft is craft or do you think that the craft is craft or do you think that the craft is dying or just changing? Cuz I feel like dying or just changing? Cuz I feel like dying or just changing? Cuz I feel like we've been handed a power tool and we've been handed a power tool and we've been handed a power tool and people who chop trees down with axes people who chop trees down with axes people who chop trees down with axes might be sad about the advent of the might be sad about the advent of the might be sad about the advent of the chainsaw.
-
chainsaw. chainsaw. Yeah, there's a lot of analogies you can Yeah, there's a lot of analogies you can Yeah, there's a lot of analogies you can use. I'm not one to to to mourn. I love use. I'm not one to to to mourn. I love use. I'm not one to to to mourn. I love the craft. You know, I've invested a lot the craft. You know, I've invested a lot the craft. You know, I've invested a lot of time in making much better of time in making much better of time in making much better experiences for developers for making experiences for developers for making experiences for developers for making software you can rely on to that has software you can rely on to that has software you can rely on to that has this this this strong construction guarantees as you strong construction guarantees as you strong construction guarantees as you you know, if you look at say you know, if you look at say you know, if you look at say null getting rid of nulls all the way null getting rid of nulls all the way null getting rid of nulls all the way through software and kind of just making through software and kind of just making through software and kind of just making robustness in the the underlying robustness in the the underlying robustness in the the underlying structures. structures. structures. That's all still relevant, you know, That's all still relevant, you know, That's all still relevant, you know, that's and that's all those themes are that's and that's all those themes are that's and that's all those themes are kind of going to come back in one way or kind of going to come back in one way or kind of going to come back in one way or the other. We are going to want as much the other. We are going to want as much the other. We are going to want as much as people are happy vibe coding up as people are happy vibe coding up as people are happy vibe coding up Python and the like, there is still a Python and the like, there is still a Python and the like, there is still a notion of better software. And a lot of notion of better software. And a lot of notion of better software. And a lot of the work we're kind of doing is about the work we're kind of doing is about the work we're kind of doing is about how can we How can we get the best of how can we How can we get the best of how can we How can we get the best of both worlds, right? How do you How do both worlds, right? How do you How do both worlds, right? How do you How do you empower the developer to be running you empower the developer to be running you empower the developer to be running full throttle in full throttle in full throttle in not necessarily in the vibe coding mode, not necessarily in the vibe coding mode, not necessarily in the vibe coding mode, but certainly in that kind of creative but certainly in that kind of creative but certainly in that kind of creative creative vibe coding can be part of creative vibe coding can be part of creative vibe coding can be part of that. You can be using CCA sort of task that. You can be using CCA sort of task that. You can be using CCA sort of task oriented programming.
-
oriented programming. oriented programming. >> [snorts] >> [snorts] >> [snorts] >> Copilot in in GitHub or whatever you're >> Copilot in in GitHub or whatever you're >> Copilot in in GitHub or whatever you're using and yet you want them to be strong using and yet you want them to be strong using and yet you want them to be strong in their construction. You want to be in their construction. You want to be in their construction. You want to be good performance. You want to be solid good performance. You want to be solid good performance. You want to be solid software. You want to be well-tested software. You want to be well-tested software. You want to be well-tested software. You want to be achieving you software. You want to be achieving you software. You want to be achieving you know, achieving all the notions of know, achieving all the notions of know, achieving all the notions of quality in software that we still need quality in software that we still need quality in software that we still need to be kind of chasing chasing after. to be kind of chasing chasing after. to be kind of chasing chasing after. Mhm. Mhm. Mhm. One of the the samples and examples that One of the the samples and examples that One of the the samples and examples that I use when I'm teaching this stuff is I I use when I'm teaching this stuff is I I use when I'm teaching this stuff is I made a silly little trivial app that's a made a silly little trivial app that's a made a silly little trivial app that's a Windows ring light. It draws a square Windows ring light. It draws a square Windows ring light. It draws a square around its square on your screen, and it around its square on your screen, and it around its square on your screen, and it used the brightness of your LCD screen used the brightness of your LCD screen used the brightness of your LCD screen to give you a light, like a ring light, to give you a light, like a ring light, to give you a light, like a ring light, like the one that I've got here. And on like the one that I've got here. And on like the one that I've got here. And on its face, I vibe coded a rounded white its face, I vibe coded a rounded white its face, I vibe coded a rounded white square. square. square. That's a simplistic thing, and someone That's a simplistic thing, and someone That's a simplistic thing, and someone could look at that and say, "Well, could look at that and say, "Well, could look at that and say, "Well, that's trivial. That's a one-shot, that's trivial. That's a one-shot, that's trivial. That's a one-shot, right? That's a one-prompt vibed thing." right? That's a one-prompt vibed thing." right? That's a one-prompt vibed thing." But then I say, But then I say, But then I say, "It has a GitHub workflow. It has signed "It has a GitHub workflow. It has signed "It has a GitHub workflow. It has signed certificates. It has a packaging model.
-
certificates. It has a packaging model. certificates. It has a packaging model. It has change logs. It has tests. It has It has change logs. It has tests. It has It has change logs. It has tests. It has an automatic updating system. It works an automatic updating system. It works an automatic updating system. It works on this operating system and that one." on this operating system and that one." on this operating system and that one." There's There's a software development There's There's a software development There's There's a software development life cycle even around something as life cycle even around something as life cycle even around something as trivial as I want to ship a rounded trivial as I want to ship a rounded trivial as I want to ship a rounded square. square. square. And I think that's important for people And I think that's important for people And I think that's important for people to remember. Uh uh uh absolutely. And uh to remember. Uh uh uh absolutely. And uh to remember. Uh uh uh absolutely. And uh you know, we'll get into sort of GitHub you know, we'll get into sort of GitHub you know, we'll get into sort of GitHub agentic workflows and automating uh agentic workflows and automating uh agentic workflows and automating uh aspects of improvements and the like in aspects of improvements and the like in aspects of improvements and the like in in just a moment. Yeah, we're getting in just a moment. Yeah, we're getting in just a moment. Yeah, we're getting into examples of improvement, but one of into examples of improvement, but one of into examples of improvement, but one of the One of the cases I came across was the One of the cases I came across was the One of the cases I came across was where the agents uh in a repository where the agents uh in a repository where the agents uh in a repository automatically uh suggested to me that I automatically uh suggested to me that I automatically uh suggested to me that I use NuGet trusted publishing and use NuGet trusted publishing and use NuGet trusted publishing and nuget.org. And I hadn't actually set up nuget.org. And I hadn't actually set up nuget.org. And I hadn't actually set up the repositories to do this before, and the repositories to do this before, and the repositories to do this before, and I was just amazing cuz the agents could I was just amazing cuz the agents could I was just amazing cuz the agents could kind of proactively kick in and say, kind of proactively kick in and say, kind of proactively kick in and say, "Hey, you can improve your engineering "Hey, you can improve your engineering "Hey, you can improve your engineering along this dimension." And of course, along this dimension." And of course, along this dimension." And of course, I've got to double-check that, and I've I've got to double-check that, and I've I've got to double-check that, and I've got to be in control of that cuz these got to be in control of that cuz these got to be in control of that cuz these critical aspects about how to shape critical aspects about how to shape critical aspects about how to shape software and actually get it out to software and actually get it out to software and actually get it out to customers, just like you were saying. customers, just like you were saying. customers, just like you were saying. Yeah. I feel like though, if the corpus Yeah. I feel like though, if the corpus Yeah. I feel like though, if the corpus of material is the last 50 years of of material is the last 50 years of of material is the last 50 years of programming, or at least the last 20 or programming, or at least the last 20 or programming, or at least the last 20 or 30 years of it being online, 30 years of it being online, 30 years of it being online, are we at a place where it's going to are we at a place where it's going to are we at a place where it's going to just make the statistical mean of the just make the statistical mean of the just make the statistical mean of the software development life cycle? How do software development life cycle? How do software development life cycle? How do we improve the software development life we improve the software development life we improve the software development life cycle if we are just training it on cycle if we are just training it on cycle if we are just training it on workflows that already exist, that are workflows that already exist, that are workflows that already exist, that are all kind of like all kind of like all kind of like mediocre? How do you call out best mediocre? How do you call out best mediocre? How do you call out best practices, and who owns best practices?
-
practices, and who owns best practices? practices, and who owns best practices? I mean, it I mean, it I mean, it in my in my setting something something in my in my setting something something in my in my setting something something that's really important to me in our that's really important to me in our that's really important to me in our current work is that we be about current work is that we be about current work is that we be about empowering the repository maintainers, empowering the repository maintainers, empowering the repository maintainers, repository owners, the core engineers repository owners, the core engineers repository owners, the core engineers who are kind of shaping the whole who are kind of shaping the whole who are kind of shaping the whole direction, the whole trajectory of the direction, the whole trajectory of the direction, the whole trajectory of the overall piece of the software, including overall piece of the software, including overall piece of the software, including they can be product managers and they they can be product managers and they they can be product managers and they can be a stronger connection with can be a stronger connection with can be a stronger connection with product for example. That we be product for example. That we be product for example. That we be empowering them to be setting the tone empowering them to be setting the tone empowering them to be setting the tone and the direction and they are in in and the direction and they are in in and the direction and they are in in control of the automation that they're control of the automation that they're control of the automation that they're using in their repositories and what using in their repositories and what using in their repositories and what goals are being chased after by that goals are being chased after by that goals are being chased after by that automation. It's clear we're at a point automation. It's clear we're at a point automation. It's clear we're at a point where you can specify the goals of a where you can specify the goals of a where you can specify the goals of a repository and the agents can chase repository and the agents can chase repository and the agents can chase after those goals with great with great after those goals with great with great after those goals with great with great vigor. Uh and but someone's got to be vigor. Uh and but someone's got to be vigor. Uh and but someone's got to be there setting up the right feedback there setting up the right feedback there setting up the right feedback loops. For example, if you're going to loops. For example, if you're going to loops. For example, if you're going to get it to chase after performance goals, get it to chase after performance goals, get it to chase after performance goals, it really helps to have production it really helps to have production it really helps to have production profiling production telemetry data. Uh profiling production telemetry data. Uh profiling production telemetry data. Uh uh and metrics coming flowing into your uh and metrics coming flowing into your uh and metrics coming flowing into your kind of uh loops that are about kind of uh loops that are about kind of uh loops that are about self-improving the software as it goes.
-
self-improving the software as it goes. self-improving the software as it goes. Yeah, you know, the these loops I call Yeah, you know, the these loops I call Yeah, you know, the these loops I call them the ambiguity loops. I feel like them the ambiguity loops. I feel like them the ambiguity loops. I feel like there's four loops there's four loops there's four loops and then there's ambiguity loops. And and then there's ambiguity loops. And and then there's ambiguity loops. And four loops are deterministic and four loops are deterministic and four loops are deterministic and programmatic and clear and it's like I'm programmatic and clear and it's like I'm programmatic and clear and it's like I'm doing a thing and it's unambiguous. doing a thing and it's unambiguous. doing a thing and it's unambiguous. But the power of an ambiguity loop is But the power of an ambiguity loop is But the power of an ambiguity loop is the amount of like flexibility it has to the amount of like flexibility it has to the amount of like flexibility it has to make the decision it needs to to solve make the decision it needs to to solve make the decision it needs to to solve the problem that it needs to in the the problem that it needs to in the the problem that it needs to in the moment. So if something is fragile, moment. So if something is fragile, moment. So if something is fragile, I can either make it less fragile by I can either make it less fragile by I can either make it less fragile by making my four loop more robust and making my four loop more robust and making my four loop more robust and putting in error handling and checks and putting in error handling and checks and putting in error handling and checks and asserting my assumptions or I could asserting my assumptions or I could asserting my assumptions or I could introduce an ambiguity loop that has a introduce an ambiguity loop that has a introduce an ambiguity loop that has a little bit more flexibility in its little bit more flexibility in its little bit more flexibility in its ability to change and make decisions to ability to change and make decisions to ability to change and make decisions to make the software more robust. But that make the software more robust. But that make the software more robust. But that ambiguity loop itself requires checks ambiguity loop itself requires checks ambiguity loop itself requires checks and balances and tests and all the and balances and tests and all the and balances and tests and all the things that make software good, whether things that make software good, whether things that make software good, whether it be a check for cyclomatic complexity it be a check for cyclomatic complexity it be a check for cyclomatic complexity or a series of tests to indicate what or a series of tests to indicate what or a series of tests to indicate what success looks like, unchecked ambiguity success looks like, unchecked ambiguity success looks like, unchecked ambiguity loops are I think where loops are I think where loops are I think where AI software goes off the rails, and I AI software goes off the rails, and I AI software goes off the rails, and I feel like good software engineering is feel like good software engineering is feel like good software engineering is what keeps it on rails.
-
what keeps it on rails. what keeps it on rails. Absolutely. The The term we've kind of Absolutely. The The term we've kind of Absolutely. The The term we've kind of been throwing around to kind of package been throwing around to kind of package been throwing around to kind of package up what's happening in the SDLC is we we up what's happening in the SDLC is we we up what's happening in the SDLC is we we we love the term continuous integration. we love the term continuous integration. we love the term continuous integration. We love the term continuous deployment. We love the term continuous deployment. We love the term continuous deployment. And those are absolutely critical parts And those are absolutely critical parts And those are absolutely critical parts of the software industry going forward. of the software industry going forward. of the software industry going forward. But it's like it's like they Turns out But it's like it's like they Turns out But it's like it's like they Turns out they're two pillars of of a stool. they're two pillars of of a stool. they're two pillars of of a stool. There's a third leg we need to add. And There's a third leg we need to add. And There's a third leg we need to add. And the one we're adding is what we call the one we're adding is what we call the one we're adding is what we call continuous AI. continuous AI. continuous AI. >> [snorts] >> [snorts] >> [snorts] >> And that is all about these ambigu- >> And that is all about these ambigu- >> And that is all about these ambigu- ambiguity loops, these these these ambiguity loops, these these these ambiguity loops, these these these softer judgments that need to be made softer judgments that need to be made softer judgments that need to be made about software. about software. about software. So for example, you have continuous So for example, you have continuous So for example, you have continuous documentation. Now, when you do documentation. Now, when you do documentation. Now, when you do continuous documentation, you've got a continuous documentation, you've got a continuous documentation, you've got a lot of judgments you need to make. lot of judgments you need to make. lot of judgments you need to make. Do you update the docs, or did someone Do you update the docs, or did someone Do you update the docs, or did someone update the docs, and you've actually got update the docs, and you've actually got update the docs, and you've actually got to go update the code? For example, to go update the code? For example, to go update the code? For example, you've got to make judgments about how you've got to make judgments about how you've got to make judgments about how well how to how to how to update the well how to how to how to update the well how to how to how to update the docs. Of course, a human needs to be docs. Of course, a human needs to be docs. Of course, a human needs to be there checking that the the doc updates there checking that the the doc updates there checking that the the doc updates are good and guiding the kind of are good and guiding the kind of are good and guiding the kind of process.
-
process. process. And so we obviously want continuous And so we obviously want continuous And so we obviously want continuous integration. We want continuous integration. We want continuous integration. We want continuous development. We want to add to that development. We want to add to that development. We want to add to that third leg, continuous documentation. third leg, continuous documentation. third leg, continuous documentation. Okay, but it's not just about the Okay, but it's not just about the Okay, but it's not just about the continuous documentation. We've got all continuous documentation. We've got all continuous documentation. We've got all sorts of other things we can be adding. sorts of other things we can be adding. sorts of other things we can be adding. We can be doing continuous triage. We We can be doing continuous triage. We We can be doing continuous triage. We can be doing And ones that are really can be doing And ones that are really can be doing And ones that are really close to my heart, I like continuous close to my heart, I like continuous close to my heart, I like continuous code simplification. Like why not code simplification. Like why not code simplification. Like why not improve your code continuously? improve your code continuously? improve your code continuously? Continuous test improvement. Continuous test improvement. Continuous test improvement. Continuous Continuous Continuous reporting of say say security analysis reporting of say say security analysis reporting of say say security analysis or other kind of analyses over your or other kind of analyses over your or other kind of analyses over your code. code. code. And so yeah, this is this is the world And so yeah, this is this is the world And so yeah, this is this is the world we're heading to where we in the SDLC we're heading to where we in the SDLC we're heading to where we in the SDLC where we're adding where we're adding where we're adding and it's it's really important to see and it's it's really important to see and it's it's really important to see that it's additive cuz actually devops that it's additive cuz actually devops that it's additive cuz actually devops devops becomes even more important. But devops becomes even more important. But devops becomes even more important. But there's a strong culture in devops where there's a strong culture in devops where there's a strong culture in devops where you know, people are for CI and CD, you you know, people are for CI and CD, you you know, people are for CI and CD, you don't want non-determinism. There's a don't want non-determinism. There's a don't want non-determinism. There's a huge culture around determinism in that huge culture around determinism in that huge culture around determinism in that space and that's great. We love that, space and that's great. We love that, space and that's great. We love that, okay.
-
okay. okay. But and so you've got to open your mind But and so you've got to open your mind But and so you've got to open your mind a little bit to say, let's also bring in a little bit to say, let's also bring in a little bit to say, let's also bring in continuous AI into this to allow these continuous AI into this to allow these continuous AI into this to allow these powerful tools to be present in this powerful tools to be present in this powerful tools to be present in this SDLC yet still under human control. It's SDLC yet still under human control. It's SDLC yet still under human control. It's quite There's an interesting culture quite There's an interesting culture quite There's an interesting culture shifts that are going to happen in the shifts that are going to happen in the shifts that are going to happen in the whole world of devops and SDLC. whole world of devops and SDLC. whole world of devops and SDLC. There I got a negative comment recently There I got a negative comment recently There I got a negative comment recently on one of my Instagrams where I you on one of my Instagrams where I you on one of my Instagrams where I you know, I put out clips of our shows and know, I put out clips of our shows and know, I put out clips of our shows and stuff and someone said that they felt stuff and someone said that they felt stuff and someone said that they felt that the podcast lately had become an AI that the podcast lately had become an AI that the podcast lately had become an AI selling machine. selling machine. selling machine. And the podcast is my own my you know, I And the podcast is my own my you know, I And the podcast is my own my you know, I work for Microsoft and GitHub. You work work for Microsoft and GitHub. You work work for Microsoft and GitHub. You work for GitHub in our day jobs. What do you for GitHub in our day jobs. What do you for GitHub in our day jobs. What do you say to someone who who's who says say to someone who who's who says say to someone who who's who says oh man, Don, that was my guy. You know, oh man, Don, that was my guy. You know, oh man, Don, that was my guy. You know, I love F# and I love all the work that I love F# and I love all the work that I love F# and I love all the work that Don's done for the last 30 years and now Don's done for the last 30 years and now Don's done for the last 30 years and now he's he's selling AI. Are you selling AI he's he's selling AI. Are you selling AI he's he's selling AI. Are you selling AI or are you meeting the the software or are you meeting the the software or are you meeting the the software development life cycle moment and trying development life cycle moment and trying development life cycle moment and trying to meet it with integrity?
-
to meet it with integrity? to meet it with integrity? Uh Uh Uh of course you set up the question. I'm of course you set up the question. I'm of course you set up the question. I'm I'm going to say I'm going to say I'm going to say >> honestly wondering because I I I feel >> honestly wondering because I I I feel >> honestly wondering because I I I feel like I know what I'm doing. I'm trying like I know what I'm doing. I'm trying like I know what I'm doing. I'm trying to explore the space. to explore the space. to explore the space. Uh I mean, I use I absolutely this you Uh I mean, I use I absolutely this you Uh I mean, I use I absolutely this you get the reactions and there's there is get the reactions and there's there is get the reactions and there's there is some snake oil in in in the AI industry. some snake oil in in in the AI industry. some snake oil in in in the AI industry. That's that's that's that's that's true, That's that's that's that's that's true, That's that's that's that's that's true, but but but the we have to shift the conversation the we have to shift the conversation the we have to shift the conversation about what is the future of software about what is the future of software about what is the future of software development to understand how developers development to understand how developers development to understand how developers can be given the power to decide how can be given the power to decide how can be given the power to decide how much automation they use and what kind much automation they use and what kind much automation they use and what kind of automation they use. of automation they use. of automation they use. And that's exactly And that's exactly And that's exactly what we're doing with GitHub agentic what we're doing with GitHub agentic what we're doing with GitHub agentic workflows is we're saying just like in workflows is we're saying just like in workflows is we're saying just like in CICD, how did we resolve the CICD, how did we resolve the CICD, how did we resolve the conversation about how how continuous conversation about how how continuous conversation about how how continuous integration and how how and continuous integration and how how and continuous integration and how how and continuous development happen? Well, the resolution development happen? Well, the resolution development happen? Well, the resolution for a huge portion of the industry is for a huge portion of the industry is for a huge portion of the industry is found in GitHub actions. And it's found found in GitHub actions. And it's found found in GitHub actions. And it's found in GitHub actions YAML. And it's found in GitHub actions YAML. And it's found in GitHub actions YAML. And it's found in the fact that developers are given a in the fact that developers are given a in the fact that developers are given a very quite powerful set of tools in very quite powerful set of tools in very quite powerful set of tools in order to decide how CICD happens in order to decide how CICD happens in order to decide how CICD happens in their repo. Decide how build decide what their repo. Decide how build decide what their repo. Decide how build decide what automation means in their repositories.
-
automation means in their repositories. automation means in their repositories. And I am all in favor of giving that And I am all in favor of giving that And I am all in favor of giving that power to teams and to repository power to teams and to repository power to teams and to repository maintainers and to individual developers maintainers and to individual developers maintainers and to individual developers to say, actually, let's solve this to say, actually, let's solve this to say, actually, let's solve this question the same way, which is I don't question the same way, which is I don't question the same way, which is I don't know how much AI you should be using in know how much AI you should be using in know how much AI you should be using in your repository. I don't know what your your repository. I don't know what your your repository. I don't know what your constraints are. And as I think you constraints are. And as I think you constraints are. And as I think you should be given the power to decide how should be given the power to decide how should be given the power to decide how much to be using and what it much to be using and what it much to be using and what it how to guardrail that. And how to guardrail that. And how to guardrail that. And at the outset, we should give by default at the outset, we should give by default at the outset, we should give by default extremely strong guardrails to allow to extremely strong guardrails to allow to extremely strong guardrails to allow to make sure that whatever happens proceeds make sure that whatever happens proceeds make sure that whatever happens proceeds safely. Yeah. safely. Yeah. safely. Yeah. So, okay. So, let's talk about So, okay. So, let's talk about So, okay. So, let's talk about GitHub Actions workflows and and how GitHub Actions workflows and and how GitHub Actions workflows and and how that turns into agentic workflows. So, I that turns into agentic workflows. So, I that turns into agentic workflows. So, I have a GitHub a GitHub folder in my have a GitHub a GitHub folder in my have a GitHub a GitHub folder in my repositories. Within that, I have YAML repositories. Within that, I have YAML repositories. Within that, I have YAML files and I do my I like a build.yaml files and I do my I like a build.yaml files and I do my I like a build.yaml and things like that. and things like that. and things like that. And then I have other workflows that are And then I have other workflows that are And then I have other workflows that are not necessarily builds. They might be on not necessarily builds. They might be on not necessarily builds. They might be on a check-in, I run a workflow or when an a check-in, I run a workflow or when an a check-in, I run a workflow or when an I when an when an issue uh moves into a I when an when an issue uh moves into a I when an when an issue uh moves into a certain state, I run a workflow. What certain state, I run a workflow. What certain state, I run a workflow. What then is an agentic workflow? Because then is an agentic workflow? Because then is an agentic workflow? Because these YAML ones are very deterministic.
-
these YAML ones are very deterministic. these YAML ones are very deterministic. I mean, they're almost a little I mean, they're almost a little I mean, they're almost a little programming language. Most of my GitHub programming language. Most of my GitHub programming language. Most of my GitHub actions are little scripts, little actions are little scripts, little actions are little scripts, little programs, and they don't really deal programs, and they don't really deal programs, and they don't really deal well with things moving, a file well with things moving, a file well with things moving, a file doesn't isn't named right, or some doesn't isn't named right, or some doesn't isn't named right, or some folder is moved, then the build will folder is moved, then the build will folder is moved, then the build will break. It's pretty un- unambiguous. break. It's pretty un- unambiguous. break. It's pretty un- unambiguous. Uh absolutely. So, a a GitHub agentic Uh absolutely. So, a a GitHub agentic Uh absolutely. So, a a GitHub agentic workflow, I mean, at some level, it's workflow, I mean, at some level, it's workflow, I mean, at some level, it's really, really simple. You got some really, really simple. You got some really, really simple. You got some front matter, and you got some markdown. front matter, and you got some markdown. front matter, and you got some markdown. And you can think of this as a bit like And you can think of this as a bit like And you can think of this as a bit like a prompt. Uh in fact, the prompt, the a prompt. Uh in fact, the prompt, the a prompt. Uh in fact, the prompt, the markdown, is going to end up in the markdown, is going to end up in the markdown, is going to end up in the hands of a coding agent, and it's going hands of a coding agent, and it's going hands of a coding agent, and it's going to be run in a sandbox in the context of to be run in a sandbox in the context of to be run in a sandbox in the context of your repository, and it's going to do your repository, and it's going to do your repository, and it's going to do all the magical things that kind of all the magical things that kind of all the magical things that kind of coding agents can do. coding agents can do. coding agents can do. Except it's being run with extremely Except it's being run with extremely Except it's being run with extremely strong constraints around it. It's going strong constraints around it. It's going strong constraints around it. It's going to be run in a read-only mode. So, it's to be run in a read-only mode. So, it's to be run in a read-only mode. So, it's it can't do anything, can't do any write it can't do anything, can't do any write it can't do anything, can't do any write actions to to GitHub. It's going to hand actions to to GitHub. It's going to hand actions to to GitHub. It's going to hand off its results, and they're going to be off its results, and they're going to be off its results, and they're going to be checked further, and then they're kind checked further, and then they're kind checked further, and then they're kind of going to be applied. Okay. So, an of going to be applied. Okay. So, an of going to be applied. Okay. So, an agentic workflow just has at the at the agentic workflow just has at the at the agentic workflow just has at the at the top, it's got like, "Here are the tools top, it's got like, "Here are the tools top, it's got like, "Here are the tools that will be available. Like, here that will be available. Like, here that will be available. Like, here here's what here's what it can read from here's what here's what it can read from here's what here's what it can read from GitHub."
-
GitHub." GitHub." And that's usually limited just to the And that's usually limited just to the And that's usually limited just to the repository itself. repository itself. repository itself. Uh and here's the outputs it can be can Uh and here's the outputs it can be can Uh and here's the outputs it can be can make, and we call those safe outputs. make, and we call those safe outputs. make, and we call those safe outputs. And those are extremely guardrail set of And those are extremely guardrail set of And those are extremely guardrail set of safe outputs. So, for example, you can safe outputs. So, for example, you can safe outputs. So, for example, you can say that it's allowed to add a comment say that it's allowed to add a comment say that it's allowed to add a comment to an issue. But it's not allowed to add to an issue. But it's not allowed to add to an issue. But it's not allowed to add a comment to any issue. It says, "You're a comment to any issue. It says, "You're a comment to any issue. It says, "You're allowed to add a comment to the issue allowed to add a comment to the issue allowed to add a comment to the issue you accepted as input." And that's all you accepted as input." And that's all you accepted as input." And that's all you're allowed to do, Mr. Mr. AI agent. you're allowed to do, Mr. Mr. AI agent. you're allowed to do, Mr. Mr. AI agent. Mhm. You can you can deliver your Mhm. You can you can deliver your Mhm. You can you can deliver your comment, and we're going to check that a comment, and we're going to check that a comment, and we're going to check that a little bit more with the uh with another little bit more with the uh with another little bit more with the uh with another agent, where we kind of check that it agent, where we kind of check that it agent, where we kind of check that it looks looks safe. And then you can then looks looks safe. And then you can then looks looks safe. And then you can then you can make the make the comment. you can make the make the comment. you can make the make the comment. And [clears throat] so an Agenty And [clears throat] so an Agenty And [clears throat] so an Agenty workflow is sort of a pure expression of workflow is sort of a pure expression of workflow is sort of a pure expression of intent. It's like it's just saying, intent. It's like it's just saying, intent. It's like it's just saying, here's the markdown, here's the intent here's the markdown, here's the intent here's the markdown, here's the intent that we have. We'd like you to do an that we have. We'd like you to do an that we have. We'd like you to do an analysis of the issue and report back analysis of the issue and report back analysis of the issue and report back possible useful resources for from the possible useful resources for from the possible useful resources for from the documentation sets that we have for documentation sets that we have for documentation sets that we have for investigating this issue. If that's the investigating this issue. If that's the investigating this issue. If that's the AI automation you want in your your AI automation you want in your your AI automation you want in your your repository, you can kind of set up those repository, you can kind of set up those repository, you can kind of set up those kind of automated responses. You can get kind of automated responses. You can get kind of automated responses. You can get it to write the markdown so things are it to write the markdown so things are it to write the markdown so things are collapsed so it's not too intrusive into collapsed so it's not too intrusive into collapsed so it's not too intrusive into the repository. There's many different the repository. There's many different the repository. There's many different You're in charge of how the automation You're in charge of how the automation You're in charge of how the automation kind of proceeds in the in the kind of proceeds in the in the kind of proceeds in the in the repository. Mhm. So it differs repository. Mhm. So it differs repository. Mhm. So it differs it because it's sort of intent-based it because it's sort of intent-based it because it's sort of intent-based working.
-
working. working. It differs because there's an implicit It differs because there's an implicit It differs because there's an implicit use of use of use of a coding agent to do the a coding agent to do the a coding agent to do the kind of core of the work. It you can mix kind of core of the work. It you can mix kind of core of the work. It you can mix the two so you can have a an initial the two so you can have a an initial the two so you can have a an initial section which does a set of kind of section which does a set of kind of section which does a set of kind of traditional kind of YAML to kind of traditional kind of YAML to kind of traditional kind of YAML to kind of collect data for example. For instance, collect data for example. For instance, collect data for example. For instance, you might want to you might want to you might want to you might say you want to um you might say you want to um you might say you want to um triage all the issues in the repository. triage all the issues in the repository. triage all the issues in the repository. You can list out 500 issues and kind of You can list out 500 issues and kind of You can list out 500 issues and kind of all the unlabeled ones for example and all the unlabeled ones for example and all the unlabeled ones for example and grab that as a data set and then have grab that as a data set and then have grab that as a data set and then have the Agenty step kind of work on that the Agenty step kind of work on that the Agenty step kind of work on that data set and output a whole lot of data set and output a whole lot of data set and output a whole lot of labels to apply. Mhm. labels to apply. Mhm. labels to apply. Mhm. You had told I think you had told me You had told I think you had told me You had told I think you had told me that there was that there was that there was like some technical debt that you were like some technical debt that you were like some technical debt that you were really passionate about looking at a really passionate about looking at a really passionate about looking at a project and breaking this technical debt project and breaking this technical debt project and breaking this technical debt down. Yeah. down. Yeah. down. Yeah. Give me a success story cuz I think Give me a success story cuz I think Give me a success story cuz I think people are listening to this as an audio people are listening to this as an audio people are listening to this as an audio podcast and they might be saying, this podcast and they might be saying, this podcast and they might be saying, this is all very squishy. Tell me how I can is all very squishy. Tell me how I can is all very squishy. Tell me how I can use this today to make my life better.
-
use this today to make my life better. use this today to make my life better. Mhm. Absolutely. So one of the uses of Mhm. Absolutely. So one of the uses of Mhm. Absolutely. So one of the uses of GitHub Agenty workflows GitHub Agenty workflows GitHub Agenty workflows is a workflow I put together which is is a workflow I put together which is is a workflow I put together which is called repo assist. And I looking at it called repo assist. And I looking at it called repo assist. And I looking at it from the point of view of the life as a from the point of view of the life as a from the point of view of the life as a maintainer. And I was pretty well in a maintainer. And I was pretty well in a maintainer. And I was pretty well in a particular kind of repository where particular kind of repository where particular kind of repository where there's a fair chunk of technical debt, there's a fair chunk of technical debt, there's a fair chunk of technical debt, maybe even from tracking back over maybe even from tracking back over maybe even from tracking back over years. Okay, so you might have like 200 years. Okay, so you might have like 200 years. Okay, so you might have like 200 issues issues issues going back over years, and you've never going back over years, and you've never going back over years, and you've never been closing those out. And you've kind been closing those out. And you've kind been closing those out. And you've kind of got this guilt of a maintainer where of got this guilt of a maintainer where of got this guilt of a maintainer where you say, "I'm not taking this you say, "I'm not taking this you say, "I'm not taking this software forward because there's all software forward because there's all software forward because there's all this technical debt." And what do I do this technical debt." And what do I do this technical debt." And what do I do with this with this with this repository? I'm not properly maintaining repository? I'm not properly maintaining repository? I'm not properly maintaining it. And I And I want an assistant. I it. And I And I want an assistant. I it. And I And I want an assistant. I want help in making progress on this want help in making progress on this want help in making progress on this repo. So, you install this thing called repo. So, you install this thing called repo. So, you install this thing called repo assist, and it's like dead easy to repo assist, and it's like dead easy to repo assist, and it's like dead easy to add to the repository. You just go add add to the repository. You just go add add to the repository. You just go add wizard, and uh then add add repo assist, and it takes you through repo assist, and it takes you through repo assist, and it takes you through the process of setting it up in the the process of setting it up in the the process of setting it up in the repository. And that just installs one repository. And that just installs one repository. And that just installs one YAML workflow, one identic workflow into YAML workflow, one identic workflow into YAML workflow, one identic workflow into your repository. It'll appear under your repository. It'll appear under your repository. It'll appear under GitHub workflows, and it'll start GitHub workflows, and it'll start GitHub workflows, and it'll start running. And by default, it runs four running. And by default, it runs four running. And by default, it runs four times a day. You can also run it in a times a day. You can also run it in a times a day. You can also run it in a repeat sort of mode that it kind of repeat sort of mode that it kind of repeat sort of mode that it kind of blasts away for like 30 days worth of blasts away for like 30 days worth of blasts away for like 30 days worth of work, or work, or work, or uh just by a dash repeat 30. And then uh just by a dash repeat 30. And then uh just by a dash repeat 30. And then you get a whole lot of assists coming you get a whole lot of assists coming you get a whole lot of assists coming through the repo. Now, before you start through the repo. Now, before you start through the repo. Now, before you start running it, you can configure it. As I running it, you can configure it. As I running it, you can configure it. As I said, it's under your control. But the said, it's under your control. But the said, it's under your control. But the default configuration is it It sort of
-
default configuration is it It sort of default configuration is it It sort of chooses between different repository chooses between different repository chooses between different repository maintenance kind of tasks. It can label maintenance kind of tasks. It can label maintenance kind of tasks. It can label issues. issues. issues. If there If there are unlabeled issues, If there If there are unlabeled issues, If there If there are unlabeled issues, that's the first thing it'll kind of that's the first thing it'll kind of that's the first thing it'll kind of focus in on. focus in on. focus in on. Uh it'll try and fix bugs. It'll propose Uh it'll try and fix bugs. It'll propose Uh it'll try and fix bugs. It'll propose improvements, engineering improvements improvements, engineering improvements improvements, engineering improvements to the repository, and it'll do that by to the repository, and it'll do that by to the repository, and it'll do that by creating issues for those. creating issues for those. creating issues for those. If it's open to pull requests, it'll If it's open to pull requests, it'll If it's open to pull requests, it'll update its own pull requests. update its own pull requests. update its own pull requests. And it will also And it will also And it will also uh uh uh will also prepare releases in the will also prepare releases in the will also prepare releases in the repository. It won't make the release, repository. It won't make the release, repository. It won't make the release, but it will kind of make sure but it will kind of make sure but it will kind of make sure everything's in order according to the everything's in order according to the everything's in order according to the kind of guidelines and so on for towards kind of guidelines and so on for towards kind of guidelines and so on for towards moving towards a release, the release moving towards a release, the release moving towards a release, the release notes and whatever else needs to be notes and whatever else needs to be notes and whatever else needs to be done. done. done. And it is I found it absolutely amazing. And it is I found it absolutely amazing. And it is I found it absolutely amazing. I've I've worked in I've used it I think I've I've worked in I've used it I think I've I've worked in I've used it I think in seven repositories now. We'll take in seven repositories now. We'll take in seven repositories now. We'll take one uh say F sharp dot control dot one uh say F sharp dot control dot one uh say F sharp dot control dot asynchronous sequences. It's a piece of asynchronous sequences. It's a piece of asynchronous sequences. It's a piece of software that's very uh dear to to my software that's very uh dear to to my software that's very uh dear to to my heart uh because it's one of the first heart uh because it's one of the first heart uh because it's one of the first ever implementations of asynchronous ever implementations of asynchronous ever implementations of asynchronous sequences.
-
sequences. sequences. Uh and it it it's used widely in the F Uh and it it it's used widely in the F Uh and it it it's used widely in the F sharp community. And so uh that I think sharp community. And so uh that I think sharp community. And so uh that I think we had about 50 uh issues in that repo. we had about 50 uh issues in that repo. we had about 50 uh issues in that repo. And it just closed it just either made And it just closed it just either made And it just closed it just either made very good comments on on the whole very very good comments on on the whole very very good comments on on the whole very good comments on the on the issues. It good comments on the on the issues. It good comments on the on the issues. It was set up to be able to do that. was set up to be able to do that. was set up to be able to do that. And I was able to close out about half And I was able to close out about half And I was able to close out about half the issues with really good solid the issues with really good solid the issues with really good solid technical analysis. Because it's like technical analysis. Because it's like technical analysis. Because it's like these days, if you get an issue into a these days, if you get an issue into a these days, if you get an issue into a repository, what's the first thing as a repository, what's the first thing as a repository, what's the first thing as a maintainer you're likely to do? You're maintainer you're likely to do? You're maintainer you're likely to do? You're probably quite likely I mean probably quite likely I mean probably quite likely I mean to use a coding agent to help understand to use a coding agent to help understand to use a coding agent to help understand the kind of issue. And it's kind of the kind of issue. And it's kind of the kind of issue. And it's kind of automating that step. Of course, the automating that step. Of course, the automating that step. Of course, the human needs to be in control of actually human needs to be in control of actually human needs to be in control of actually checking those kind of results. And I checking those kind of results. And I checking those kind of results. And I have I went through and you go through have I went through and you go through have I went through and you go through and you're guided through this process. and you're guided through this process. and you're guided through this process. Each day you get a kind of set of links Each day you get a kind of set of links Each day you get a kind of set of links of things you should check, comments you of things you should check, comments you of things you should check, comments you should check. should check. should check. That It's funny you mention that because That It's funny you mention that because That It's funny you mention that because in the in this world now I'm spending in the in this world now I'm spending in the in this world now I'm spending like 90% of my time like reviewing stuff like 90% of my time like reviewing stuff like 90% of my time like reviewing stuff that AI has generated. And we're that AI has generated. And we're that AI has generated. And we're producing artifacts faster than the producing artifacts faster than the producing artifacts faster than the community than I can manage as a human.
-
community than I can manage as a human. community than I can manage as a human. And if you take that combinatoric and And if you take that combinatoric and And if you take that combinatoric and apply it to open source to your point, apply it to open source to your point, apply it to open source to your point, issues are coming in, pull requests are issues are coming in, pull requests are issues are coming in, pull requests are coming in, open source maintainers are coming in, open source maintainers are coming in, open source maintainers are getting overwhelmed and no one knows if getting overwhelmed and no one knows if getting overwhelmed and no one knows if they want to look at a PR if the PR was they want to look at a PR if the PR was they want to look at a PR if the PR was AI generated or not, if the person's a AI generated or not, if the person's a AI generated or not, if the person's a good committer. Like the the open source good committer. Like the the open source good committer. Like the the open source community and I think Peter Steinberg community and I think Peter Steinberg community and I think Peter Steinberg from Open Claws a great example. People from Open Claws a great example. People from Open Claws a great example. People are using their Open Claws to make pull are using their Open Claws to make pull are using their Open Claws to make pull request to Open Claws. He needs to request to Open Claws. He needs to request to Open Claws. He needs to bucketize all of those issues and see bucketize all of those issues and see bucketize all of those issues and see like he might have 10 PRs, and they all like he might have 10 PRs, and they all like he might have 10 PRs, and they all represent the same problem. That represent the same problem. That represent the same problem. That historically has all been done historically has all been done historically has all been done manually. That seems like a perfect manually. That seems like a perfect manually. That seems like a perfect opportunity for an agentic workflow to opportunity for an agentic workflow to opportunity for an agentic workflow to step in. step in. step in. Absolutely. So, you install and again, Absolutely. So, you install and again, Absolutely. So, you install and again, you got to think about what are the you got to think about what are the you got to think about what are the problems I'm having in the repository, problems I'm having in the repository, problems I'm having in the repository, and what help do I actually need? And and what help do I actually need? And and what help do I actually need? And like getting a kind of an agentic like getting a kind of an agentic like getting a kind of an agentic opinion about how this issue relates to opinion about how this issue relates to opinion about how this issue relates to all the other issues in the repository all the other issues in the repository all the other issues in the repository uh as it prepared and ready for the uh as it prepared and ready for the uh as it prepared and ready for the maintainer to work on. That's absolutely maintainer to work on. That's absolutely maintainer to work on. That's absolutely in the zone of what we are enabling with in the zone of what we are enabling with in the zone of what we are enabling with agentic workflows. So, my typical agentic workflows. So, my typical agentic workflows. So, my typical morning So, once you crunch through the morning So, once you crunch through the morning So, once you crunch through the technical debt, and that itself is just technical debt, and that itself is just technical debt, and that itself is just this incredibly freeing process. You this incredibly freeing process. You this incredibly freeing process. You like you feel like you're coming alive like you feel like you're coming alive like you feel like you're coming alive as a maintainer again. Cuz you got this as a maintainer again. Cuz you got this as a maintainer again. Cuz you got this software you love. And it's just you software you love. And it's just you software you love. And it's just you know, it's reached that kind of stage know, it's reached that kind of stage know, it's reached that kind of stage where it's become a little bit of a where it's become a little bit of a where it's become a little bit of a burden. And become like there's that burden. And become like there's that burden. And become like there's that technical debt, and you know, actually technical debt, and you know, actually technical debt, and you know, actually you you crunch through that technical you you crunch through that technical you you crunch through that technical debt, and it just goes back the it being debt, and it just goes back the it being debt, and it just goes back the it being the the agentic workflows. It goes back
-
the the agentic workflows. It goes back the the agentic workflows. It goes back over old issues from say 2000 and I over old issues from say 2000 and I over old issues from say 2000 and I don't know 2021, right? And it'll find don't know 2021, right? And it'll find don't know 2021, right? And it'll find this issue, and there was a real bug this issue, and there was a real bug this issue, and there was a real bug there that hasn't been fixed, and it'll there that hasn't been fixed, and it'll there that hasn't been fixed, and it'll do the depth analysis and bring you the do the depth analysis and bring you the do the depth analysis and bring you the fix, and of course you're in control. fix, and of course you're in control. fix, and of course you're in control. Nothing gets merged. And all issue Nothing gets merged. And all issue Nothing gets merged. And all issue comments should be checked by the by the comments should be checked by the by the comments should be checked by the by the human. human. human. And you get to work on that kind of you And you get to work on that kind of you And you get to work on that kind of you get to bank that fix, or close out the get to bank that fix, or close out the get to bank that fix, or close out the issue and say well actually we don't issue and say well actually we don't issue and say well actually we don't really care about that. The technical really care about that. The technical really care about that. The technical debt gets crunched away through this debt gets crunched away through this debt gets crunched away through this automatic process, and you're all in the automatic process, and you're all in the automatic process, and you're all in the context of GitHub and the repositories context of GitHub and the repositories context of GitHub and the repositories that you're using and working with that you're using and working with that you're using and working with today. today. today. I love that process. I've absolutely I love that process. I've absolutely I love that process. I've absolutely adored uh, being a maintainer again. I adored uh, being a maintainer again. I adored uh, being a maintainer again. I feel like I've come alive again as a feel like I've come alive again as a feel like I've come alive again as a maintainer on about six or seven maintainer on about six or seven maintainer on about six or seven different repos. We've got people uh, different repos. We've got people uh, different repos. We've got people uh, I work with, I'm collaborating with I I work with, I'm collaborating with I I work with, I'm collaborating with I find I'm collaborating better with the find I'm collaborating better with the find I'm collaborating better with the humans in the repository. And this I humans in the repository. And this I humans in the repository. And this I mean, you've got to be aligned. The mean, you've got to be aligned. The mean, you've got to be aligned. The maintainers absolutely have to be kind maintainers absolutely have to be kind maintainers absolutely have to be kind of talking to each other about like the of talking to each other about like the of talking to each other about like the worst thing you can do as a maintainer worst thing you can do as a maintainer worst thing you can do as a maintainer probably is just like probably is just like probably is just like just bring it in uh, and um, just bring it in uh, and um, just bring it in uh, and um, against the wishes of the other main against the wishes of the other main against the wishes of the other main active maintainers in the repository.
-
active maintainers in the repository. active maintainers in the repository. So, you've got to have good discussions. So, you've got to have good discussions. So, you've got to have good discussions. But I'm finding it it raises the level But I'm finding it it raises the level But I'm finding it it raises the level of collaboration to be much more about of collaboration to be much more about of collaboration to be much more about guidance and specification guidance and specification guidance and specification and about direction and uh, so it's a and about direction and uh, so it's a and about direction and uh, so it's a little bit little bit little bit the focus absolutely shifts more to the the focus absolutely shifts more to the the focus absolutely shifts more to the issues and less to the kind of pull issues and less to the kind of pull issues and less to the kind of pull requests. The pull requests of course requests. The pull requests of course requests. The pull requests of course you got to review them closely, but you you got to review them closely, but you you got to review them closely, but you know, the collaboration between the know, the collaboration between the know, the collaboration between the maintainers can be much more uh, around maintainers can be much more uh, around maintainers can be much more uh, around the actual what do we actually want for the actual what do we actually want for the actual what do we actually want for this repository? Where are we going? this repository? Where are we going? this repository? Where are we going? Where do you find most of your time then Where do you find most of your time then Where do you find most of your time then from a just a purely UI perspective? Cuz from a just a purely UI perspective? Cuz from a just a purely UI perspective? Cuz I get overwhelmed at GitHub. Do you go I get overwhelmed at GitHub. Do you go I get overwhelmed at GitHub. Do you go into each repository? Are you spending into each repository? Are you spending into each repository? Are you spending times in your GitHub inbox? Is that What times in your GitHub inbox? Is that What times in your GitHub inbox? Is that What is your interaction model with this? is your interaction model with this? is your interaction model with this? >> Yeah, >> Yeah, >> Yeah, I think this is a wide open thing going I think this is a wide open thing going I think this is a wide open thing going going forward. So, my interaction at the going forward. So, my interaction at the going forward. So, my interaction at the moment is to run along to the different moment is to run along to the different moment is to run along to the different repositories that I've installed this repositories that I've installed this repositories that I've installed this repo assistant gen tech workflow into repo assistant gen tech workflow into repo assistant gen tech workflow into and I and I and I you know, I wake up in the morning often you know, I wake up in the morning often you know, I wake up in the morning often on my phone and I kind of say, "Ah, on my phone and I kind of say, "Ah, on my phone and I kind of say, "Ah, what's done for me this morning?" And I what's done for me this morning?" And I what's done for me this morning?" And I you know, this morning I woke up I went you know, this morning I woke up I went you know, this morning I woke up I went along to F sharp control async seek.
-
along to F sharp control async seek. along to F sharp control async seek. Yesterday I had dropped in an issue into Yesterday I had dropped in an issue into Yesterday I had dropped in an issue into the repository saying, "Hey, since the repository saying, "Hey, since the repository saying, "Hey, since you've cleared out all the technical you've cleared out all the technical you've cleared out all the technical debt, how about working on the debt, how about working on the debt, how about working on the performance?" Yeah, there's an issue performance?" Yeah, there's an issue performance?" Yeah, there's an issue there. This during the night the repo there. This during the night the repo there. This during the night the repo assistant woke up and it it kicked in assistant woke up and it it kicked in assistant woke up and it it kicked in and did some work. It's optimized one, and did some work. It's optimized one, and did some work. It's optimized one, two, three, five, three different kind two, three, five, three different kind two, three, five, three different kind of functions in the in the in the of functions in the in the in the of functions in the in the in the library. And I and I I you know, my library. And I and I I you know, my library. And I and I I you know, my morning is like it's a beautiful morning morning is like it's a beautiful morning morning is like it's a beautiful morning cuz you delivered these performance cuz you delivered these performance cuz you delivered these performance optimizations to software you care optimizations to software you care optimizations to software you care about. about. about. Uh it's like you're waking up to Uh it's like you're waking up to Uh it's like you're waking up to goodness. You're waking up to sunshine. goodness. You're waking up to sunshine. goodness. You're waking up to sunshine. It's like It's like It's like >> [laughter] >> [laughter] >> [laughter] >> you know, >> you know, >> you know, it's it's like I've got no no problems it's it's like I've got no no problems it's it's like I've got no no problems in these repos anymore. It's like just in these repos anymore. It's like just in these repos anymore. It's like just pure pure happiness going uh it's it's pure pure happiness going uh it's it's pure pure happiness going uh it's it's progressing along and uh progressing along and uh progressing along and uh I absolutely love that feeling and it's I absolutely love that feeling and it's I absolutely love that feeling and it's a taste of I think of what's ahead and a taste of I think of what's ahead and a taste of I think of what's ahead and it's a taste of how automated AI can it's a taste of how automated AI can it's a taste of how automated AI can really counter some of these narratives really counter some of these narratives really counter some of these narratives that are around about like slop or other that are around about like slop or other that are around about like slop or other AI code generation because it can clean AI code generation because it can clean AI code generation because it can clean up this stuff. It can make your software up this stuff. It can make your software up this stuff. It can make your software better. It you set it in the right better. It you set it in the right better. It you set it in the right direction and you're going to get the direction and you're going to get the direction and you're going to get the kind of improvements you want uh coming kind of improvements you want uh coming kind of improvements you want uh coming out.
-
out. out. So, So, So, I I I I I can feel your your excitement I I I I I can feel your your excitement I I I I I can feel your your excitement and your enthusiasm and your energy and and your enthusiasm and your energy and and your enthusiasm and your energy and I appreciate like that. That's really I appreciate like that. That's really I appreciate like that. That's really cool. I wonder cool. I wonder cool. I wonder how you just really have to try it, how you just really have to try it, how you just really have to try it, don't you? You know what I mean? Like don't you? You know what I mean? Like don't you? You know what I mean? Like you have to just see it, experience it, you have to just see it, experience it, you have to just see it, experience it, and see a good PR or see a good issue and see a good PR or see a good issue and see a good PR or see a good issue that shows up and and to to feel like, that shows up and and to to feel like, that shows up and and to to feel like, "Yeah, okay, this is for me." "Yeah, okay, this is for me." "Yeah, okay, this is for me." Yeah, and there are limits to this. I Yeah, and there are limits to this. I Yeah, and there are limits to this. I look, there are look, I I've I've I look, there are look, I I've I've I look, there are look, I I've I've I there's some early versions of this that there's some early versions of this that there's some early versions of this that we installed into repositories where, we installed into repositories where, we installed into repositories where, for example, we didn't talk to enough of for example, we didn't talk to enough of for example, we didn't talk to enough of the maintainers. the maintainers. the maintainers. And some of the maintainers just said, And some of the maintainers just said, And some of the maintainers just said, "Look, this is this this this one is "Look, this is this this this one is "Look, this is this this this one is wrong." And you know, this is not a good wrong." And you know, this is not a good wrong." And you know, this is not a good not a good suggestion. It was So, so uh not a good suggestion. It was So, so uh not a good suggestion. It was So, so uh I've got a blog uh post these on .net I've got a blog uh post these on .net I've got a blog uh post these on .net and you can take a look through some of and you can take a look through some of and you can take a look through some of the blogs uh the blogs uh the blogs uh and one of them is about automatic and one of them is about automatic and one of them is about automatic performance engineering. And I've given performance engineering. And I've given performance engineering. And I've given an example of a small library that an example of a small library that an example of a small library that benefits from automatic uh benefits from automatic uh benefits from automatic uh semi-automatic semi-automatic semi-automatic performance engineering.
-
performance engineering. performance engineering. Now, if you're in a C++ library where Now, if you're in a C++ library where Now, if you're in a C++ library where that's taking 30 minutes to build and it that's taking 30 minutes to build and it that's taking 30 minutes to build and it hasn't got good microbenchmarking set hasn't got good microbenchmarking set hasn't got good microbenchmarking set up, Mhm. then automatic performance up, Mhm. then automatic performance up, Mhm. then automatic performance engineering is probably not going to engineering is probably not going to engineering is probably not going to work out well, okay? Because to do work out well, okay? Because to do work out well, okay? Because to do automatic performance engineering, automatic performance engineering, automatic performance engineering, you've got to be able to take really you've got to be able to take really you've got to be able to take really good microbenchmarks. Like we know from good microbenchmarks. Like we know from good microbenchmarks. Like we know from my benchmark.net or whatever else you're my benchmark.net or whatever else you're my benchmark.net or whatever else you're kind of kind of using. And so kind of kind of using. And so kind of kind of using. And so how [clears throat] well the engineering how [clears throat] well the engineering how [clears throat] well the engineering in Like we all know about like agents.md in Like we all know about like agents.md in Like we all know about like agents.md and kind of setting up the the the and kind of setting up the the the and kind of setting up the the the agents for success in the repository. If agents for success in the repository. If agents for success in the repository. If you're going to get it to do more you're going to get it to do more you're going to get it to do more advanced software engineering tasks like advanced software engineering tasks like advanced software engineering tasks like performance engineering or test performance engineering or test performance engineering or test improvement, then you really need to be improvement, then you really need to be improvement, then you really need to be setting it up setting the setting it up setting the setting it up setting the automated coding agents up for success. automated coding agents up for success. automated coding agents up for success. And that means And that means And that means it means investing in making it means investing in making it means investing in making benchmarking sweet in the in the in the benchmarking sweet in the in the in the benchmarking sweet in the in the in the repository. It might mean you doing sort repository. It might mean you doing sort repository. It might mean you doing sort of manual verification that whatever of manual verification that whatever of manual verification that whatever kind of performance was taken in say a kind of performance was taken in say a kind of performance was taken in say a GitHub GitHub GitHub Actions VM actually checks out for real Actions VM actually checks out for real Actions VM actually checks out for real on a real uh on a real uh on a real uh on a on actual real machine. So So on a on actual real machine. So So on a on actual real machine. So So there's serious engineering that needs there's serious engineering that needs there's serious engineering that needs to be done that needs some of the best to be done that needs some of the best to be done that needs some of the best talent in the industry to be guiding and talent in the industry to be guiding and talent in the industry to be guiding and shaping that what the how these shaping that what the how these shaping that what the how these agentic experiences explore sort of agentic experiences explore sort of agentic experiences explore sort of problem and design space.
-
problem and design space. problem and design space. So that really comes down to the the the So that really comes down to the the the So that really comes down to the the the harness. Like I keep trying to tell harness. Like I keep trying to tell harness. Like I keep trying to tell people that if the ambiguity loop has no people that if the ambiguity loop has no people that if the ambiguity loop has no bounds, it will make stuff up. It will bounds, it will make stuff up. It will bounds, it will make stuff up. It will make slop. And the slop the people are make slop. And the slop the people are make slop. And the slop the people are experiencing is you left it up to experiencing is you left it up to experiencing is you left it up to interpretation. interpretation. interpretation. And tests and performance or And tests and performance or And tests and performance or microbenchmarks reduces or removes that microbenchmarks reduces or removes that microbenchmarks reduces or removes that that up for interpretation moment. that up for interpretation moment. that up for interpretation moment. Yeah, I look you There's I love this Yeah, I look you There's I love this Yeah, I look you There's I love this question of like how ambiguous should a question of like how ambiguous should a question of like how ambiguous should a workflow be and where should the kind of workflow be and where should the kind of workflow be and where should the kind of guard railing be and where the way you guard railing be and where the way you guard railing be and where the way you know the framework I usually use is know the framework I usually use is know the framework I usually use is you've got goals and you've got you've got goals and you've got you've got goals and you've got constraints. You've got guardrails. And constraints. You've got guardrails. And constraints. You've got guardrails. And uh that's the um uh that's the um uh that's the um that that that that that's a magic kind that that that that that's a magic kind that that that that that's a magic kind of combination. And I I I also just like of combination. And I I I also just like of combination. And I I I also just like thinking through the kind of thinking through the kind of thinking through the kind of setting up the engineer for success. If setting up the engineer for success. If setting up the engineer for success. If you think of the agent as a junior um you think of the agent as a junior um you think of the agent as a junior um sort of sort of sort of a a a a a a sort of sort of sort of junior sort performance engineer.
-
junior sort performance engineer. junior sort performance engineer. Probably much much worse than that. They Probably much much worse than that. They Probably much much worse than that. They they they they you know, they they they they they you know, they they they they they you know, they they they're not necessarily good at doing they're not necessarily good at doing they're not necessarily good at doing performance engineering. And they might performance engineering. And they might performance engineering. And they might blag in their results. That is some of blag in their results. That is some of blag in their results. That is some of these agents do have a these agents do have a these agents do have a tendency to not be tendency to not be tendency to not be to not reveal fully whether they for to not reveal fully whether they for to not reveal fully whether they for instance ran fully proper before and instance ran fully proper before and instance ran fully proper before and after tests on the performance of a after tests on the performance of a after tests on the performance of a piece of software. piece of software. piece of software. Uh and uh so you've got to be setting Uh and uh so you've got to be setting Uh and uh so you've got to be setting the agents up for success and you've got the agents up for success and you've got the agents up for success and you've got to be setting the human reviewer up for to be setting the human reviewer up for to be setting the human reviewer up for success to correctly review success to correctly review success to correctly review the proposal that the AI is coming up the proposal that the AI is coming up the proposal that the AI is coming up with. with. with. Yeah, I think that that that can't be Yeah, I think that that that can't be Yeah, I think that that that can't be overstated. And I think people don't overstated. And I think people don't overstated. And I think people don't people haven't yet seen the big picture people haven't yet seen the big picture people haven't yet seen the big picture and we as a community as a software and we as a community as a software and we as a community as a software development community are still trying development community are still trying development community are still trying to see this. to see this. to see this. And I like the idea of like setting the And I like the idea of like setting the And I like the idea of like setting the junior engineer up for success, but I junior engineer up for success, but I junior engineer up for success, but I also call out that in a world where also call out that in a world where also call out that in a world where you're the expert, the AI is the junior you're the expert, the AI is the junior you're the expert, the AI is the junior engineer with unlimited energy. So give engineer with unlimited energy. So give engineer with unlimited energy. So give it the toil. it the toil. it the toil. And in a world where you're maybe not And in a world where you're maybe not And in a world where you're maybe not the expert, and like I don't know Rust, the expert, and like I don't know Rust, the expert, and like I don't know Rust, I think of the AI as being more senior I think of the AI as being more senior I think of the AI as being more senior to me until my code smell ability meets to me until my code smell ability meets to me until my code smell ability meets it or exceeds it, and then I start it or exceeds it, and then I start it or exceeds it, and then I start treating it again as a junior intern treating it again as a junior intern treating it again as a junior intern with a lot of energy. Yeah, I mean I with a lot of energy. Yeah, I mean I with a lot of energy. Yeah, I mean I don't don't don't I I I was very cautious there about I I I was very cautious there about I I I was very cautious there about using the like the anthropomorphization.
-
using the like the anthropomorphization. using the like the anthropomorphization. I don't like anthropomorphization. I I I don't like anthropomorphization. I I I don't like anthropomorphization. I I and I kind of take want to take that and I kind of take want to take that and I kind of take want to take that back because one of the things I I back because one of the things I I back because one of the things I I really love in this space is is to think really love in this space is is to think really love in this space is is to think about the education aspect that I think about the education aspect that I think about the education aspect that I think we can shape the education of uh people we can shape the education of uh people we can shape the education of uh people coming through the universities and coming through the universities and coming through the universities and coming through their kind of uh learning coming through their kind of uh learning coming through their kind of uh learning first part of the learning process. first part of the learning process. first part of the learning process. So, they can do this well. I absolutely So, they can do this well. I absolutely So, they can do this well. I absolutely believe that they're able to believe that they're able to believe that they're able to to to to be great engineers in this kind to to to be great engineers in this kind to to to be great engineers in this kind of automated software engineering or of automated software engineering or of automated software engineering or agentically assisted software agentically assisted software agentically assisted software engineering. I believe every university engineering. I believe every university engineering. I believe every university should be having a course on agentically should be having a course on agentically should be having a course on agentically uh assisted or AI assisted uh software uh assisted or AI assisted uh software uh assisted or AI assisted uh software development and kind of exploring the development and kind of exploring the development and kind of exploring the space of these kind of ramifications of space of these kind of ramifications of space of these kind of ramifications of what's going to happen what's happening. what's going to happen what's happening. what's going to happen what's happening. And that that's So, I all the all the And that that's So, I all the all the And that that's So, I all the all the juniors juniors juniors you know, on this call go go learn how you know, on this call go go learn how you know, on this call go go learn how to use that learn what makes software to use that learn what makes software to use that learn what makes software great. Learn what makes software good. great. Learn what makes software good. great. Learn what makes software good. Learn what how what good performance Learn what how what good performance Learn what how what good performance engineering means. Learn what good test engineering means. Learn what good test engineering means. Learn what good test engineering means.
-
engineering means. engineering means. Uh learn that learn how to make great Uh learn that learn how to make great Uh learn that learn how to make great tools under the hood cuz these days tools under the hood cuz these days tools under the hood cuz these days tools are easier than ever to come and tools are easier than ever to come and tools are easier than ever to come and make. And uh there's there's just so make. And uh there's there's just so make. And uh there's there's just so much potential to make uh to be great at much potential to make uh to be great at much potential to make uh to be great at the craft of uh guiding uh guiding the craft of uh guiding uh guiding the craft of uh guiding uh guiding software to the right uh to the place it software to the right uh to the place it software to the right uh to the place it needs to be. Like we're all sculptors needs to be. Like we're all sculptors needs to be. Like we're all sculptors these days or something like that. And these days or something like that. And these days or something like that. And the analogies everyone uses different the analogies everyone uses different the analogies everyone uses different analogies. You know, you can kind of analogies. You know, you can kind of analogies. You know, you can kind of sculpt the kind of software you got to sculpt the kind of software you got to sculpt the kind of software you got to start start on that journey today. Yeah. start start on that journey today. Yeah. start start on that journey today. Yeah. Yeah, I really think that there's a Yeah, I really think that there's a Yeah, I really think that there's a moment here and I feel like as kids are moment here and I feel like as kids are moment here and I feel like as kids are coming out or young people are coming coming out or young people are coming coming out or young people are coming out of school having learned computer out of school having learned computer out of school having learned computer science, the software engineering, the science, the software engineering, the science, the software engineering, the actual practice of shipping quality actual practice of shipping quality actual practice of shipping quality software software software is the skill that needs to be. And good is the skill that needs to be. And good is the skill that needs to be. And good decisions uh good judgment and the toil decisions uh good judgment and the toil decisions uh good judgment and the toil that will go away will kind of fade into that will go away will kind of fade into that will go away will kind of fade into the background, but being able to make the background, but being able to make the background, but being able to make and ship quality software matters more and ship quality software matters more and ship quality software matters more than ever before. So, you're working on than ever before. So, you're working on than ever before. So, you're working on GitHub agentic workflows. GitHub agentic workflows. GitHub agentic workflows. You've got automated markdown workflows, You've got automated markdown workflows, You've got automated markdown workflows, AI powered decision making, integrates AI powered decision making, integrates AI powered decision making, integrates tightly with GitHub. You can use tightly with GitHub. You can use tightly with GitHub. You can use whatever AI engine you want, Copilot, whatever AI engine you want, Copilot, whatever AI engine you want, Copilot, Claude, Codex, whatever makes you happy.
-
Claude, Codex, whatever makes you happy. Claude, Codex, whatever makes you happy. And you can learn more about continuous And you can learn more about continuous And you can learn more about continuous AI. Just go ahead and check out GitHub AI. Just go ahead and check out GitHub AI. Just go ahead and check out GitHub Agentic Workflows. Go out and Google Agentic Workflows. Go out and Google Agentic Workflows. Go out and Google with Bing or your favorite search with Bing or your favorite search with Bing or your favorite search engine, and you'll learn all about how engine, and you'll learn all about how engine, and you'll learn all about how repository automation is making Don Syme repository automation is making Don Syme repository automation is making Don Syme love being an open source maintainer love being an open source maintainer love being an open source maintainer again. again. again. Thanks so much for chatting with me Thanks so much for chatting with me Thanks so much for chatting with me today. today. today. Scott, it's been a pleasure. And uh look Scott, it's been a pleasure. And uh look Scott, it's been a pleasure. And uh look look forward to coming back and we'll look forward to coming back and we'll look forward to coming back and we'll talk through all these all these kind of talk through all these all these kind of talk through all these all these kind of things. All right. This has been another things. All right. This has been another things. All right. This has been another episode of Hanselminutes, and we'll see episode of Hanselminutes, and we'll see episode of Hanselminutes, and we'll see you again next week.
Summary
The main theme is how AI is transforming software engineering, acting as either a junior or senior collaborator depending on the human's expertise. Key references include "agentic workflows," F#, and the analogy of wizards with power tools. The practical takeaway is to embrace these changes in software development as exciting and rapidly evolving, rather than mourning the loss of older crafts.