Speaker 1: How'd you like to listen to dot net rocks with
Speaker 1: no ads?
Speaker 2: Easy?
Speaker 1: Become a patron For just five dollars a month you
Speaker 1: get access to a private RSS feed where all the
Speaker 1: shows have no ads. Twenty dollars a month will get
Speaker 1: you that and a special dot net Rocks patron mug.
Speaker 1: Sign up now at Patreon dot dot NetRocks dot com.
Speaker 1: Hey guess what it's dot net rocks insane heat.
Speaker 2: Version in.
Speaker 1: A little warm where you are, brother, one hundred and
Speaker 1: two degrees fahrenheit today.
Speaker 2: That's no funny. That's dangerous being you'll be careful, it
Speaker 2: is dangerous. Thank God for air conditioning. Yeah, no kidding, Yeah.
Speaker 1: Told, I've told neighbors who don't have it feel free
Speaker 1: to come over and cool off.
Speaker 2: Yeah no, that's smart. Just get an hour cooling down? Right? Yeah?
Speaker 1: Hey, Mark Miller's here. We're gonna have a lot of uh,
Speaker 1: some really good stuff that he's got to talk to
Speaker 1: us about. But you know, we're all we all seem
Speaker 1: to be on the agentic Ai bandwagon, or at least
Speaker 1: topic today because that's where my better know a framework
Speaker 1: is so oh.
Speaker 2: Roll the crazy music. All right, man, tell me all
Speaker 2: about your agentic AI coding experience.
Speaker 1: Yeah, all right, all right, Well, I haven't done a
Speaker 1: Blazer train in a while, and I figured this was
Speaker 1: the best time. So, you know, Build, we saw all
Speaker 1: sorts of stuff about the new features for developers that
Speaker 1: Microsoft is bringing out, right.
Speaker 2: Hunter seth w O'Brian, you know, was don't stop.
Speaker 1: And even the keynote kind of wet our appetite a
Speaker 1: little bit. But you know, our friends talk to us
Speaker 1: in terms of developers, which is great, and we all agree.
Speaker 1: I think that AI is a very real and helpful
Speaker 1: and safe thing for developers to use. You know, we
Speaker 1: have to be careful about safety, but for the most part,
Speaker 1: the tools that I've been using have been pretty good.
Speaker 1: So I came home from Build and I immediately started
Speaker 1: messing around with this stuff. And I started working with
Speaker 1: the agent mode in visual Studio and that didn't work
Speaker 1: out so well, only because it kind of got hung
Speaker 1: up on files, couldn't access files that it had written
Speaker 1: and all that kind of stuff, But it did it
Speaker 1: was able to generate some good stuff anyway. Then I'm
Speaker 1: at devsum in Stockholm. I met the rooftop bar the
Speaker 1: hotel and Hunter is there and I'm just kind of
Speaker 1: picking his brain and he's like, oh no, you got
Speaker 1: to use the copilot GitHub copilot coding agent in GitHub, right,
Speaker 1: that's what it's all. AB I just did this demo.
Speaker 2: That's where the action is. Yeah. Right.
Speaker 1: So I was like, Okay, here we go. I went
Speaker 1: home and I started playing with that, and I agree
Speaker 1: with Scott this is this is really really good. And
Speaker 1: so the whole idea is that the co pilot is
Speaker 1: a partner on your in the repos that you give
Speaker 1: it access to, and you can assign issues to it
Speaker 1: and it will go out and figure out those issues,
Speaker 1: and you can view the logs and view the session
Speaker 1: and see what it's doing. And then first it creates
Speaker 1: a sort of a draft poll request, and then it
Speaker 1: creates commits, and you can view those commits you know,
Speaker 1: in visual studio, and test them out, and if it
Speaker 1: didn't do something you liked, you can just add a
Speaker 1: comment and it'll go off and fix it. So I
Speaker 1: and then of course when you're done, you can merge
Speaker 1: the poll request. So I thought this was just absolutely brilliant.
Speaker 1: So I did a Blazer train about it. Episode one
Speaker 1: oh seven, get ub Copilot Coding Agent and we'll have
Speaker 1: a link to that. And also the first thing I
Speaker 1: did was I documented my experiences using it to create
Speaker 1: a whole Blazer server forms over data application using the
Speaker 1: north Wind database. Cool, and I use SQL like because
Speaker 1: you know, not everybody uses Windows. Yeah, and the video
Speaker 1: the one I did in the video kind of I
Speaker 1: kind of got stuck in the code at the end,
Speaker 1: but if you look at the results that i'd have
Speaker 1: in the actual repo that we'll have a link to. Also,
Speaker 1: it was much better and didn't take you know, many
Speaker 1: iterations to fix the bugs and stuff.
Speaker 2: But I do like that those fighting through moments, so
Speaker 2: I think are really useful teaching moments too. It's like
Speaker 2: when the software is not behaving the way you want,
Speaker 2: how do you push on it to get to get results?
Speaker 1: Absolutely, and along the way, I learned about the system
Speaker 1: prompt MD file that you can put in your repo
Speaker 1: where you tell it sort of all the general stuff
Speaker 1: and how you want things to be organized in the
Speaker 1: things that the coding standards and.
Speaker 2: All that stuff.
Speaker 1: Yeah, overall was really good. And so there's a third part.
Speaker 1: I've created a four hour webinar called a Survey of
Speaker 1: AI Tools for Dot net Development, which goes beyond just
Speaker 1: the Microsoft tools but looks at the best of breed
Speaker 1: and AI tools across all platforms and services. So that's
Speaker 1: like a survey of these things. It'll include GitHub and
Speaker 1: all of that stuff. And guess what, it's even going
Speaker 1: to include code Rush, which I learned about today from Mark.
Speaker 1: He's going to be talking about that. But that link
Speaker 1: is in the show notes as well, and also linked
Speaker 1: in the repo, which is in the show notes. So
Speaker 1: that's all the stuff that I have. Richard, who's talking.
Speaker 2: To us today, grabbed a common top of Show nineteen
Speaker 2: fifty four, the one we did I had to build
Speaker 2: with w O'Brien where we talked about the play right MCP,
Speaker 2: which definitely one of those moments where like, oh man,
Speaker 2: we can get up to stuff with this. Yeah. Yeah,
Speaker 2: and John MacArthur had this great comedy said, listening to
Speaker 2: this and talk about copilot, I love using it for
Speaker 2: my get comments. It does such a good job of them,
Speaker 2: and it's forcing me to get better. Oh no, upon
Speaker 2: help me, help me no better by checking in more often,
Speaker 2: because I don't want lots of unrelated changes grouped together.
Speaker 2: See yeah, Because the tool actually remembers everything you did
Speaker 2: and spits it all back to you, so you have
Speaker 2: to be more organized and unlike when my handwritten comment
Speaker 2: was fixed stuff and things. Yeah, yeah, seriously, the generated
Speaker 2: comments are brilliant. Yeah, I gotta say, John, like, there's
Speaker 2: more that can be done with these tools, Like I
Speaker 2: appreciate your sentiment and certainly I like those parts too.
Speaker 2: But keep going down the path and we're just getting started. Yeah,
Speaker 2: it's early days, isn't it. Yeah, and John, thank you
Speaker 2: so much. Your comment and copy of music code By
Speaker 2: is on its way to you. And if you'd like
Speaker 2: a copy of music codbe I write a comment on
Speaker 2: the website at dot netrock com or on the facebooks
Speaker 2: we publish every show there. Any of you comment there
Speaker 2: and I read it on the show, we'll send you
Speaker 2: copy music. O.
Speaker 1: I just sold another flak collection of music to code By.
Speaker 1: We're up to twenty two tracks now and you can
Speaker 1: get them an MP three flak and wave music to
Speaker 1: code by dot net. All right, before we bring on
Speaker 1: mister Miller, let's talk about nineteen fifty eight, because that's
Speaker 1: our show number.
Speaker 2: Ninety fifty eight, A very good year in some respects.
Speaker 2: I mean, you know.
Speaker 1: Oh yeah, So where do you want to go with it? Well,
Speaker 1: let's talk about international developments. The European Economic Community was formed,
Speaker 1: which is precursor to the EU. Precursor to EU. The
Speaker 1: West Indies Federation was formed, the Soviet American Exchange Agreement.
Speaker 1: Can you imagine? Yeah, Brazil won the World Cup, defeated
Speaker 1: Sweden five to two to win their first World Cup title.
Speaker 1: The first undersea voyage to the North Pole by the
Speaker 1: USS Nautilus. Hey, I know about that submarine.
Speaker 2: Yeah, that's that's your part of the world.
Speaker 3: Yeah.
Speaker 1: It was built in my hometown. Yeah, and I'm sure
Speaker 1: my father probably had something to do with that because
Speaker 1: he was in planning, probably in the United States.
Speaker 2: NASA was established on July twenty nine. Yeah, the International
Speaker 2: Geophysical Year. Yeah, established with NASA IGY, the Bunch of Satellites.
Speaker 2: IGY is also the first track on Donald Fagan's excellent
Speaker 2: The Nightfly, which is all about fifties fantasies about the future.
Speaker 2: Sure Explorer one was launched on January thirty first detected
Speaker 2: the Van Allen BELTZ. You know all these things. It's
Speaker 2: so awesome. I do Federal Aviation Act. If you want
Speaker 2: to just forget school. Just go have a cup of
Speaker 2: tea or glass whiskey with Richard. You don't need school.
Speaker 3: Or if you've been in school and you want to
Speaker 3: feel like you've never been in school, do the.
Speaker 2: Same, right, listen to a geek out.
Speaker 1: The Federal Aviation Act was passed, which was later the
Speaker 1: FAA Federal Aviation Agency, giving it authority overall aspect of
Speaker 1: aviation in the US. Elvis was inducted into the Army
Speaker 1: on March twenty fourth, the B forty seven nuclear weapon
Speaker 1: loss incident. A B forty seven bomber accidentally dropped an
Speaker 1: atomic bomb on Mars Bluff, South Carolina.
Speaker 2: Oops, well that's the one that went off, but we
Speaker 2: had no nuclear core. That same year they lost one
Speaker 2: out of a B forty seven and have never found it,
Speaker 2: Oh my god, somewhere.
Speaker 1: Some other things, the first radio broadcast from Space, President
Speaker 1: Dwight D. Eisenhowers and a Christmas message from Space.
Speaker 2: Yeah, first communication satellite too.
Speaker 1: Yeah. Anything that you want to add in terms of
Speaker 1: computers or technology.
Speaker 2: Well, let me do one non computer one, and I'll
Speaker 2: do a couple computer ones. On computer one And this
Speaker 2: is from my friend Mark is the first regular surve
Speaker 2: transatlantic service of the Boeing seven oh seven. They really
Speaker 2: beginning of the jet age. That the prototype flew in
Speaker 2: the end of fifty seven, but it was already in
Speaker 2: service in fifty eight eight pan am in the beginning
Speaker 2: of what they called the jet age. It wasn't the
Speaker 2: first jet air liner. There was ones before that, but
Speaker 2: at the seven o seven, and that form factor still
Speaker 2: flies today, that four engine rig that's the KC one
Speaker 2: thirty five. Like that plane's never going away, it seems,
Speaker 2: which is a good one.
Speaker 1: It was also mentioned in the song jet air Liner
Speaker 1: by Steve.
Speaker 2: Miller band down Rights. They get on the seven o seven,
Speaker 2: get on the seven oh seven. There's lots of variance
Speaker 2: of it. Two. You know, the original form of that
Speaker 2: our craft was quite narrow, is a two x two seating,
Speaker 2: and then they widened it to a two to one
Speaker 2: two seating, and then they widened it again into a
Speaker 2: three three seating. Programming wise, the remarkable extraordinary found. John
Speaker 2: McCarthy at MIT developed the LISP programming language in two
Speaker 2: fifty eight. It wouldn't get deployed for another couple of
Speaker 2: years because we barely had computers at that point. LISPS
Speaker 2: short for the list processing. But yeah, he had defined
Speaker 2: the language already. At that point, you barely had a
Speaker 2: computer functional Interestingly.
Speaker 1: The functional language that was used a lot in was
Speaker 1: it used in AI at the time or what they
Speaker 1: called AI.
Speaker 2: Yeah, the term AI had already been coined at that point.
Speaker 2: McCarthy or Minsky coined the term.
Speaker 1: But I don't know what they meant by that back then.
Speaker 1: Was it machine learning kind of thing or.
Speaker 2: No, it was just that was more decision tree modeling.
Speaker 2: What what Minsky got financing from the military for was
Speaker 2: to do resource allocation and management for the US military,
Speaker 2: which by the way, worked perfectly.
Speaker 1: So expert systems that kind of thing.
Speaker 2: No, just resource management, okay, like decision treat mesia management.
Speaker 2: How do you how do you move a battalion? What
Speaker 2: do you got to move first? Like what those pieces
Speaker 2: look like based on the aircraft you got to the ships?
Speaker 2: You're using that kind of thing. Okay, One more computer
Speaker 2: one the RC five oh one, which was one of
Speaker 2: the very first computers only nineteen fifty eight to use
Speaker 2: transistors instead of vacuum two hm. No, discrete, it's all
Speaker 2: discrete electronics at this point, right, we haven't got ICs yet,
Speaker 2: but we are beginning down the transistorization of computing. Wow.
Speaker 1: You know, it just occurs to me when we have
Speaker 1: a show number that's the same year as the year
Speaker 1: we recorded in the world's gonna explode.
Speaker 2: I know, I'm with you. It's I think we're doing
Speaker 2: two thousand and two is going to be a problem.
Speaker 1: Yeah, all right, Well, let's introduce Mark Miller. He's been
Speaker 1: on the show many times. He is fondly remembered in
Speaker 1: dot Netrock's history, of course through Monday's hilarious bits on there,
Speaker 1: and also just in early dot net Rocks. He's been
Speaker 1: an innovator in many, many ways. So he's a multi
Speaker 1: year c Sharp Microsoft MVP and a leading expert on
Speaker 1: user interface design. He's a chief architect of the ide
Speaker 1: Tools division at Developer Express, and he streams live c
Speaker 1: Sharp coding and design on Twitch, dot tv, slash code rushed.
Speaker 1: Mark has been creating tools for software developers for over
Speaker 1: four decades. He was also the He was the guest
Speaker 1: on the first show that I was co host on
Speaker 1: show one on one.
Speaker 3: Wow.
Speaker 2: Really that's cool.
Speaker 3: Yeah, I did not know that. I feel like I
Speaker 3: must have. I feel like after the show, Carl MSSA
Speaker 3: got a call for Richard. Richard's like, there's no way
Speaker 3: I'm doing this never again.
Speaker 2: I think I think I got off that show and
Speaker 2: said only fifty shows. Yeah, that's right. I mean, how
Speaker 2: hard could it be? Fifty show fifty and.
Speaker 1: Here we are the longest running dot net podcast ever
Speaker 1: and probably one of the longest running podcasts ever that's
Speaker 1: still going.
Speaker 2: Yeah. Probably, Yeah, it's hard to know.
Speaker 3: That's interesting. Yeah, that's right.
Speaker 1: We are the og podcast for better or worse.
Speaker 3: Congratulations, guys, I forget Why don't we switch it up.
Speaker 3: I'll interview both of you and we'll talk about that.
Speaker 2: Hey, all right, I don't think dang.
Speaker 1: Okay, So this morning, Mark Martin my time. You gave
Speaker 1: me a demo of your new code Rush tools that
Speaker 1: use AI and speech recognition, and yeah, wow, I was
Speaker 1: just blown away. So maybe you can tell everybody about
Speaker 1: this give us the elevator pitch.
Speaker 3: Okay, sure. It's essentially it's kind of like as if
Speaker 3: AI was kind of like a suit of armor for
Speaker 3: you as a developer. It is unlike the agent mode
Speaker 3: of Copilot, where it kind of goes off in space.
Speaker 3: You kind of give it some boundaries and say here,
Speaker 3: this is the issue I want you to go after.
Speaker 3: The tools that we have in code Rush are really
Speaker 3: much more much closer to you as a developer. It's
Speaker 3: kind of like, you know, leveling up in a game
Speaker 3: or something along those lines. Your power and speed increase.
Speaker 3: The essence of the tooling is making changes to code,
Speaker 3: creating new code, and also doing essentially semantic searches through code.
Speaker 3: Those are the areas so that you can you can
Speaker 3: use the power of AI to essentially offload a lot
Speaker 3: of cognitive effort, right, and so anytime that I've got
Speaker 3: something that is tedious would otherwise be tedious to do,
Speaker 3: or or if i have something that maybe I'm not
Speaker 3: sure how to do right, both of these are great,
Speaker 3: great places for AI to come step in and and
Speaker 3: and the what makes them feel like a suit of
Speaker 3: armor is, I think is the is the ease of
Speaker 3: use the user interface. Right. By by going after this
Speaker 3: in my usual approach right to doing creating any kind
Speaker 3: of tooling, you know, looking for any kind of frictional force, right,
Speaker 3: any kind of bump and trying to smooth out every bump,
Speaker 3: we've gotten to this place where you can essentially do
Speaker 3: what they're calling, you know, vibe coding to some degree, right,
Speaker 3: but you can do it I as I need it,
Speaker 3: right when I need it, I can say okay, you know,
Speaker 3: as an example, I think if I showed Carl this morning,
Speaker 3: I said something like, let's create a new class called
Speaker 3: customer with a first name, last name, an email address,
Speaker 3: a street address, and a birth date. And I can
Speaker 3: just do that. I don't even have to say the
Speaker 3: names of the types. I can just say here's what
Speaker 3: I want to do. And if I want to specify things,
Speaker 3: I can. I can go into more detail. But if
Speaker 3: I don't, and I often don't, and this is what
Speaker 3: really lowers the cognitive load. Right as I'm using the tooling,
Speaker 3: I say, hey can we fix this, or hey can
Speaker 3: you add the method that's missing? Right can I? And
Speaker 3: I love talking in clues to AI because it often
Speaker 3: figures it out and puts in the thing that I need,
Speaker 3: whatever it is, and then I can just go from there.
Speaker 3: I can start writing the code or doing what I
Speaker 3: need to do.
Speaker 2: You know, almost exactly one hundred shows ago eighteen fifty
Speaker 2: we were talking to you about open AI. This is
Speaker 2: in twenty twenty three, and you hinted at this whole
Speaker 2: idea of Hey, I talk about my code when I
Speaker 2: code anyway. Yeah, Like, why wouldn't I be saying it.
Speaker 2: Wouldn't it be nice if it was listening? Like this
Speaker 2: sounds like you just built what you were talking about.
Speaker 1: Yeah, this is when we were upstairs at the guard
Speaker 1: you and me Mark sitting across from each other in
Speaker 1: the attic there where we had the booths, but in
Speaker 1: twenty twenty three. But I think the I wanted to
Speaker 1: say that. The one of the first impressions that I
Speaker 1: got was how out of the way the speech thing
Speaker 1: was like, I'm always nervous that if I hit the
Speaker 1: wrong key and then it starts listening and it's going
Speaker 1: to create a bunch of garbage. But you've got it
Speaker 1: so that the right control key by default you tap
Speaker 1: it once and then you hold it down and speak right.
Speaker 1: It's not like you can just hold down control because
Speaker 1: you know what, sometimes you need it as a control key.
Speaker 1: You want to hold down control and you see or
Speaker 1: V and so I really appreciate the fact that you
Speaker 1: came up with like an action that's deliberate that you
Speaker 1: would not do otherwise. Yeah, as opposed to like, you know,
Speaker 1: the agent that just when you type a few characters,
Speaker 1: says hey, how about this in a page of grade
Speaker 1: out code?
Speaker 3: You know, yeah, no, I think we have solved a
Speaker 3: lot of problems that would otherwise be blocking forces to
Speaker 3: making this vision come true. Right, and you know the
Speaker 3: the you know what you just said about the keyboard.
Speaker 3: You know, I've been using this, this this feature has
Speaker 3: been in development. I've been using it actively for probably
Speaker 3: at least seven months. I want to say. Yeah, and
Speaker 3: so I've forgotten how kind of unique that solution is. Yeah,
Speaker 3: And it wasn't until you just mentioned that. I was like, oh, right, yeah,
Speaker 3: we've made this. There's a couple of things that happen, right,
Speaker 3: But basically we said, look, there's on programmer keyboards there's
Speaker 3: no push to talk button, right, yeah, weird. So we
Speaker 3: have to with something and we can't make it be
Speaker 3: something where you have to reach the mouse, and we
Speaker 3: can't make it for something where you have to hold
Speaker 3: down the control and yet another key. We can't. It's
Speaker 3: it's got to be effortless to get in.
Speaker 1: And so we I thought it was a brilliant solution.
Speaker 3: Well thanks, yeah, no, And and so that's that's part
Speaker 3: of what we're doing is we're making things effortless, right,
Speaker 3: And there's actually about four different kind of cross section
Speaker 3: criterias for success that I think we've done really well
Speaker 3: in that we've kind of leap frog other existing technology,
Speaker 3: and one of them is ease of use. On the
Speaker 3: ease of use side of things, it is effortless and
Speaker 3: it is also fast. Yes, right when you when you
Speaker 3: say I want to do this, and then you release
Speaker 3: the control key because you're done talking. On average, our
Speaker 3: our voice to text conversion times is less than a
Speaker 3: half a second, so within a half a second of
Speaker 3: that release, we know what you're asking for, and at
Speaker 3: that point we throw it up to open end. Right,
Speaker 3: and we also include with that a lot of context
Speaker 3: and a lot of detail that opening eye can use
Speaker 3: to figure out what you mean.
Speaker 1: Let's talk about context, okay, sure, Yeah. So one of
Speaker 1: the things I like about chat GPT and I pay
Speaker 1: for the premium version, is that it has it remembers
Speaker 1: a lot about you know, it knows that I primarily
Speaker 1: work in Blazer. It knows, so therefore when I say
Speaker 1: I got this new application and I got this file here,
Speaker 1: it knows it's a Blazer app. Nless I tell it otherwise. Yeah,
Speaker 1: so it has a history and a lot of these agents,
Speaker 1: and I know the Microsoft Copilot agent does not have
Speaker 1: this memory, and I think you said that Code Rush
Speaker 1: doesn't either. But it does understand the context of your application, right.
Speaker 3: Yeah, yes, it does, so just briefly, no history yet,
Speaker 3: it's stateless right now, right, But we're leaning in a direction.
Speaker 3: We're considering a move towards a essentially a summarized history
Speaker 3: in case you want to reference something you've done before.
Speaker 1: But that takes more tokens and costs more money and
Speaker 1: blah blah, so they have to be an option, right.
Speaker 3: Well, yeah, well that's why I'm saying summarized. In other words,
Speaker 3: brief really a brief history, but so that we can
Speaker 3: get context. So let's just I just want to say
Speaker 3: that this version that's coming out effectively, I think tomorrow
Speaker 3: from our recording date, so should already be out by
Speaker 3: the time you're there from the Code Rush. This version
Speaker 3: is what I call one point zero, but there is
Speaker 3: already a strongly visualized two point zero version of this
Speaker 3: that we are going to commence work on essentially tomorrow
Speaker 3: that is going to take things to a whole new
Speaker 3: level of what I think is you know, if you
Speaker 3: want to call it the mind blowing scale, we're going
Speaker 3: to go from this version I call this a five,
Speaker 3: and we're going to go to a ten. Yeah, you know,
Speaker 3: we're going to get to this killer level and we're
Speaker 3: going to solve this. But so briefly, the history right now,
Speaker 3: it's stateless, yeah okay, but with regards to context, the
Speaker 3: context is rich. We send, for example, a summary of
Speaker 3: what's going on with the project, what your new get
Speaker 3: packages are, that sort of thing. We send the current file,
Speaker 3: we send code behind or the designer if you're in
Speaker 3: one of those two files, right. You can also do
Speaker 3: things like say, if you mentioned the word clipboard, there's
Speaker 3: a something called triggered prompts, and it detects for that
Speaker 3: word click clipboard and then adds an additional prompt that
Speaker 3: sets out and says the contents so my clipboard are
Speaker 3: and shows what they are.
Speaker 1: And I like that because it's contextual, like a system prompt.
Speaker 1: Even in GitHub Copilot is copilot, dash instructions, dot MD,
Speaker 1: and I think you put in a dot GitHub folder
Speaker 1: if my memory serves and it's general, it gets sent
Speaker 1: with every single you know, user yeah, but I like
Speaker 1: the way that you have broken these out into contextuals
Speaker 1: based on keywords and things.
Speaker 3: Yeah, and no, we did have by the way, we
Speaker 3: worked on a feature that allowed me to like hold
Speaker 3: down the alt key and say the name of a
Speaker 3: class and then release it. But we are not documenting that.
Speaker 3: We're essentially not gonna We're not going forward with that feature.
Speaker 3: We're instead going forward with a you can talk about
Speaker 3: any class you want and we'll figure it out. That's
Speaker 3: not now, that'll be in version two. Nice, So version
Speaker 3: in version two you'll be able to effortlessly, AI will
Speaker 3: be able to infer what you mean, what you're talking about,
Speaker 3: which will impact the context that we submit to AI.
Speaker 3: So so we're going to solve all this in the
Speaker 3: two point zero I guess I shouldn't be talking about
Speaker 3: this so much, but but what we do now is
Speaker 3: a relatively rich context. So if I want to work
Speaker 3: with another file and I want to work with it
Speaker 3: in this file, like say, for example, I'm a Zambal
Speaker 3: designer and I want to create a data grid and
Speaker 3: I want to do data binding on a particular control class,
Speaker 3: I can copy that class to the clipboard and then say, hey,
Speaker 3: I want to create a data grid here, and I
Speaker 3: wanted to have instances of this customer class, and I
Speaker 3: want in the code behind for you to create fifty
Speaker 3: sample records that have realistic looking data sample data so
Speaker 3: I can try this out and work on the UI.
Speaker 3: And then that's my problem.
Speaker 1: I saw this. I saw this myself, that you did that.
Speaker 1: And I want to talk about the speed too, because
Speaker 1: in the demo that I did and blazer Train, I
Speaker 1: basically created these long prompts. I could create a one
Speaker 1: prompt to create a data manager for every model and
Speaker 1: the models folder, which there was like twelve or thirteen, right.
Speaker 1: I did it against north Wind, and I said, create
Speaker 1: a data manager, and I want creud methods for each
Speaker 1: one of these using ado dot net objects and blah
Speaker 1: blah blah. Trycatch and here's some return class types. Right, success,
Speaker 1: failure the data and then error messages. That kind of
Speaker 1: simple thing. Yeah, and you it basically took like fifteen
Speaker 1: minutes for it to do that and come back and say, yeah,
Speaker 1: here's your you know, here's the here's the change set
Speaker 1: that I'm going to check in or that that you
Speaker 1: can check out. But I like the way that code
Speaker 1: rush works because if I was going to do that,
Speaker 1: I would create the data manage your class skeleton, or
Speaker 1: I would tell it to and then I would say, hey,
Speaker 1: let's create cred methods for the album or the artist
Speaker 1: or the customer or whatever, and just inspect those because
Speaker 1: that would take like no time at all for code
Speaker 1: Rush to do. I have a feeling, yeah, and then
Speaker 1: and then from there I would tweak that and say, okay,
Speaker 1: now let's duplicate this for all of the other models. Sure,
Speaker 1: which is something I wouldn't have had a chance to
Speaker 1: do if I because I used a big prompt like that.
Speaker 2: Right. Yeah.
Speaker 3: I actually saw an example today where I was in
Speaker 3: one class that had implemented I property notified change. I
Speaker 3: asked for a new class, just saying here's the properties
Speaker 3: I need, and it because I started in a class
Speaker 3: had this style it built it followed the same style
Speaker 3: in the second class, which is interesting.
Speaker 2: Nice.
Speaker 3: But with regards to speed, we have totally solved the
Speaker 3: speed problem, like really really solved it well. If you
Speaker 3: compare the code rush aigen feature against leading competing AI tools,
Speaker 3: it can be up to ten or one hundred times
Speaker 3: faster than the other tools, depending on what you're doing
Speaker 3: and what's going on. It is and at the very
Speaker 3: least it is a little bit faster, right, it's about
Speaker 3: five percent faster if anything.
Speaker 1: Else, so five to one hundred times faster, five percent
Speaker 1: to one hundred times.
Speaker 3: No, it's like five to ten thousand percent faster. It
Speaker 3: depends on what you're looking at and what you're doing.
Speaker 3: But in some cases, and basically what the I guess
Speaker 3: the secret the big reveal there is the leading tools
Speaker 3: that are out there have not addressed performance in terms
Speaker 3: of the integration of AI results with code. They've not.
Speaker 3: It seems pretty clear to me at this point that
Speaker 3: in the current versions that I'm looking at, they that
Speaker 3: is not a concern. That's not something that looked at
Speaker 3: or not even something that they've conceived of that they
Speaker 3: could actually do faster. Wow, And that is that's you know,
Speaker 3: when I was talking about these different criteria, these different
Speaker 3: cross sections for how you evaluate something.
Speaker 1: Speed is one of those Yes, yeah.
Speaker 3: And from and why And I'll give everybody the big
Speaker 3: secret here. I'll tell you what the secret, sauce is.
Speaker 3: How we're able to do it is that we make
Speaker 3: it so that when AI comes back, it doesn't have
Speaker 3: to be flowery. It doesn't have to give me the
Speaker 3: whole class. It can just give me the changes. And
Speaker 3: because it's just giving me the changes, I'm sending back
Speaker 3: fewer tokens, which means it's cheaper, it's faster, and it
Speaker 3: has a lower environmental impact.
Speaker 1: Because your code rush, you know exactly where the code
Speaker 1: should go when it comes back. Yeah, so you do
Speaker 1: that part of it.
Speaker 3: Yeah, we do all that part.
Speaker 1: So, yeah, you do everything from visual studio.
Speaker 3: Yeah. So the agent technology that's inside code rush is
Speaker 3: essentially an expert at taking the response back from AI
Speaker 3: and immediately folding it back in the But the speed
Speaker 3: benefits are really all gained in conversation with AI. That's
Speaker 3: where they are. And nobody's doing this yet because you
Speaker 3: can tell because they're so slow.
Speaker 2: Yeah, just what are you truly changing the workflow? You're
Speaker 2: just speeding up my existing workflow.
Speaker 3: Yeah, I'm speeding up your existing workflow.
Speaker 2: Yeah, which is what you've always done.
Speaker 3: I'm changing it in a way and that now you
Speaker 3: can ask more effortlessly and get the answer and see
Speaker 3: the results more quickly. And so because that offer is
Speaker 3: now available, you lean into that offer more frequently. I
Speaker 3: think and so there's kind of this natural change where
Speaker 3: you're like, oh, they this tool is pretty cool. Let
Speaker 3: me try this. I'm going to slash, you know, try
Speaker 3: to slash away at this problem.
Speaker 2: Right, But this also seems like not an all in
Speaker 2: like do everything through Agentic that you're still doing your
Speaker 2: own coding. There some hints from these tools.
Speaker 3: Yes, yeah, it's very much in that space.
Speaker 2: Yeah.
Speaker 3: Like, often I'm like just writing code normally, and then
Speaker 3: i might be in a place where I'm like, okay, wait,
Speaker 3: I don't know how to do this. This involves some
Speaker 3: new framework or new new thing I've never touched before,
Speaker 3: and I just ask, right, and I just get it
Speaker 3: and I take a look at it. And often I'm
Speaker 3: delighted because I'm learning at the same time when I
Speaker 3: see it come in. Sometimes I ask for something that's
Speaker 3: like a tedious thing, and I'm delighted because I see
Speaker 3: a new way of doing it that I didn't know before,
Speaker 3: for example, which is also kind of a cool learning experience.
Speaker 2: Yeah. Yeah, but I also could see, like with the
Speaker 2: Agenic thing, there's sort of scut work coding that you
Speaker 2: could do, but it's easier just to hand it to
Speaker 2: the tool. Let it generate.
Speaker 1: Yeah, hey, this sounds like a good place to take
Speaker 1: a break. So we'll be right back after these very
Speaker 1: important messages. And as a reminder, if you don't want
Speaker 1: to hear these messages, you can opt for an ad
Speaker 1: free feed by becoming a patron. Got a patreon, dot
Speaker 1: dot nerocks dot com. We'll be right back. You know,
Speaker 1: dot net six has officially reached the end of support,
Speaker 1: and now is the time to upgrade. Dot Net eight
Speaker 1: is well supported on aws. Learn more at aws dot
Speaker 1: Amazon dot com, slash dot net. All right, we're back.
Speaker 1: It's dot net rocks. I'm Carl Franklin. That's Richard Campbell, hey,
Speaker 1: and that's Mark Mellers Mela, Mark Miller. All right, all right,
Speaker 1: so I have another question. Is you support what project
Speaker 1: types now and what project types will you be supporting
Speaker 1: in the future.
Speaker 3: Okay, so that's a great question. It's our In terms
Speaker 3: of project types, it's basically, if you can hold onto
Speaker 3: c sharp, we support that project type. So we support
Speaker 3: c sharp, and we support right now is examal and
Speaker 3: so all the various flavors of that. Right so that
Speaker 3: if you're working or just WPF or whatever way you
Speaker 3: can work in that conver that that combination. If you're
Speaker 3: working in other UI frameworks that are not supported, but
Speaker 3: you're still working in c sharp, we've got to cover
Speaker 3: on the c sharp.
Speaker 1: Side of it, right, But for now, you wouldn't be
Speaker 1: able to say, hey, build me a form in Blazer
Speaker 1: that calls into these methods.
Speaker 3: Right, No, we cannot do that. Now. Now we're we
Speaker 3: are close again, and the two version of this, the
Speaker 3: two version, a couple of things are coming into A
Speaker 3: one is Blazer support will be coming great. And a
Speaker 3: second thing that we have there's a current limitation is
Speaker 3: the only way we can create new files right now
Speaker 3: is by creating a new class.
Speaker 2: Okay.
Speaker 3: So in other words, there's no way for us to
Speaker 3: have a conversation with AI where a AI comes back
Speaker 3: and says, here's a new dot Razor file and here's
Speaker 3: a new Dot Sammle file that doesn't that's currently not happening.
Speaker 3: It's not hard to get there. But we wanted to ship,
Speaker 3: and so we're shipping what we have now. Okay makes sense?
Speaker 1: Yeah, I wrote an agent myself in WPF that used
Speaker 1: the open AI and I got the response back and
Speaker 1: parsed out all the comments. So that I just got
Speaker 1: the code and then I could tell it to you know,
Speaker 1: write code files. And it does, but I have to
Speaker 1: use I basically inject into the thing that does that,
Speaker 1: compile it to Roslin and inject in system io and
Speaker 1: things like that, so it can actually write files. But yeah,
Speaker 1: it takes the result that comes back, compiles it with
Speaker 1: Roslin after you inspect it, of course, and that can
Speaker 1: also create files and things. Yeah, but it was a
Speaker 1: fun exercise, but it's nothing compared to what the actual
Speaker 1: real tools do.
Speaker 2: Yeah.
Speaker 3: So when we're talking about that, right, the inspection, right,
Speaker 3: and this idea of user interface, right, one of the
Speaker 3: things that happens. I think in a lot of places,
Speaker 3: a lot of tooling will give you that inspection phase
Speaker 3: in it beforehand in another window. And our approach instead
Speaker 3: is let's make the code changes, inject them everywhere, but
Speaker 3: give you a really high quality tool for navigating among
Speaker 3: all those changes, navigating through all those changes. And I
Speaker 3: think that the latter approach is certainly better for.
Speaker 1: This this feeling.
Speaker 3: Of I'm going to I'm going to go after this,
Speaker 3: I'm speaking with intensing what I want, so why not
Speaker 3: just give it to you faster by putting it right
Speaker 3: there in the code. Right, If you think about it,
Speaker 3: if I have to go to another window and I'm
Speaker 3: looking at code, sometimes I'm looking at code in that
Speaker 3: other window and talking about other tools. I'm looking at code.
Speaker 3: That is where a small change is among a giant
Speaker 3: reproduction of all the code I had, right, and I
Speaker 3: have to scroll up and down, visually scan it, then
Speaker 3: copy it, maybe copy a feel and go paste it in.
Speaker 3: Maybe it's in sections and I have to go copy
Speaker 3: one and paste it in, copy another, paste it in.
Speaker 3: Or maybe there's a button I can click and it
Speaker 3: puts it in. But still I got to click and
Speaker 3: wait and then go to the other one, click and
Speaker 3: wait and do that. And there's this whole thing where
Speaker 3: you're not in the editor, right. And and what I'm
Speaker 3: trying to do here is we're you know, with all
Speaker 3: of the tooling that we're trying to, you know, create
Speaker 3: is make it so that look, we are not leaving
Speaker 3: the editor, right the editors where we stay. The editor
Speaker 3: is our world. That's the world we you know, we
Speaker 3: slash and build in you know, we create, and we
Speaker 3: go after the tasks and the challenges there in the editor.
Speaker 3: So there's just no way, we're leaving that space. And
Speaker 3: as a result, it's more effortless, the cognitive load is lower,
Speaker 3: and as and the other things.
Speaker 1: You have this.
Speaker 3: Oh, I just I wanted something that was tedious and
Speaker 3: I and now I have it. Well, I'm ready to
Speaker 3: you know, I'm still refreshed. I'm ready to keep going.
Speaker 2: Yeah right, yeah.
Speaker 1: So one of the problems that I have with the
Speaker 1: open AI for code and even the co pilot, the
Speaker 1: getthub copilot coding agent, is that it's nondeterministic. So I
Speaker 1: give if I gave it the same prompt twice the
Speaker 1: second time, I may come back with you know, I
Speaker 1: had this problem with it creating a data manager. It
Speaker 1: decided to break that out into three partial classes, which
Speaker 1: wouldn't be bad except that one of two of the
Speaker 1: partial classes had the same method in it, and you know,
Speaker 1: I had to specifically tell it, don't use partial classes,
Speaker 1: put in everything in one class, and don't have any
Speaker 1: duplicate methods. I had to tell it that.
Speaker 3: Yeah, yeah, you know, yeah, yeah, I was just gonna say, well,
Speaker 3: when you first said it's non deterministic, I'm like, welcome
Speaker 3: to AI. And then as you were talking, I was thinking, well,
Speaker 3: you can kind of control it, corral it in a bit, right,
Speaker 3: you could do that. I actually find that one of
Speaker 3: the things that's useful is if I see like this
Speaker 3: kind of variance and it goes against my style, I
Speaker 3: kind of put in like these what we call the
Speaker 3: system kind of system proplems add ons to the prompt, right, right,
Speaker 3: so that no matter what it'll say, hey, I always
Speaker 3: like to use the latest fluent assertions or something like
Speaker 3: that in my test case.
Speaker 2: Yes, yes, right, I guess what I'm saying is.
Speaker 3: I just those are those are ways that you can
Speaker 3: kind of get to there's you know, it's it's still
Speaker 3: not deterministic, but you're getting closer, right, You're getting.
Speaker 1: Yeah, getting closer. Yeah, you're tweaking it. I found that
Speaker 1: the coding agent like to downgrade to from dot net
Speaker 1: nine to dot net eight constantly.
Speaker 2: Yes, yes, I've seen that before too.
Speaker 1: It's in my system prompt and it's in my user prompt,
Speaker 1: and then it still doesn't and I say, do not
Speaker 1: downgrade you know, oh okay, oh yeah, yeah.
Speaker 3: So this is really interesting. So one of the things
Speaker 3: I've discovered when you're working with working with code that's
Speaker 3: being generated off of sources that have changed over time. Right,
Speaker 3: classic example is end unit test cases. Right. They used
Speaker 3: to be able to say a cert dot is true,
Speaker 3: and now they essentially broke that. And now you've got
Speaker 3: to say, now the code you often wanted to be
Speaker 3: a cert dot that. Right, So if you have essentially
Speaker 3: breaking changes or code, that is the way you do
Speaker 3: it has changed over time. And AI is saying, well,
Speaker 3: I'm scanning everything for the answer, right, then you're gonna
Speaker 3: you're gonna get this kind of variance more often. And
Speaker 3: the the more either edge case it is, in other words,
Speaker 3: the fewer examples there are, or the more that they've
Speaker 3: broken it over time, right, the more this variance occurs. Right,
Speaker 3: And you really, you really, you really start to need
Speaker 3: to corral things in with these very explicit pieces. But
Speaker 3: what's interesting is that, like one of the things that
Speaker 3: we had to do to build this right, Essentially, one
Speaker 3: of the things that our agent does is our agent
Speaker 3: allows for variance to come back from AI and it
Speaker 3: gets it back in the right place. So so we've
Speaker 3: got like a ton of code that and test cases
Speaker 3: that are all based around this idea of defense against hallucinations. Right, sure,
Speaker 3: and so when a hallucination comes like it's we as
Speaker 3: soon as we spot it, it's like gold to us,
Speaker 3: right yeah, we're like you grab it and we have.
Speaker 3: One of the things that's really cool about our implementation
Speaker 3: is that for every interaction you do, you do there's
Speaker 3: a log file that's created.
Speaker 2: Yes, I saw these amazing.
Speaker 3: So a couple of things that are beneficial about this
Speaker 3: one is that log file is beneficial if you're ever
Speaker 3: going to exploit the the ind nification against copyright which
Speaker 3: is offered by AI tooling right writ shout GBT has
Speaker 3: something along the lines.
Speaker 1: Because you have a log for the prompt, you have
Speaker 1: a log for the return, yes, and then you have
Speaker 1: other logs, but they're individual logs yes.
Speaker 3: And therefore, so for each request you make, there are
Speaker 3: essentially four logs that are generated and and that gives
Speaker 3: you a fleet verifiable audit trail and audit auditible trail
Speaker 3: in terms of what how I have used ai UH
Speaker 3: in this application and how I've integrated the One of
Speaker 3: those four files that we create has a dot test extension,
Speaker 3: and that dot test extension is a test case that
Speaker 3: if you had problems or something didn't work the way
Speaker 3: you were expecting you contact support as it Support might
Speaker 3: ask for the test case. You could send it, and
Speaker 3: that test case would allow us to reproduce that scenario.
Speaker 3: And that's how we've grabbed onto these hallucinations so so
Speaker 3: fast and quickly. Right when we when we see a problem,
Speaker 3: it's gold because we grab that test case and we
Speaker 3: go put it in and then we start looking at it.
Speaker 3: How do we you know, what's what? We look at it?
Speaker 3: We analyze what are the chances that hallucination happens again? Right?
Speaker 3: How do we what defensive code can we add? And
Speaker 3: what's interesting is we have a very specific spec that
Speaker 3: we deliver open A but we have a very wide
Speaker 3: tolerance for what open AI can come back with. Right.
Speaker 3: What we tolerate is would be in normal scenarios would
Speaker 3: because I think a lot of people would almost consider
Speaker 3: that's ridiculous in terms of how much variance or or
Speaker 3: you know from the spec you're allowing for, right, you know,
Speaker 3: but we were basically allowing for open eye to respond
Speaker 3: back with things that are almost completely wrong and then
Speaker 3: we fix them.
Speaker 1: So there is a temperature setting right when you when
Speaker 1: you issue an API command.
Speaker 3: Yes, we're not touching that or playing with that at all.
Speaker 2: You're using the default. So what is the default?
Speaker 1: Like a very low temperature, so low tolerance for hallucinations,
Speaker 1: like zero.
Speaker 3: Yeah, I understanding is that I don't know if it's
Speaker 3: zero or not, but I'm understanding it's pretty low.
Speaker 2: It's pretty low.
Speaker 3: Yeah, yeah, yeah, and it might be even lower when
Speaker 3: you're doing code related requests.
Speaker 2: I imagine it should be. I'm also thinking about what
Speaker 2: Carl talked about with the system MD, like shouldn't have
Speaker 2: be this be stuff that's basically a part of every
Speaker 2: prompt every time, like resist hallucination, make sure it's accurate.
Speaker 2: I keep reading about folks doing agenda GAI, where it's like,
Speaker 2: make sure you do every step. You know, you cannot
Speaker 2: proceed to the next thing without showing proof of this.
Speaker 2: Building more testing into each step so that it actually
Speaker 2: shows that the test passed.
Speaker 1: What I think I hear Mark saying is that we're
Speaker 1: foregoing most of that in lieu of taking the stuff
Speaker 1: that comes back from it and using our own smarts
Speaker 1: to discern what is real and what's not.
Speaker 3: Yeah. And also we're doing things a step at a time,
Speaker 3: and each step is directed as a developer directed action right,
Speaker 3: So the developer might say I need some test cases.
Speaker 3: And then the developer might say, okay, I want to
Speaker 3: All these test cases have got hard coded numbers inside
Speaker 3: of them, and I want to change that to be
Speaker 3: parameters to the test case and use the test case attribute.
Speaker 3: So convert all these test cases to me the more flexible,
Speaker 3: do that for me. And so that's the second step
Speaker 3: or whatever. And so the developers are doing these steps
Speaker 3: one at a time in our model, and so the
Speaker 3: developer essentially approves after each one. Right now. One of
Speaker 3: the piece is the things you mentioned there that I
Speaker 3: really like that we do not have yet, but I
Speaker 3: think some form of this is likely to come in
Speaker 3: the two point zero and that is the ability to
Speaker 3: validate or verify by looking at, for example, compiler errors
Speaker 3: after a build like before and after a build. Right,
Speaker 3: compiler always gets to say before and after a change,
Speaker 3: I mean not a build. Yeah, So I think that's interesting.
Speaker 3: That's a that's a really interesting piece. Giving giving that,
Speaker 3: including that as part of context, and make it triggerable.
Speaker 3: So if I use the word error, or I say
Speaker 3: the word fix, can you fix this something along those lines,
Speaker 3: it will say, well, what's going on.
Speaker 1: In that list of triggered prompts that you showed me
Speaker 1: where you have like clipboard and then a prompt that
Speaker 1: has is there one? Can you set just a general
Speaker 1: system prompt in there that goes with every single request?
Speaker 3: Yes, each one of those prompts has a regular expression
Speaker 3: that triggers it, and the regular expression essentially searching that text,
Speaker 3: that speech to text translation that came back.
Speaker 1: So you get just to a wild card everything.
Speaker 3: Yeah, you dude, dot star for the for the regular
Speaker 3: expression to match, and it'll match everything. But even with that,
Speaker 3: you can specify an additional code rush context, which could
Speaker 3: say something like that, make this happen only in see
Speaker 3: sharp files. Yes, we'll make this happen only when i'm uh,
Speaker 3: when there's a selection, or only when I'm debugging. Right,
Speaker 3: So you can set different contexts, rich control over that.
Speaker 2: I love that. I love both, and that all.
Speaker 3: Happens automatically, so you don't need to say any of
Speaker 3: those things. Right.
Speaker 2: I like both.
Speaker 1: I like having a general system prompt, and I also
Speaker 1: like having a context based triggered prompt. Yeah yeah, yeah,
Speaker 1: that's very very smart. Wow, I don't know where to go?
Speaker 1: Where else where else can we go besides Austin here.
Speaker 1: I mean, I'm blown away, right. You know, there is
Speaker 1: one thing that became a parent when we were talking
Speaker 1: about this, is that the way that I did it
Speaker 1: in my Blazer train thing was to create a big prompt,
Speaker 1: a big giant prompt, right, and then you know, like
Speaker 1: creating a data manager for example, that's got you know,
Speaker 1: fifty sixty methods. You know, we got cred methods for
Speaker 1: idio dot net for each of these models, let's say,
Speaker 1: and it takes you know, fifteen minutes, and then I
Speaker 1: can check it out and one at a time tweak things.
Speaker 2: Right.
Speaker 1: Well, that's a different way to approach. And if it
Speaker 1: doesn't work out, you can just blow the issue away
Speaker 1: and start again, right, Yeah, close the issue. But that's
Speaker 1: a different approach than what you're doing. What you're doing is,
Speaker 1: like you said, very close to the code, right, it's
Speaker 1: in the code. You're probably not doing big things like that.
Speaker 1: You might say, you know, do some data binding over
Speaker 1: this particular model or something like that in WPF and
Speaker 1: later in Blazer, but you would probably do them one
Speaker 1: at a time and in a more controlled way. It's
Speaker 1: kind of what I'm thinking. But it's two different ways
Speaker 1: to approach you.
Speaker 3: Well, well, I do like I I kind of approach
Speaker 3: by groups. So like for data binding, for example, I
Speaker 3: would say, well, like, I want to I want you
Speaker 3: I've got a class on the clipboard. I want to
Speaker 3: do data binding.
Speaker 1: All.
Speaker 3: I want you to find all the controls on the
Speaker 3: form already and bind them to the appropriate properties in
Speaker 3: this class. So I'll do that. Or I'm like say, hey,
Speaker 3: I want you to take all the buttons on this
Speaker 3: form that don't have a style, and I want you
Speaker 3: to add a new style to that, and I want
Speaker 3: you to set the default font for that new style
Speaker 3: to be twenty four. So I will kind of group
Speaker 3: things together.
Speaker 2: And I'll digestible pieces, yes, and.
Speaker 3: I'll do those all at once check the results. Sometimes
Speaker 3: it's a run to check those results and stepping through
Speaker 3: the code maybe, and sometimes it's visually scanning the code
Speaker 3: and seeing what's going on.
Speaker 1: And so what happens if it does something that you
Speaker 1: don't like?
Speaker 3: I mean, well, you've got so that's a great question.
Speaker 3: I love that if you ask, because this is this
Speaker 3: is actually.
Speaker 4: Another Hey have we met? This is my freaking job, man,
Speaker 4: This is I don't know that you should have a
Speaker 4: podcast or something. This guy's good.
Speaker 3: So so yeah, this is a This is actually great
Speaker 3: because again this is a great point of differentiation. If
Speaker 3: you look at other tooling, other tooling makes changes in
Speaker 3: multiple places and requires multiple undos right to do that,
Speaker 3: whereas the code Rush aigen does everything, wraps everything up
Speaker 3: in a single undue unit, so you can undo, right,
Speaker 3: go back, or go forward again. And when you go forward,
Speaker 3: that navigator I talked about that really high level you know,
Speaker 3: ability to look around, to go from changed to change,
Speaker 3: and to see the differences. That comes back up on
Speaker 3: a redo. So if you undoing then redo, you can
Speaker 3: get that navigator back up and scan the differences inside
Speaker 3: if you need.
Speaker 2: To do that. Yeah, that's cool, so so.
Speaker 3: And it's fast, right. The main way time is waiting
Speaker 3: for AI to give you that composition that responds back.
Speaker 3: That's your main once you do that, for code Rush
Speaker 3: to make many changes through many files is generally less
Speaker 3: than a second. It doesn't, it doesn't take that long.
Speaker 2: So I'm also thinking in terms of how much experience
Speaker 2: you need as a software developer to keep able to
Speaker 2: use these tools successfully.
Speaker 3: Well, you cannot, I think you cannot be a brand
Speaker 3: new developer.
Speaker 2: Yeah, I agree, Right, you can't, like you don't know
Speaker 2: when the tools misbehaving.
Speaker 3: Well, you could, you can get I haven't seen scenarios
Speaker 3: where you ask for something and there's just not a
Speaker 3: lot of content out there in terms of what you're
Speaker 3: asking for, and so what you get is something that
Speaker 3: maybe doesn't work, or maybe it's on a you know,
Speaker 3: on a framework that's been changing over time, So you
Speaker 3: get old code that doesn't work or something like that.
Speaker 3: And if you don't know anything about that, you don't
Speaker 3: know how to solve it. You're stuck.
Speaker 1: Here's a great example, and I brought this up in
Speaker 1: a previous show. Mark you'll like this. Yeah, tell the
Speaker 1: AI to create a collection class that is thread safe. Now,
Speaker 1: if you didn't know, there's already a thread safe collection
Speaker 1: in dot net, right, it's going off and it's not
Speaker 1: going to know that, and it's going off and creating right. Right,
Speaker 1: you didn't say, hey, is there a thread safe collection
Speaker 1: in dot net? You just said, create me a thread
Speaker 1: safe collection object, right, a junior divisse.
Speaker 3: It's going to do what you were saying.
Speaker 2: Yeah, it's going to do.
Speaker 1: Exactly what you say. And now you're committed to that
Speaker 1: thing and you use that everywhere and oops, there's a
Speaker 1: problem with it, right because it's not debugged and tested
Speaker 1: and all that or whatever.
Speaker 3: Yeah, yeah, I think that I think you have to
Speaker 3: be you know, I think you have to be just
Speaker 3: kind of if you're going to if the code you're
Speaker 3: going to generate and the things you're going to build
Speaker 3: are are kind of, you know, within the norm whatever
Speaker 3: that is of development in other words, the things of
Speaker 3: which we have a lot of content that AI has studied,
Speaker 3: then I think that your user level needs to be
Speaker 3: maybe below you know, intermediah. You can be. You don't
Speaker 3: have to, you can be somewhere between beginner and intermedia
Speaker 3: and you can benefit And there are some ways where
Speaker 3: you can benefit really hugely from this as a beginner,
Speaker 3: when you say I want a new class that does this,
Speaker 3: this and this, and then you've got it and you're done.
Speaker 3: There's it's so much easier. And and right now we're
Speaker 3: only supporting c sharp, but when we start supporting other languages,
Speaker 3: the ability to now code in another language becomes transferable
Speaker 3: because I'm still using the exact same spoken English right
Speaker 3: to interact with it.
Speaker 1: But getting back to my getting back to my thing,
Speaker 1: my example of the thread safe collection. Yes, you probably is.
Speaker 1: It's a good idea, even for more advanced developers to
Speaker 1: first have a consultation with it about what the best
Speaker 1: way to go ahead implementing such a feature would be.
Speaker 3: Right, yeah, no, I agree. And that's where this this
Speaker 3: feature is not really a consultation feature. Yeah, you can
Speaker 3: ask it questions and it'll come back then and the
Speaker 3: navigator and give you the answer. But it's not interactive.
Speaker 1: But at chat GPT would be good for that, right.
Speaker 3: Yes, I will switch over to chat GPT for that
Speaker 3: kind of a style of dialogue.
Speaker 2: For that kind of consultation.
Speaker 3: Yeah, yes, yeah, I'll do that in chat GPT. I
Speaker 3: use Copilot for other things as well. Copilot's great, great
Speaker 3: at like hey, take a look at this error or
Speaker 3: something along those lines. Sometimes Copilot's great for just these
Speaker 3: kinds of questions. Because it's with code rush, you can
Speaker 3: actually talk to copilot using voice. Yeah so, and I
Speaker 3: didn't tell you this this morning, but if you hold
Speaker 3: down the left control key, just hold it down and
Speaker 3: start your your prompt with hey co pilot, oh, and
Speaker 3: then ask the question. It will open up the copilot
Speaker 3: window fill in the prompt with your question and all
Speaker 3: you have to do is just you know, hit enter,
Speaker 3: okay and send it up.
Speaker 2: Wow.
Speaker 1: So I think we're in agreement in that we're and
Speaker 1: I brought this up in our talk with Scott Hunter
Speaker 1: and also offline with Hunter, and.
Speaker 2: That the.
Speaker 1: As a developer, there's just as much value on your
Speaker 1: creativity and imagination now as there is on your ability
Speaker 1: to write code and the things that you remember how
Speaker 1: to do, maybe even more like you have to be
Speaker 1: able to imagine things and in order to create them.
Speaker 1: Whereas you know, for the last fifty years of my career,
Speaker 1: it was always like, oh, I need to do this, Well,
Speaker 1: how do I do that? Oh, st break it down
Speaker 1: into steps, go research those steps, figure out how to
Speaker 1: write the code. And now it's like, you.
Speaker 3: Know, and no one to consult with on that. By
Speaker 3: the way, you're right.
Speaker 2: No one to consult with.
Speaker 1: Yeah, and now it's big picture think all right, so
Speaker 1: start with chat, GPT or whatever, and you know, consult
Speaker 1: on the architecture. What are the ways that I can
Speaker 1: go about doing this and open up your imagination? Like
Speaker 1: you you might as well just try it because you
Speaker 1: can always blow it away.
Speaker 2: I almost wondering if you just need an architect. Now,
Speaker 2: that's just the architect can use the tools to get
Speaker 2: a lot of the code written.
Speaker 3: Yeah, it's it's you know, for for this journey. One
Speaker 3: of the steps along this journey was I realized we
Speaker 3: needed a great way to show differences inside the code, right,
Speaker 3: And I checked out what tooling that we had already
Speaker 3: and and we didn't. We didn't have what we needed
Speaker 3: essentially that was already built in. So I started that process,
Speaker 3: and I and I think I started a discussion with
Speaker 3: job GPT and and and to just kind of understand
Speaker 3: how the technology works, and ultimately I ended up with
Speaker 3: an engine that does essentially the same thing. But there's
Speaker 3: two variations of the engine. One variation works with lines
Speaker 3: and the other works with characters. And so we use
Speaker 3: the line engine at the high level to see what's changed,
Speaker 3: and then if a line has differences, then we feed
Speaker 3: that to the character engine right to see what is changed, right.
Speaker 1: What's the actual difference in this line to that line?
Speaker 3: Right? And I also use the tool to help build
Speaker 3: the visualizer as well. And the visualizer is super interesting
Speaker 3: because there's no built in difference visualizer that's out there,
Speaker 3: and so we were like okay, or I was like, okay,
Speaker 3: let's try I think the rich textbox or whatever I
Speaker 3: think is called WPF, and I start to do that
Speaker 3: and look at that, and we start to make progress,
Speaker 3: and then we realize that, okay, well it's great, except
Speaker 3: for the ends of the lines don't look great because
Speaker 3: the lines end at different you know, you know is
Speaker 3: and the background highlighting goes only to that end of
Speaker 3: the line.
Speaker 1: Are you talking about the get difference visualizer.
Speaker 3: I'm talking about the one that's built into Aigen's navigator,
Speaker 3: the Coat Rush navigator, the one that we built from scratch.
Speaker 2: Yeah, the one that's in Visual Studio is pretty good.
Speaker 1: I mean, if you make a change to a file
Speaker 1: and then you double click it, you see the original
Speaker 1: on the right and the new one on the left.
Speaker 3: And yeah, okay, so anyway, there is uh that's I'm
Speaker 3: not saying. I have I have some problems with it.
Speaker 3: I don't like a number of things of it, and
Speaker 3: so I implemented something different. Yeah, it's basically what I
Speaker 3: ended up doing. And at any rate, we got the
Speaker 3: highlighting right, but the ends of the lines wasn't working.
Speaker 3: And I'm like, well, how do I get this to work?
Speaker 3: And that was the question essentially asked, and the answer is,
Speaker 3: you can't do it with the rich textbox, but you
Speaker 3: can do these adorners where you throw them in there.
Speaker 3: So then I'm like, okay, wait, I can put adorners
Speaker 3: out on the ends here and line them up. Yeah, okay,
Speaker 3: let's do that. But now I scroll, they don't scroll.
Speaker 3: And then so now my new question is how do
Speaker 3: I get the adorers to scroll? Let's make them scroll
Speaker 3: and work. And this whole thing is this inertive process
Speaker 3: where I am doing this a piece at a time,
Speaker 3: but finally get it so that it's essentially solid. Right
Speaker 3: that you've got this, I'm using the rich text I'm
Speaker 3: not doing my own custom control, using existing rich text
Speaker 3: box and getting and making it behave as if it's
Speaker 3: a difference view. And that's done largely through the help
Speaker 3: of AI assisting and making changes interactively as I go through.
Speaker 2: It's very cool, yeah, so cool.
Speaker 3: Yeah, But you know your question about what level do
Speaker 3: you have to be? I think at least intermediate in general,
Speaker 3: and then the further off the beaten path you go,
Speaker 3: the more of an expert you kind of need to
Speaker 3: be or the more of a debugger, you know, kind
Speaker 3: of let's figure this out kind of person that you
Speaker 3: need to be.
Speaker 1: You need to know what questions to ask, right, That's
Speaker 1: that's what it all comes down to.
Speaker 3: Yeah, yeah, what to ask for You're right, Yeah, you do.
Speaker 3: Even if you're working with something you've done. You know,
Speaker 3: if you're working with a new framework, right, if I'm
Speaker 3: working with a control set, what do they call their
Speaker 3: grid control or what do they call their their toolbar control? Right? Right,
Speaker 3: If you know what that's called, then you can ask the.
Speaker 1: Question and hopeful you'll do research first. That's the whole idea.
Speaker 1: The less the less familiar you are with what you're
Speaker 1: going to end up with, the more research you have
Speaker 1: to do up front, however, to know how to ask
Speaker 1: the questions.
Speaker 3: However, Carl, I'm today, I'm in this code and I'm
Speaker 3: like saying, hey, I'm seeing that a whole bunch of
Speaker 3: these methods are passing in the it's an on notified
Speaker 3: property change. Yeah, thing I hear, And I'm like, and
Speaker 3: my prompt goes like this, I say, hey, I'm noticing
Speaker 3: all of these calls to property change are passing in
Speaker 3: the name of the property, But isn't there some way
Speaker 3: to check from the call stack what that method calling
Speaker 3: method is? And that's all I said. And so in
Speaker 3: other words, you could know kind of genly about it
Speaker 3: and speak about it. And then it goes in and
Speaker 3: it ends. It puts in I think member calling name attribute.
Speaker 2: Member calling name yeah, on.
Speaker 3: The parameter definition, and it does that, and it's great,
Speaker 3: and I'm like, oh, but wait, you left all of
Speaker 3: the calls with their arguments. They don't need those arguments anymore,
Speaker 3: that's right, yeah, And then it fixes that and so
Speaker 3: that instead of me doing any of those things manually,
Speaker 3: it's just you know, speak, wait a few seconds, and
Speaker 3: then speak and wait a few seconds. And that's a
Speaker 3: different flaw.
Speaker 1: You also have to have some pain, right like if
Speaker 1: I've had pain in the past with making base classes
Speaker 1: for models, for example, which I do not do anymore
Speaker 1: because you get into all sorts of problems with that,
Speaker 1: right then you know, you could easily take that in
Speaker 1: a direction where it would say, well, let me just
Speaker 1: make a base class for you that does all the
Speaker 1: notified property change and blah blah blah, and now you
Speaker 1: can just create models that are in that space class
Speaker 1: and right, Yeah, you know what I mean, And you
Speaker 1: wouldn't have the experience to say, no, I really don't want.
Speaker 3: To do that, right right, No, I get that, I
Speaker 3: get it. Yeah, But you know, you can make things
Speaker 3: work a lot of different ways. I can have the
Speaker 3: same set of test cases and they can all pass
Speaker 3: regardless of which frameworks. And sometimes I don't understand the
Speaker 3: problem with the framework until it's time to go to
Speaker 3: version two, right, right, right, and then I realized, Okay,
Speaker 3: that was a mistake. I got to really really make
Speaker 3: this architecture great, right, And that is like that's something
Speaker 3: that you don't see with what we've done here, but
Speaker 3: we have actually made this architecture really good. We stopped
Speaker 3: we were moving towards bringing Blazer support in this one
Speaker 3: oh release, and we stopped it to focus on the architecture.
Speaker 3: And as a result, I'm like way more confident about
Speaker 3: our ability to go in and support Blazer in other
Speaker 3: languages because of the changes that we made to simplify
Speaker 3: and decouple the architecture behind this.
Speaker 2: It's awesome.
Speaker 3: So feel good about that.
Speaker 2: So where can we get this?
Speaker 3: So? Okay, go to def express dot com slash code
Speaker 3: Rush and you can get you can download a copy
Speaker 3: codeer is for free. Code Rush is free. There's no
Speaker 3: charge for this. However, you're gonna have to supply an
Speaker 3: open Ai API key, an open Ai API key, and
Speaker 3: you're gonna need to supply if you want in voice,
Speaker 3: you're gonna need to supply an Azure Cognitive Services speech key.
Speaker 1: Which is free for.
Speaker 3: It's essentially you can get a free tier that gives
Speaker 3: you I think up to five dollars a month, and
Speaker 3: I use maybe three dollars a month in all my
Speaker 3: months of my daily use of the product, so you're
Speaker 3: probably not gonna pay anything for that. And Azure Speech
Speaker 3: Cognitive Services is excellent. I just I cannot, I cannot
Speaker 3: tell you how good this service is.
Speaker 2: It's really good.
Speaker 3: It's it is way more accurate than anything I've seen
Speaker 3: built on a machine running off of a machine. And
Speaker 3: it's fast. It's like generally we get times of processing
Speaker 3: times of a about from the time you stopped talking,
Speaker 3: we get a response back that's about four hundred milliseconds.
Speaker 1: That's amazing, Mark, congratulations, and I'm really blown away. And
Speaker 1: it's always good to talk to you. I always learn
Speaker 1: things and what can I say? Thanks again?
Speaker 5: Thanks, guys, all right, and we'll talk to you later
Speaker 5: on dot net Bros. Dot Net Rocks is brought to
Speaker 5: you by Franklin's Net and produced by Pop Studios, a
Speaker 5: full service audio, video and post production facilities located physically
Speaker 5: in New London, Connecticut, and of course in the cloud
Speaker 5: online at pwop dot com.
Speaker 1: Visit our website at d O T N E t
Speaker 1: R O c k S dot com, RSS feeds, downloads,
Speaker 1: mobile apps, comments, and access to the full archives going
Speaker 1: back to show number one, recorded in September two thousand
Speaker 1: and two. And make sure you check out our sponsors.
Speaker 1: They keep us in business. Now, go write some code,
Speaker 1: see you next time.
Speaker 2: You got JAD Middle Vans And then I'm