mergeconflict262 James: [00:00:00] Frank, one of my favorite things, university and actually early on in my career. And to be honest, probably even up to this day, my favorite thing. That I enjoy doing, because I learned so much from it is pair programming. You know, about pair programming, not a pair, like a pair that you eat, but like a pair as in two people or more pair program, you pay you program together. Frank: [00:00:33] Yeah, no. Given my work environment, I don't actually have too many opportunities to pair program, but I have done it, James. It is not a mystery to me. I have paired and programmed at the same time. It was all right. I did it as like a workshop. Someone was doing like a two hour workshop in the city and I did it in like Ruby or something. It was kind of fun because then my pair program or partner could, uh, teach me that Ruby. James: [00:01:02] My pair program or partner while eating a pear pickled peppers. Um, but, um, so yeah, I mean, I've, I think early on in my career, it really was something to sit down next to someone that deeply understood a code base or a concept, and didn't necessarily. Show you and code for you, but kind of walked and guided you through this process. One of the early examples I had on this is Emma university. We had a big sort of, not a big as a small university, but it is a small auditorium. And one of the things that I did with one of my friends in university was. Uh, we would sit down and we would sort of go through problem solving of our homework together while projecting our laptops on the big screen. And we're in this auditorium. So like, it was usually one or two of my friends, but we would kind of sit down and we would all sort of. Walk up to the, the big projector and point at code and discuss the code back and forth when we would walk through the problem and try to get to the solution, uh, to gather. And it wasn't more of someone like telling you how to code it was problem solving together. And that continued on in, in an early. Um, after I graduated and during university too, when I was interning a game studios, I was learning so much about shaders and, and graphics and animations. And there were concepts that I hadn't learned, or, you know, when I had my first job at Canon. I was in this huge epic code base. And it was really nice early on in my career there that I would have sort of the veteran, the senior developers, they would come and sit down for an hour or two hour and we would problem solve together. And to me, that was really delightful and you're right. Yeah. I can't really pair a program with somebody, I guess we have live, share, we can live, share program code together and like, you know, hop on a discord call or something like that. That's that's possible, I guess. Frank: [00:02:59] Yeah. Except in the indie world, it becomes that awkward thing of, well we're, we're not both being paid and working on the same team together. Like if you're on the same team and you're working on the same project, pair programming makes a lot of sense. Because it just makes things more efficient. You know, you have someone Googling while you have someone typing and you swap roles and you're, you're double checking each other. That totally makes sense. For me, it's really a question of finances, whether the company can afford to have, uh, people like that. And it's funny, all the different arguments back and forth. I never do the live thing. I think it's just because I don't feel like I, I want to take up someone else's time. I'm a little bit embarrassed to like that. James: [00:03:44] Paraprogramming your reds. It's, it's one of those things that can go really right. Or go really wrong. And I say that because. If you do pair program with somebody there's this opportunity that may emerge because I've had this happen to me, especially when I was interning at a game studio, or you may have, uh, uh, someone more senior and maybe not even more senior, maybe even at your level, but every personality is a little bit different. And I did work with, uh, with an individual. And this was just, uh, a thing with him is that he often sort of, uh, when you were discussing a problem would talk down to you. Um, you know, and, and, you know, that's not just one person, people talk down to me and, and, you know, on several occasions, but on this occasion, it was, I was so early in my career that it was, it was, it was very sort of detrimental, uh, to, to wanting to low learn and grow and work with that person where I've had other engagements. Most of the time are very good. So there is that flip side that it could go wrong in a, in a. Frank: [00:04:46] That's like the worst triggering environment for me, when someone talks down to me, that's like, I'm just either going to shut my mouth and walk out of the room or we're going to get into a shouting match because it is just, it's my Marty McFly chicken thing, you know, I just can't handle it. It really annoys me. So I get you. James: [00:05:04] Yeah. And that's one thing I've always enjoyed. From you as my friend is that there are a lot of things that, you know, as an electrical engineer and a robot maker, an IOT person, and 262 podcasts, I don't really think that there's been a time that I ever felt like you. Talk down to me or you weren't by my side or you weren't with me on this. Like I never felt less than, and that's something I really appreciated about you, you know, you as a, as a person and as you present and as you write blogs, and as you, as you talk to people and present, I've always felt this genuine sort of goodness. And, and that's sort of the person I would want to pair program with and the person that I want to be around, the person that I want to record 262 podcasts. Frank has been five years, five years of podcasts. Frank: [00:05:50] I was wondering if we were coming up on a five-year mark, is there like, is there a calendar five-year anniversary that we missed or is coming, I guess? Okay. So if we were a summertime podcast, I think we have this discussion at the beginning of every summer. James: [00:06:06] Yeah. I mean, technically two 60, so two podcasts ago would have been our official, you know, Well, I don't know if that's our five-year mark or not. Frank: [00:06:16] The numbers are a little funny. Yeah. Are James: [00:06:18] alive July 11th. Well, oh my gosh. That's the day we're recording today. Dan, July 11th. It's been officially. Oh, wow. Frank: [00:06:26] Oh my gosh. Happy. Five-year Frank. Well, it's five years James. Oh, what a coincidence. It's a good thing. We looked good thing you were thinking about it. Wow. Uh, okay. So in five years we have covered a lot of topics and thank you for the kind words. Now I need to say something kind to you because it's our anniversary. James: [00:06:48] Get to the topic, Frank. Let's get into it. I am at copilot dot. Get hub.com. Frank: [00:06:54] That's right. That's right. I want to talk about copilot James. That was a very long intro for, uh, what is going to become an AI pair programmer, I guess that's, that's our tie in that's our segue and yeah. Oh, is that like the byline? James: [00:07:11] Yeah. It's it's it literally says it's the H word. Frank it says, Y yeah. It's the H one tag because of what it says, it has the logo on the top labs get hub copilot. Then it says technical preview, and it says H one, your a I pair programmer. And then the subtext, the, the assignment each which just Pete P taxed with ghetto copilot, get suggestions for whole lines or entire functions, right inside your editor powered by open AI. Oh, been so open. Frank: [00:07:43] It's so open that you have to join a beta and sign up, James: [00:07:47] sign up right now, joining the wait list. Frank: [00:07:49] I mean, okay. So, uh, this thing was released this week ish and. It it's, it got a few rounds on Twitter, a little bit of backlash and things like that, but I wanted to talk about it because I think it is the most promising new technology I've seen for code editors since basically, and tell a sense. I think it's that big of a leap. Um, Yeah, I I'm going there and I'm starting there. Like even this released a beta version, I'm going to say right now is almost better than IntelliSense because I get a little annoyed when the IntelliSense window comes up and not the code pilot thing, but maybe we should rewind. I just want to, I just want to put my stake in the ground here. I think this thing is on me. And everyone should sign up. James: [00:08:38] So really what this is, it's sort of like IntelliSense, but not in a way. So it truly is a way to start writing a comment or a function. Uh, maybe you, you know, for example, Right. A comment that the example here is it says the comment is determined. Whether the sentiment of Texas positive use a web service, and then they write async function. This is some JavaScript is positive passes, some tax, and it returns a promise of a bullion. Copilot comes up and it recommends that you simply obviously. With about 10 lines of code call, a API that does a pose with the text that's passed in. The content type is a form URL encoded. It returns Jason, and it parses it out. If it's positive and it writes those 10 lines of code for you automatically based off the beginning of. Um, of just the function now, th this is there's two things. We have three things in the world today. We have IntelliSense in Telecode and now co-pilot alright. So IntelliSense is the thing that gives you recommendations in a list of stuff that you can do. So. This dot or you say star, you have a string and you do a dot on it. It comes up with a list of stuff and that's IntelliSense. It gives you recommendations based on the context of the object that you're performing it is that, is that a correct statement of Frank: [00:10:13] IntelliSense? I would be a little more specific and say, it's like, Big API index, where it knows all the type of information and can look things up. I don't like using the word recommend because that doesn't really recommend anything. It's just listing out the API to you. And it's up to you to get what you want out of the API. Now, the next one. Code. That's the one that's actually doing a recommendation. So it's looking at the API and looking at a bit of your context and being like, look, it's a string and you did string dot. Most likely you want the length. Everyone just wants the length of the string. So, you know, it'll figure that out. So from the API, it'll figure out a recommendation. James: [00:10:58] Got it. So in Telecode we'll give you recommended options. It will also, um, recommend code cleanups. Like if you're, if you're doing a string replace on one thing and it detects it in a bunch of other areas of your code, it'll recommend different fixes and optimizations throughout your code. And it does that throughout not only your, your, your code, but also your UI definitions of you're using XAML. So it's smart enough. So. A good example is you put down a button and then you do space and it will come up with a list of IntelliSense, but at the top we'll recommend text. And then when you go to the next one, it will recommend command or collect, or you don't have a list of top recommended things because it, the, the team there has. Has, um, for all intensive purposes done a bunch of machine learning on a bunch of open source projects and, and, and look to see what the most common things are. Or you can run in Telecode on your code base, and then you can have recommendations on how you code. So how is co pilot different than these two things? Frank: [00:11:58] Copilot doesn't even really think about the API or what libraries you have. It just kind of looks at the code and tries to figure out what is the most likely thing that you're going to want to put next. So it is in some ways, a general purpose. Uh, text completer and you brought up the initial example, and this is an example that keep using everywhere. And I don't really like it. I don't think it's the right use of copilot, but it is, um, uh, add a comment, give a semi descriptive function name. And then begin the function and then go see what the crazy things copilot thinks you could possibly want to do that function, but you see how that's not browsing the API. That's not even recommending something from the API and it's not even changing your code. It's purely here are, uh, Different things that could come next as in implementations for this function. That is the common example. And it's super cool, but okay. I want to talk about why that's not the right way to use this thing, but let me first start with it's super cool. I give it like the weirdest function names. My favorite example that I've been using is race, fear intersection, and then I pass it array and I pass it a sphere. And I'm like, what are you going to generate next? Uh, so let me take a little rewind. Um, continuous does this, um, we did a whole episode on it, some ways back in our five years of podcasting, where I did a big machine learning pass over a bunch of code, and I learned, um, how to predict what symbol would come next. And I don't even mean, uh, by symbol. I just mean like keyword, mostly. Or bracket or curly brace or something like that. That's very different from what co-pilot's doing, because it's generating the variable names and the text and the everything. And it's just kind of miraculous because it's integrating with your code base and also contributing to your code base because it can give you these intelligent implementations of something. Like, you know, I don't really remember how race fear intersection works. So it's kind of fun to see what copilot James: [00:14:12] says. Yeah. Th they have a lot of great examples on the copilot website, too. That's for example, you know, there's this JavaScript file that's importing D three, which I'm assuming is a, uh, a drawing API. So they just write, draw a scatterplot and it just generates the code and passes in data, height and width. And it knows how to do that. My other one that's actually really fun though, I think is this one example that is more of an auto complete . May reminisce with the Intel code, but what it does is it says, Hey, let's say we're creating a array of comment markers. So for example, in JavaScript, you may start with slash slash and Python, a pound sign in CSS forward slash star. So they start writing JavaScript and then the do start and, and the Python start end. Right? Co-pilot comes in and says, Hey, I can fill in a bunch more. So it does CSS, HTML, bash, post-script COBOL, ASM, Haskell. And it just fills in all of the extra for you automatically. And that to me is a really cool example of, of like, oh, like, yeah, th th it knows some stuff, but I think the even more realistic example that you probably will write all the time is something like. You know, uh, convert Fahrenheit to Celsius or average runtime in seconds is something that it, it figures out and it takes infrastructure or, you know, simple conversions or converting, uh, Jason array to something else. You know, some, some of these simple things of, of repetitious code that you're writing over and over and over again. So those are, those are a bunch of different examples of things that I can do. Just according to the website. Frank: [00:15:53] Okay. So that's a good lead into how I want to say how I find it most useful, um, that I've been using it. The best way is as a line completer. So you are writing the function. You're not letting it write the whole function. That's a little too mysterious, you know, unless it's a very trivial function, a very boiler plate one, it's actually really great at generating boiler plate. But if it's at all an interesting function, I think you should be typing this function. But what it excels at is completing the lines. And you get into this very fun mode of like, uh, you, you hit the first letter and it has a completion and you hit tab and then enter and then like, oh yeah, that was what I want to do. And then you hit tab again and then you hit enter and then I'm like, oh yeah, that is kind of what I want tab enter. And so it's like, it's like filling in the method body, but at any point you can intercept and change what it's going to do. That said also when it's executing, uh, and it generates that recommendation. It actually generates 10 recommendations and you can scroll through them with little keyboard commands and things like that. But it's funny. I don't even bother with that. Like it's usually right. And if it's wrong, it's just one line of code that I have to type in. And then when I go to the next line, it's usually right by that next line of code that's James: [00:17:13] what's sold. Yeah, that makes a lot of sense to me, which is yeah. How I use in Telecode is more of that too, which is often I call it continuous tabbing. Cause you can just can kind of just yeah. Dot tab dot, you know, it goes, go and go, go. And it'll, it'll be really, really smart, but you're saying, okay, it's actually predicting the full line of code, not just the neck. Uh, function or the next input, for example, the next word cocaine. Frank: [00:17:38] Yeah. And it'll do strings and things like that. Let me tell you about the creepiest moment I had with it. Um, I was just writing some code and it's doing everything as we're describing and I just, uh, I wanted to time something. So I wanted to get the time at the. Do some work, get the time and then display how long that took. I was being a little bit silly and I wrote like VAR start time equals. I don't remember if I use stop orchard date time now, whatever it doesn't matter. I did. Let's say daytime.now. Did some processing. And then I wrote VAR and it already had the thing to calculate the time difference as an called daytime.now and subtract the two things. So I'm like, oh gosh, it knows what I want. So I hit tab enter. And then the very next line console, right. Line processing time equals something seconds. And it was like, oh my goodness. Like it is the pair programmer, but even better, it's just. It's a robot that knows what you want. Next. James: [00:18:41] They say it's supposed to provide an editor. Contacts provides suggestions and improve suggestions overall. So it's this co-pilot service that's there. So the things that is doing today, it seems as though maybe other systems could even integrate into it in the future necessarily. Sort of seems like. Yeah. Frank: [00:18:58] And it's funny, they've done a little bit more than just code. We also did an episode when I was working with GPT and I was talking about how I was having fun generating code using GPT. And, uh, this thing is work works for like your project files. It'll recommend packages to install, you know, things like that. So, uh, I don't remember what the full spectrum of, uh, languages or contexts that supports, but it's pretty impressive for our first beta. I will say they have F sharp support. It's not as good as the C-sharp support. One downside is they're very clear about, um, the more code they have to learn from the better the completer is. And there's just because F sharp. Such a more powerful language. There's just less code of it out there. So, uh, it's a little bit of a tough conundrum for them, but I'm, it's just a matter of time, you know, to strengthen these things and support more languages and contexts, for example, XAML like all this stuff should be working wonderfully for user interfaces. It'll be James: [00:20:06] great for that. Oh, that'd be really cool too. Yeah, it says right now, like the technical preview. Does that it doesn't even say optimized. It, it just does, especially well for Python, JavaScript, TypeScript, Ruby, and go. And I'm assuming, cause there's just more of that code out there, but um, yeah, the same with C-sharp and others that are out there too. So it's cool to see that it just works with PR I guess they just ran it, ran it. Well, I ran, they ran this thing. This is what it is. It's like as codec thing or something like that. What is this? An open AI Kodak model. And they just ran a bunch of code on it. Frank: [00:20:37] Here is they haven't released technical details, but my best guess, and let's say I'm probably 90% right here is that this is just a custom trained version of GPT. Um, codex is just going to be the name of it. They might've changed the parameters size. They might've changed a little bit how it tokenizes things. Um, but yeah, so codex is just the name of the train neural network. That's actually providing this code completion service. Copilot is more of a front end. To the codex network that is being hosted by open AI. And in fact, open AI has announced that within what'd they say, and a summer within a few months, something like that, that they would be, uh, selling access to codex itself without going through copilot. So co-pilots like a text editor integration, whereas codex is like a service that you can James: [00:21:35] pay for. Got it. That makes sense. That makes sense. Frank: [00:21:40] Yeah. It's pretty exciting. Um, so I got so excited from it that I was like, you know, um, cause I have something like this in continuous, but again, just doing it at the token level and it's not trying to generate variable names or anything like that. And I just got so excited by this. I'm like, I need to have one of these in my IDE also. So it just inspired me to like sit down and start training on network to try to be much bigger and much more powerful than the one that I already have. And continuous it's one of those things where like, once someone proves that it's possible, it's just like, ah, you know, I should have tried. I just never had confidence that I could train a network well enough. And in fairness, Can't GPT three is gigantic. It is 175 billion parameters, which, um, multiply that by four. And that's how much space on a hard drive it takes up. And I can't really ship that with an app, James and I D I w but I still want to have like some kind of service. So I'm going to aim for something more around like a hundred million parameters and see if I can get anywhere close to co-pilot and codex, but it's just really inspiring to see these, uh, powerful networks being used for something just. It, it it's such a relief to use. I hope everyone is signing up. I'm ending every one of my statements with everyone. Please sign up for this thing and get it. There are downsides though, and what we can get to those, but, uh, And it's, it's a new advancement and it's really great. James: [00:23:20] Yeah. I think any of these code recommenders or you see things like dependent bot or other things that are like, you know, trying to help you be more effective as a developer and more proficient and write code faster. As you know, I remember. Uh, once I was, while I was reading this on Facebook article on how they sort of have, uh, their own code re bug bug recommender, fixer, like at the company or something like that, you know, I've read a bunch of things where everyone's trying to develop different things. This is cool. That is just available to anyone. So, so let's get into it says because to me, I think that this is awesome and I can't wait to try. And it's cool to see that it runs on just any sort of different code base that's out there. But at the same time, I guess the question will be, you know, how good does it have to be to be useful? So they say here. In the, um, the FAQ, right? That, that they were using Python functions that have really good test coverage. And the open source they asked copilot to, they blanked out the function. They asked copilot to fill it in the model. Got it. Right. 43% of the time on the first try and 57% of the time went, allowed 10 attempts. And it seems to be getting more intelligent, I assume, as there's more cogeneration Frank: [00:24:35] learning, let me interrupt by being. Blunt. It's a copilot, not a pilot. Ah, James: [00:24:43] they did there. That's very clever. Yes. That is not your pilot. It just ended it. You say don't fly alone. Right? So they're, you're, you're there with them. That's that's clever. That is cool. Frank: [00:24:53] Yeah. That's why I keep trying to make this argument of it's a line completer. It's not a functional completer. They keep trying to give that function demo because it really is impressive. And it's fun to look through their function completions. It really is, especially if you're brainstorming, but the utility. The, the funniness, the thing that sparks joy is the line completer. That's all it really James: [00:25:12] needs to do. It says, you know, when you're working hard, they're working hard to make copilot even better code suggested by co-pilot should be carefully tested, reviewed, and vetted, like any other code, just like the code that you copy and paste off stack overflow. That's not what they say, but that's in general. I do like this as, as, as the developer, you are always in charge. I think that's a good way of doing it. I've heard. I have heard a copilot incorrectly be described by news media podcasts. Probably 50% of the time. Many people are are, are pitching it as, uh, turning written words into code. Frank: [00:25:51] Right. And no it's not, or at least that's not its most useful feature. It is actually capable of that. And that comes out of the fact that it was trained like GPT on the internet texts. It understands written language and understands natural language English primarily in this case. Um, it's, it's just more of a fallout of how the network works. You know, it was trained on that much data. So it's capable of doing that. For sure in the future when we get those numbers more confident instead of being 50% correct. And if we get that number to like 90% correct, or 95%, correct. I can easily imagine a place where, uh, English text is translated to code and that code is executed in a sandbox, you know, just to make sure it's super safe and all that kind of stuff. But that seems perfectly feasible. I mean, honestly, I think the network's good enough. I'd even try it today. If I had a strong enough sandbox and could guarantee that, you know, none of the code could break anything. Um, Yeah. I mean, just, just for generating SQL queries. It's right for that. James: [00:26:59] Yeah. I, I, oh, that's a good point too. Yeah. There's been so much SQL code written and there's been so much, you know, you know, I think one example they have on here is there's a quarrying Twitter for an AP at whatever for tweets or whatever. It's like, oh, that's a really good example of, oh, like they just know the API and they know these things and ideally it's, it's correct. And can help you get there. Uh, and to me, I think that's, that's, that's really neat because. I can't tell you how many times I've either copied and paste code from the docs. I think that's one thing that's really fascinating is if they were just an index, like let's say the index, all of the Twitter dogs and the index, all of this Stripe docs and the index, all of the, you know, Xamarin docs, for example, like, and dinette docs, like that would be pretty awesome because those are like source material. Um, that is neat. Um, on there, I guess one question I have for you. Have you seen it generate code that is like modern, for example, you know, I don't know how much of the code on the inner there's always built against like the latest and greatest versions of the language, like C sharp nine, for example, like how has that code appear? Like, what is the quality of the code to you as far as syntax goes and features. Frank: [00:28:10] So for me, I'm perfectly happy with it. I'm curious how much stuff is done manually versus automagic, but the great one in the C-sharp world is VAR versus type names. That's I think that's the only one where you can start to argue. A little bit, if you have a preference one way or another, but for the most part, it'll look at the context of your file. So if, if I'm in the middle of a file, it's going to look some 2000 words back or whatever their buffer is. And. Notice that I'm using VARs everywhere. So it's going to use VARs everywhere. This isn't a look up code copy and paste it into the editor. It's smart. It's figuring things out. Uh, that said the network is so big. It does memorize things. So it has gotten in trouble for, um, posting GPL code just because that GPO code shows up. Um, specifically, there's this funny, um, Well, inverse square root function from quake or something. He maybe even doom. Uh, it knows that function verbatim because every code base in the world has copied and pasted that function. It must've run into that function a million times and it's life. And it just memorized that function. There are. Potential problems with it there, but for the most part, it's this wonderful mix of a capacity to memorize, but also to customize itself to your scenario. So to finally answer your question, I'm perfectly happy with the code. It generates. Yeah, no problems there James: [00:29:46] and it seems like the, Frank: [00:29:48] oh, Sorry, you, you were specifically asking about modern stuff. So I did notice, um, it'll use like, um, uh, that string thing, dollar sign, double quote. It'll use that. Yeah. So that's nice. I don't think it does much pattern matching just because I don't think there is much C-sharp code out there in the wild that has a lot of pattern matching. So I think you're definitely susceptible to it's only, it's it's biased towards what's most powerful. As on their James: [00:30:17] own networks are. So then what you could do is then you could open, it was visual studio, and then you can use like refactorings to then get prettier code. Frank: [00:30:25] Yeah. Yeah. Yeah, yeah. Let this thing generate the high level stuff and then use all your fancy refactoring tools to make it exactly how you want it. But I think you'll be pleasantly surprised to see how it adapts to your style. It's kind of funny. James: [00:30:38] Has there been anything that you've, um, run, pass it or seen it just been like, no, that's not, no, that's not even close or has it been pretty much like in the ballpark? Frank: [00:30:49] It's funny. It gives up sometimes like, so that, uh, race, fear intersection, what I want is the mathematics. So, you know, yeah. Calculate, do these calculations, but sometimes if it's in a weird context, what will do instead is, uh, either make up a library or maybe pull from a real library that I just don't know about. I think it's like unity code, even. It will, um, Like, uh, create array, intersect object, and then farm out to that function. It'll delegate off, you know, it'll abstract off at all, create an object and make that object to it. So that's, it's kind of failure. Mode is just kind of giving up, which honestly isn't the worst failure mode, because if you're using the way I recommend, uh, line by line, then you're the one writing the function anyway. And it's just giving you little bits and pieces and that way it has a lot. Context. I think it's just, when you ask it for the world is when it's going to let you down. But if you just use it as an assistant, I think you're going to be pleased. You James: [00:31:51] use it as a co-pilot exactly how clever, how clever, what a clever title, those get hub marketers. That's no, that's really good to hear. And. Um, yeah, I mean, that, that makes a lot of sense to me that, that the, the code itself, especially in the mathematic realms, that's what I'm thinking about. When I was talking about converting Fahrenheit to Celsius these kilometers to miles like that code exists, you know, the distance between two, uh, you know, positions on a map or, you know, whatever, blah, blah, blah, like these things in which you can go and find all of these or figure it out yourself. But ideally. Yeah, that's pretty standardized at this point. And I do think if there's a lot of unity and there's a lot of game code, a lot of game code is a lot of mathematics and, you know, figuring out this bullet went this far and this speed and there's a lot of variables. I, I think the types of stuff that you make could really lend well. Cause I bet you have just tons of math all over your application, uh, when it comes to 3d. So I believe that that would be super duper helpful in these cases because there's so much similarity in some of that code. That's out of the way. Frank: [00:33:00] Yeah. And it's, there's so much similarity that one of the funnier features and they never demo. This is, uh, you start typing the function name, hit, left parentheses, and it tries to guess what parameters you're going to want, which sounds silly. But yeah. It's surprisingly right. A lot, because it turns out we're all very predictable and at least the interfaces we choose for things are very predictable. And so just, you know, just that tiny little feature there that like, it, it usually guesses I'm right. And if not, you hit all enter or something a few times, no privacy in there. It's funny how much repetition is, what I'm saying there is and code and you don't realize it until you see this neuro network just trivially, plopping it in front. Yeah, James: [00:33:47] I'll be really, uh, fascinated to see how it all works out. When you combine your IntelliSense with your Intella code, with your custom and Telecode with your co-pilot, how they all co-mingled together or are there co-mingling together? Frank: [00:34:04] No, I, you know, no technical details have been released, but from what I can tell, no, they are not. Uh, I think they're doing some fancy tricks with the context. So GPT running at full tilt can handle 2000 words of context. And if I start a file yeah. And I'm on the first line of the file. There isn't 2000 words of context to give it. So I wonder if the IDE is looking through other files in your project to give it some context, but that's a hundred percent hypothetical. I don't know if they're doing that or not. All I can say is it's, it's creepily right. Sometimes. And I'm like, how did you know that? What are you looking at? But you're right there. What will happen is these networks will have to be big enough to have. 200 kilobytes of context, and then you can put your entire API into that context. And now it has, um, the full richness of what you could ever possibly want. It's a 100% of your context is captured in that. Yeah. We're not there yet. And there might even be arguments that you don't even need that because again, code is repetitious. Uh, so yeah. That's it, they can get bigger, but I'm so happy with it right now. James: [00:35:21] That's really cool. I can't wait to get my hands on it and actually give it a spin. And just in some of my code, does, does it work on XAML today or no? Frank: [00:35:30] Do you know, I'm so sorry. I didn't even test. XAML like I keep talking about XAML because you want it to, and I know it can handle some of the XML languages. I'll be curious to see if it can handle, uh, you know, windows AML versus mobile. XAML, that'll be a little bit funny, but you know, it probably can just from the namespaces that you import at the top, that should be enough context for it to know which API set to use and that. James: [00:35:57] Yeah. Yeah. Yeah. And it doesn't make sense that there is some context provided by the source code. And when you look at the, there's a tiny architecture diagram and that really it's a marketing architecture diagram on the copilot website and it talks about like, there is some chatter back and forth, so that would be really cool because. At the same time. I know that the IntelliConnect system and the refactoring system, they know it's not that hard to use. Look at the namespaces and you're like, okay, then, then go down this route or go down this route. Or like, here's this recommendation or not. I hear Frank typing some XAML in his, Frank: [00:36:27] uh, I don't think it's working James or it's just not working for me at the moment. Darn it. But yeah, this will be great when we have. Going for us. Yeah. James: [00:36:37] And we'll get the thing that you talked about, which was, you know, create a login page and then it's like, here you go. Yeah, Frank: [00:36:46] I really want it. Well, and I was making the other argument. I don't always want purely generative. You brought up that, um, and Telecode can also do refactorings. Um, Editing is not generative. You know, that there are two different things and we are waiting for a neural network that can do editing as an, um, add a button to this form. You know, don't just generate the form, just do these mutations to the form. So I think that that's a next, uh, big logical step for these. James: [00:37:16] Yeah. Yeah. That'd be really cool. Well, I'm excited to give it a go. Anything else you wanna talk about copay? Uh, Frank: [00:37:22] I do want to bring up the one or two downsides to it. I, I brought up the GPL thing, which I think we'll just get fixed by. They'll just probably stop including it. I think that that's an easy fix. Uh, and then there's another one that I've heard brought up from people I've asked if they've tried using this and their companies are very strong on, they don't want to be sending. Code up to someone else's service. And I think that that's a little bit unfortunate and a little bit shortsighted. I know I'm talking from a little bit place of privilege and all that, but I don't know. That seems like worrying too much. I don't know. What am I not worrying enough? Like. I don't care that Microsoft can see my source code. I just don't think that there's value in that, but I could guess I could see if I was a proper, super secret from, but what does that even mean? How no one's code is that secure? Everyone just use this thing. James: [00:38:15] All my code is on GitHub anyways, so. I Frank: [00:38:18] know, I think, well, they said they only trained on the public code. They didn't train on any private stuff because even in the public code, uh, people are finding keys throughout copilot. Yeah. That's the problem with a big network. It learns. James: [00:38:33] Yeah. Oh, I bet. I bet there's some, yeah. That's uh, oops. Well, you know, and get up as I get up, I think it has a whole service that will search for keys and send you emails and all this stuff. I think all of them mean some of the other ones. Do I remember getting a email from someone that's like, Hey, just to let you know that this key is in this thing. Oops, oopsie. It was like a key, it was a weather API key that I was on a free tier that I didn't use anymore, but still those keys are out there. That's a very good point. Uh, And yeah, I think that it makes a lot of sense. If, if you already have your code and get hub, or you had some like enterprise tier of stuff or, you know, I think the other part will be like, well, what if your is not on GitHub? Right? Like, do you have, like, it is called get hub copilot. So like, does it have to be there? Like, how does that work? You know, I'm assuming it doesn't because you should be able to go file new and go from there. So it's a service from GitHub. It's it's, uh, it's interesting. Um, addition into the getup universe, which we're we're really get up is a lot of, a lot of things, not just a code repository anymore, you know? Frank: [00:39:33] Yeah. Great. Um, okay. Just one more thing I want to say about last I'm sorry. The closing statement. I think that this, uh, Huge for the teaching learning student education world, because you can learn a language so much better with this thing. You just start tabbing and it starts generating code. You get a little bit of a flavor for the language. You start creating your own variables and start tabbing, and it starts, uh, actually putting in functional correct code into your thing. This I, I could only dream of learning new languages or learning my very first language with such a powerful assistant. So I think that this is going to change how we teach programming too. I don't know how, and maybe not for the better or for the worse we're going to have to play around and figure it out. I'm sure a lot of teachers are going to band copilot in the beginning, but eventually I think. All going to have to understand that this is not just a good tool, but a good learning tool. Yeah. It's like if I wanted to write some Ruby code, I have to constantly Google because Ruby syntax is just so slightly different than everyone else's that I constantly have to Google it, but not with cope. Uh, just I'll just be typing away and it'll be generating correct code for me. James: [00:40:52] Yeah. That's a good point of learning a new language and, or getting, you know, sometimes for example, you may get into a code base. That's not the language that you're using, like you're in Java or C plus plus, and you just open it up and you say, oh, I need to add this thing. Like I can kind of get in there. A good example is I was doing all of that C programming for the, um, the cadence sensor thing. Right. Yeah. And man, it sure would be great to be know. Have some thing that talks about, I don't know, whatever my conversions were that I was doing, and then it could fill it in and give me a template so I can understand the code a little Frank: [00:41:26] bit. Exactly what it's used for. It's the semi-colon at the end of a C plus plus class, because that's the thing coming from C sharp. You always forget to do. And C plus plus again, But co-pilot, we'll make sure it will be like, you want to call in there. I promise that's a pull one. There James: [00:41:42] that's a good point too. I like that. That's cool. I wonder, I mean, and I've started getting it, like recommend, like didn't do all the indentation and all the other stuff for you cause that'd be kind of, oh, that's cool. Frank: [00:41:51] Yeah, it has to because, uh, Python and F sharp are both white space dependent languages. So. It's good. I like it. It gets a little bit confused with currying because F sharp is one of the languages where you don't necessarily need parenthesis for your function in vocation. Um, swift also has that, so I'm curious, uh, what their swift support is too, but I'm sure it does a decent job. Yeah. James: [00:42:16] Yeah. Oh, and the, you know, the crazy thing about swift too, is that it's changed. So much, right. Frank: [00:42:25] It's a tough one. It's a tough one. Yeah. If James: [00:42:28] you have older C-sharp code, isn't only the worse, but if you have an older swift code, it may not even compile anymore. I don't think I have no idea. Frank: [00:42:35] Yeah. Yeah. Uh, and there's no guarantee that the code that it's inserting is going to compile either. It's just your, co-pilot the pilot. James: [00:42:43] That's cool. Yeah. You don't trust that you don't well, I mean, hopefully you trust your copilot. No, that's fair. Frank: [00:42:48] I'm sorry to all the co-pilots out there. We're being terrible. We understand you can pilot also. We're just trying to it's a metaphor. James: [00:42:55] Okay. All right. All right. I think that's going to do it for this week's emerge conflict, Frank, you are the ultimate co-pilot. I appreciate you being here with me for five straight years, every single month. This podcast is released. It's, it's a miracle and I appreciate you for you. Frank: [00:43:16] And I appreciate you, James, especially because I think this is the longest held job I've ever had. So doing great. James: [00:43:23] Five years, five years. Oh my goodness. And yeah, I just celebrated my five years at Microsoft. Oh my goodness. That is crazy. We appreciate all of you, all of our listeners. Thank you for being with us, even if this is your first podcast or your 262nd podcast, we appreciate. Of course you can check us out at merge conflict out, offending subscribe. You can hit the Patriot button and you get secret super podcasts and all the podcasts earlier on our Patrion exclusive RSS feed for all of you. Um, we appreciate you, even if you're not Patrion, we appreciate every single one of you. If you like this podcast, give it a review. Even after five years, it still helps the podcast. Or just tell a friend that even helps it even more, but that's gonna do it for this week's verge complex. So until next time I'm James Montana. And Frank: [00:44:05] I'm Frank Krueger. Thanks for listening. Peace.