How'd you like to listen to dot NetRocks with no ads? Easy? Become a patron for just five dollars a month. You get access to a private RSS feed where all the shows have no ads. Twenty dollars a month, we'll get you that and a special dot NetRocks patron mug. Sign up now at Patreon dot dot NetRocks dot com. Hi, this is Carl Franklin.
And this is Richard Campbell.
We've got two special shows coming up soon, episode nineteen ninety nine and two thousand.
For episode nineteen ninety nine, we're collecting people's y two k stories what did you do to help the Y two k event not actually happen?
And for episode two thousand, we're going to be sharing stories about how dot net shaped your career.
We have a special page at dot netroocks dot com slash voxpop where you can record messages for us that we can play on these special episodes.
So tell us what you did for Y two k and what dot net means to you, and of course how long you've been listening to dot net rocks.
So go to dot netroocks dot com slash vox pop now and leave us a message before the thought of operates like whiskey left in a glass overnight.
Do it? Hey, welcome back to dot net Rocks. I'm Carl Franklin and I'm Richard County. Kathleen Dollar is here with us. We're going to be talking to her about, you know, what she's up to lately and all that. But this is episode nineteen hundred and ninety two. Maybe we should start with what happened that year? All right, bunch of stuff, bunch of stuff. It's busy here where you want to start? Well, Rodney King la riots very sad. Bill Clinton defeated George W. Hw Bush. The Cold War
was declared over by the US and Russia. South Africa Zobe Union yep, theory yep. Then before the Soviet Union then Russia right yeah, South Africa voted to end apartheid, and the Bosnian War began. Of course, Hurricane Andrew Let's see Queen Elizabeth dubbed nineteen ninety two her Ennis horri bliss Horrible year due to family scandals and a fire at Windsor Castle.
So Robin Williams one of his favorite movies I Really Like You Did is Aladdin. So Elatin came out that year too.
Oh yes, Aladin came out. Yeah, some good movies.
Don't miss out. The North American Free Trade Agreement and NAFTA was signed that year, and so is the Masterche Treaty, which is the beginning of the European Union.
Wow, okay, amazing. And while we're on it, Richard, why don't you tell us about tech, science and space. In nineteen ninety two.
It's a crazy year for shuttles. This is the first year that Endeavor the replacement for Challenger flies, and so there are eight Shuttle missions this year and devor a fly twice once it is made in flight to do a reboost of a satellite, Intel Sat six three, and again for one of the three Space four space Lab missions that happened that year. So lots of they You don't realize this, but there was a bunch of different space labs. They were reconfigurable, and so Discovery, Atlantis, Endeavor,
and Columbia all fly space Lab missions. The Restaurantal satellite deploys on the Russian side now because it's nineteen ninety two, they do their first mission back to mirr With the breakup of the Soviet Union in July fifteen and one last space flight, and that is in September, the final flight of a Titan three rocket boosting the Mars Observer to Mars, although it will not arrive and I'll wait until we next show to tell the story of Mars Observer,
because the loss of Mars Observer changed the way NASA approached satellites going forward.
Right from that. Yeah, they lost contact with it. They didn't know what happened right now.
About three days before it was supposed to do its orbital insertion, they were powering things up. It looks like there was a problem with the fuel system and the vehicle exploded, which is unfortunate because it was a billion dollar mission. That's why I was flying on a Tight three.
It was huge, wow, and they took all This is where a smaller, faster, cheaper comes from Dan Golden's idea where they take the replace the spare instruments from Mars Observer, they spread it across four other satellites that'll go to Mars, two of which will also fail, so at least some of the sensors will get to Mars successfully. But the building of these massive one off exploratory satellites will never
happen again. They'll stay small after this. On the computing side, this is the year that Deck announces their Alpha CHIPPE sixty four bit risk processor. Yeah, it is one are the chips. They'll be supported by NT. When that's available, there will only be a MIT full of computers. A
few different companies will buy the build these. Eventually, as Deck disappears, the alfship will be acquired by Compact, who will eventually phase it out in favor of the Intel Itanium chip that was wildly successful.
Winnos three one right.
Yeah, Windows three one comes out that year, which is a great year for that, and also Visual Basic two and VB for das.
I remember it's.
Also the year that Microsoft produces the Microsoft Developers and then Network MSDN.
Yeah. I was working at Cress and Software and writing with Q and a column for then before Visual Basic Programs Journal, I think it was called Basic Pro magazine. And we got called into a meeting with the guys at Microsoft on the on the Quick Basic team and Basic seven pds, and we were they were contemplating selling it to us, and they were like, what would you
do with it? And we said, well, we just keep supporting it and blah blah blah, and then they said no and came out with VB DOS interesting, thus putting a nail in the coffin of Basic seven PDS. I think because there was no memory left over for your code. It was all filled with windowing stuff. Yeah.
Yeah, the overhead so large. Yeah. A couple other hardware tidbits. A company called sun Disc you now know them as sand Disc Manufacturers, the first solid state drive at SSD for IBM and sample quantities. Also, Intel introduces PCI, or peripheral component in your connects. So if you're talking about PCs back in the day, the original PC and XT had the eight bit PC bus. As the two eighty six, thir eighty six and forty six is come out, they released the sixteen bit ISA bus. They'll later be a
bus called ESA, although it was not particularly popular. This is also the year that another replacement bus announced called Visa Local Bus, but nobody does this. PCI rapidly becomes the popular standard. It will later be replaced by both AGP in the late nineties, and then finally what we use today, PCI Express.
The first two words of toy boy PCI and AGP. There you go.
More Operating Systems OS two, the IBM Eparty system, the thirty two bit edition is released. Also, Linux is released under the GNU, which is canoes not Linux GPL license. So that's all the OS's I think. IBM puts out the very first think pad and from the very beginning with the track point pointer, the little rubber looks like a pencil eraser nub in the middle of the keyboard. From the very first version. And just so you know
it's the first version. The display on this laptop is ten inches and it's a TFT LCD.
I want it so bad, couldn't afford one.
They weren't. They're a big deal, last piece of hardware, and I want to pull a couple of software ones. Apple CEO John Scully announces the Newton, calling it a Personal Digital Assistant a PDA. It won't actually start shipping on nineteen ninety three, and it'll be dead by nineteen ninety seven. But you know that's the beginning of that.
Well, you know, it wouldn't have been bad, but it only came in one flavor fig.
But you had to learn how their language for how to draw on it, right. Yeah, they couldn't read regular handwriting. On the Internet side of things, This is the year that the Joint Photographic Experts Group standardizes and image format we know as JPEG. Yeah, and a guy named Mark Cahill coins the term surfing the Internet right, and two pieces of a software past the Language of Stuff. ID
Software releases Cassel Wolfenstein. Oh Yeah, and Adobe puts out a Photoshop two point five, which is not that big of a deal except it's the first version released for Windows.
Nice.
That's all I got.
Well, let's talk about the top ten albums nineteen ninety two. I'll make it quick, Sonic Youth's Dirty Album. Popular singles are one in Sugarcane, Countdown to Extinction by Megadeth. The popular singles there Symphony of Destruction, Sweating Bullets. Mary J. Blige put out What's the four to one one? Real Love You Remind me, Sweet Thing, the Bodyguard, Whitney Houston. I will always love you. I'm every woman and run to you. Who could forget Whitney? She was so good
that she had an amazing year. Two Yeah, Billy Ray Cyrus Achy, Breaky Heart Lord, that's.
The one I wanted you to not miss if you hadn't got that when I was gonna jump in with that ache.
Breaky Heart was that year number six. I think that might have kicked off the line dancing craze. I'm not sure if it was going strong before that. The album, of course, is called Sun Gave All Pearl Jam Wow, some great singles, Jeremy Alive. Even Flow ten was the nineteen ninety two fifth most popular album of that year. You two's Aktung Baby Huge, Huge in nineteen ninety two one mysterious ways, even better than the real thing. Who's going to Ride Your Wild Horses? Yeah? So goodrim Automatic
for the people. Everybody hurts Man on the Moon Drive, The Sidewinder Sleeps Tonight, amazing album. The chronic by Doctor Dre absolutely a smash hit. This is number two, Nothing but a g Thang Dre Day and Let Me Ride or the singles, and the number one album of nineteen ninety two, Eric Clapton Unplugged, Awesome, Tears in Heaven, Acoustic Layla, all those great songs he just cleaned up in nineteen ninety two. So anyway, that's that's it for our reminiscing.
I guess we should go on to better No Framework awesome all right?
Man?
When he got.
Oh, what's t unit.
Well, I'll tell you it's not. Tune it.
To it.
I don't know.
Yeah, tu n it t it's a modern testing framework for dot net that uses source generated tests. Ooh, it's parallel by default, parallel execution, and it has native AOT support built on Microsoft Testing platform. Is faster than traditional reflection based frameworks and gives you more control over how your tests run. And more importantly, our friend Simon Kropp loves it. Okay, however, he asked us, by us, I mean the guys in the app nex slack, who's running
tea unit? And the answer was, what's t unit? Nice?
I think that was my line?
What's that? So there you go know it? Learned it?
Love it?
Well?
Well, if it's doors by Simon Crop, you should pay attention to it.
Absolutely. Yeah. So who's talking to us today?
Richard Grounded kamin Offer Show nineteen eighty eight, not that far back with our friend Jason Bach talking a little bit about dot net source generators. You can see a theme here and our recent also guest Schmooley Engelard said, first, I need to share that I have metaprogramming dot net. That's Jason's book and I love it so much. Two important things I wanted to share. First, the source code generated by source generators is read only. You cannot change them.
And second, for me, one of the easy ways to know if I may want a source is if I was in C plus plus, would I be writing a template or a macro? Interesting?
I think you'd be asking co pilot to write it for.
You bylus by stepping that whole process comments two weeks old, it's already had a date.
Yeah, yeah.
Jason actually responded to Schmooley's comment and said and thanked him for the nice comments and said, you write sorce generator gen codes. He is read only. Also, other source generates can't react to code created by a source generator, so smoothly, thank you so much for your comment and Comedy
of music codey is on its way to you. And if you'd like a copy of music Code by I write a comment on the website at dot a rock saw Comma on the Facebook, so we publish every show there and if you comment there and not read it on the show, we'll send you copy of music Code.
I'm pretty sure Schmooley already has a copy of Music to Code Vibe.
I hope so, I would think.
But if you don't want to leave a comment, you just want to buy it, you can go to music to codebuy dot Net. There's twenty two tracks approximately twenty five minutes long, perfect for coding, and it helps you stay in that state of flow. And with that, let us bring back to the show Kathleen Dollard. She calls herself a dot net connoisseur. She's certainly seen a lot of code as a long time teacher and consultant as well as nearly eight years at Microsoft. Transitions are tough,
but she's ready for the next big adventure. And welcome back to the show. Kathleen. It's been a while, but you have been a frequent guest here over the years.
Yeah.
I'm not sure how many I've done. It's been a lot, but it has been a while. It maybe two years. It's really been a little while, so I'm thrilled to be back. It's great.
Well, and you were on seventeen hundred, which was our collection of guests who've been on the most.
Yeah, yeah, yeah, yeah, yeah.
You know, if you're in that, there's a pretty clear sign you've done to manybody. Yeah, last one was four years ago when we were talking about C sharp eleven.
Oh four, Oh my, oh wow, that's crazy, that's crazy. So I did think the fact that I've been a bit out of touch probably is partially because, you know, life got pretty intense the last two years that I was in Microsoft. We were running really short staffed. So what do you do when you're short staffed? Do you let people off? So so the PMT was short staffed,
and I think, I think we didn't. It was very hard to focus on what was important because there was so much, so much going on, and then I left Microsoft in May with the layoffs, which broke my heart. It's my job, my dream job. And the funny thing is the same day. It's not funny, but it was good. The same day, about two hours before they laid me off, I found out that I probably had cancer. And so it sounds like a terrible day. You go, oh my god,
what a bad day. Oh, but no, if you can imagine what would have happened if those things had happened two weeks apart, and we had this life changing event and you just got used to it. You just had your plan, and then the other and dropped. That would have been horrible. I'm so grateful that I didn't have a moment where I saw my life without these two things crashing on together. It was such a blessing because I didn't have to worry about, Oh, I've got new plans,
and now these new hard plans are destroyed. So the good news is that it was a very well behaved cancers. Cancer as cancer goes, and so I am now. I go back for some checkups next next weekend. I basically should be cancer free at this point. It was a tough it was a tough six months. It was a tough six months, six eight months. But it's you know, I've got my energy back and I'm ready to go, and so sure.
The stress of leaving Microsoft didn't help.
Well, Yes, and no, I worry a lot about how I would have coped if I'd had the stress of being at Microsoft doing that. It was I mean, I loved my job. I love the people I worked with there. I don't want to I'm missaying anything bad about it up that it is. It is not an easy place. It's not an easy place to work. It's a hard place to work, very intense, very intense yeah, I loved it, but moving on to other things and so.
Yeah, greener pastures, Yeah, I hope so think So so what's what's charging your batteries these days?
Well, there's what's charging my batteries and what you know. I'm kind of setting out towards doing I do eventually have to do something else. I mean, you know, it's it's it was good to take some time off and be able to focus on my health, but kind of done with that right now. So the kind of two big areas. One is c sharp with sort of a kind of a new vision for the way we talk about c sharp because it's a new world out there.
And the second is I'm very into clize and I don't know which one you want to talk about first. So first of all, clize is the thing you type when you type in something like dot nit built. That's what we're talking about, is what you type at the cursor. So I want to make sure that everybody's on board with what we're talking about. And it's an amazing space.
It's just I've been involved in it since I joined Microsoft, which nine and a half years ago, because I went in there just being a goodie person and they decided that. So because of that, I should run the dt at CLI and SDK because I'd have a good appreciation for people who didn't have that as their first, you know,
place of comment, which I think was great. So I learned a whole lot, really fell in love with space because I'm not language geek from way way, way way back way back into at least at least nineteen ninety two. And as a language geek, I love dsl's. I love the ability to express what you care about in a language. And there's many places that's not a good choice, but that's what a CLI is. You get to build your own DSL and you get to do it within a framework.
It's like a sonnet instead of a free verse.
All right, Just for the one person who didn't understand the acronym CLI command line interface. If the DSL domain specific language.
Thank you, and demain specific language just means that you're making up up the aspects of it. Now you generally don't make up the syntax. It's not only with the CLI where you don't get full control of the syntax, but you have control of the semantics. So if we just look at this CLI that most people listening to this will know something about well, there's two Get and dot net would be the two most people listening to
this will have probably used. And so when you say dot net space build, there's code written that takes dot Net to say that's executable and build that's what we're working on, and then takes all sorts of other things, like you might have configuration, and configuration would be dash, dash config or h C and those rules are set out and something called the PASIC standard, which is ancient, absolutely ancient, and so one of the things that I didn't have a chance to do while I was at Microsoft.
It was on my plate, it was on somebody else's plate, And now I'm like, you know, I might find time for that is to actually do some updating to that standard, to say this is what we do. And like the areas that's worth conversation is how we use abbreviations, because dash F is in Frank is my favorite one to talk about because it regularly means two different things and they're just a teeny bit different. One is dash dash
force and the other is dash dash format. So if you're merely thinking this should have a format, and you go dash F to a command that you really didn't want to do a dash dash force too. There you go. So I think that there's some things that we want to talk about. There's also a lot of orthogonal things. Help has not been updated since the initial POSIC standard in any real way, and now we have these spectacular tools like spector Console where we can really make beautiful things.
And happily I am still closely in touch with the net stycancel It team, and hopefully I will now be on the outside pushing in my ideas and thoughts the same way I did before I joined Microsoft as an MVP. An MVP for twenty years during Microsoft got to work on the inside. Now I'm the outside setting up the conduits in the ways that I can work on the outside and make a difference. So that's kind of what I'm doing now.
The POSIC standards comes into playing the sense that POSEIKS says to dash is word rather than just like dash out would be dash dash force.
Yes, right, So the POSEK standard is all these little details, and it's actually a good standard because it's relatively consumable. So if you have something that needs a name, then you can think of as a named parameter versus an unnamed parameter. So a named parameter in poseis it is going to be dash, dash and then the word. But it may be abbreviated if it's a boolean flag as just dash and then the letter. So I guess format's a bad example. I'm gonna have to find another one
because it would not be a bullion. So you might think that abbreviation worked, but it generally wouldn't because probably format wouldn't be a bullion. It only works at bulliants. Is one of the things I think it's worth another look. I think I also come to the conclusion that we can do it dot net. We don't have to change the whole world. But the other thing up on that
front is open CLI. Because the other really exciting thing in addition to you can write this little language to help the people you work with, which people they're writing CLIs to do regularly do it. They just may not think of it that way. The other thing is that you're writing for AI and in today's world, one of the really easy ways to set out what you offer as consumable without making it a service and without having
to stand it up in that way. So it's just within your organization, it's just go out and find this executable on our local stores wherever it is. Then you can write that and have it be available to AI
via the CLI. And there's a standard that's called the open CLI standard that Patrick Spenson is I know about it through Patrick Spenson, but there may be some other I know there's other people are that are involved in that, but that hopefully will be not just on it, that will hopefully be across the entire space.
It couras to me that dsls have kind of been replaced by these large language models. Maybe I don't know, it would seem that you could use a large language model in the case of you know, where you would have a DSL before.
Well. Possibly, I think that we are just so much at the top of the ski slope or avalanche, or just at the beginning that we have no idea. I mean, I think we're like, I don't know what year we would pick. I don't think it'd be nineteen ninety two in the Internet world, But you know, we're so much at that beginning. I don't think we have any idea.
But another possibility, the one I think is more likely, is that dsls will feed AI, so that AI is more likely to use a DSL on a thing that is done well and piece things that are done well together. I think that that is more likely to be the place we land when we realize that when I ask for something in chat in my browser, it doesn't matter if it's one hundred percent correct. But when I run a program, especially one that does money or health or any one of a number of different things, it matters
that it works well and it's relatively fast. And so I think that we're more likely to see a really good merging of these spaces. But I don't know. You may be right. It could be that you know, the code does get enough better that we don't have those problems.
It's funny because I was just thinking, I don't normally type dot net build. I run a script that has dot net build in it, and a bunch of other steps too.
Because repeatability, yes, absolutely, And that's one of the great things about clized is they're so easily scriptable. And there's two projects, ones out and ones in process in terms of how you build them, and they both really relate to scripts, and one of them is system command, which is a parser in dot Netlin. Microsoft has it, which I worked on for seven years in beta, tremendously painful
experience because we did not have support and management. Finally, with millions and millions of downloads that weren't from Microsoft because they had a different store, they finally said, I guess we should do something and release this. So the right people got on board and it got released. So that was that was that's great?
Was that that was dot net cli.
No, no, no, no, dot is cli has been out forever. The parser that runs it, the parser uses is called system command Line. So if you want to write your own CLI, do not do not. Do not do not write your own parser. It will be bad. I just tell you it's tremendously difficult to I know absolutely, it's tremendously difficult. I know how much time and pain and love and wisdom went into System Commandment parser. Use it, or if you'd like Patrick Finson's console, better use use
it if you want to. There's a couple out there that also are pretty good that they have. There's there's subtle standards within the dot neit ecosystem that people actually probably will expect. So it really is a good idea to use that that went into full release in November. So yeah, all the everybody that was involved in that three cheers. Some real heroes in that story because they it was it was really fighting up a hill, so really big heroes.
So it was always an internal library then, and it was never meant to be a public.
No no, no, no no, no, just the opposite. It started as an open source public library that we did with the community. John and I did it. What happened is I did dot Tools. I was the PM for dot neit tools, and when we released dot neit Tools and I sat down and I wrote my little samples and stuff. I just wanted to cry because even for a completely crappy parser, over half my code was Parson code. It wasn't anything to do with what I wanted to do. It was all just this crap Parson code that I
did not want to write. And so I went to start asking around who can and John Squero said I might be interested in that, And I don't know if he's forgiven me yet because it was a really painful seven years for all of us and the So anyway, we've got it out now. So there is a good parser out from Microsoft. You know, it's fast, it's it's great, it's it's wonderful. I don't think it has a good U either for the for the programmer. I actually think
it's terrible. So I was in Prague at Update conference and I stepped on stage. I'm so excited. I said, Oh, this is just nearly released. Everybody go take a look at this, and I'm showing examples of it. I'm going we're still writing a bunch of code that we have to learn about. It's interesting, just do it. So I'm working on a side project and if it is interested, it's get hug Kathleen Dollar. Dragon Fruit Too is the name of it. If you're a System command Line fan,
you know what dragon Fruit is. This is the next generation. It does subcommands and the things we've wanted in the dragon Fruit which is now gone. That's not part of the released System command Line. So that is going to be able to restate what we can do in CLIs you talked about scripting.
What is dragon Fruit.
It's a rapper for System command Line that gives it a good UI. It lets you do a single create your entire CLI with classes that are familiar to you and they're basically DTOs. It wraps system command line and a dto that that's a data transfer object. It's a simple little object. So it just marries those two together unless you write your CLI very very easily. So that's the main goal, but it also will allow you to extend it because it's open and we've got lots of
things in there, like better defaults. And you were talking about scripting Richard, which if you know what you're talking, if you know those commands, you already know them, then it's very easy to redescript. If you don't know those commands, it's very hard to redescript because there's things like I talked about named and unnamed arguments. There's a huge use of unnamed arguments within CLIs and that's a good thing
if you're typing less to type. It's a very bad thing if you're reading, because you see a word, you don't know what that word is. And so let's just say that you have a project in your system that is like I don't know, it's it's I don't know, it's like run okay, and that's just the name of a project you've got. Well, if you see dot net, you know build run. You don't know what's going on there, and because you can state a project after dot neit build,
so it's it's difficult to use them. I think it'd be much easier for humans and definitely easier for AI if you could read a script that was written adjacent. And so that's one of the things that that's the kind of thing we can enable. Prompting people have asked for a lot, being able to pull defaults from environment variables. All of those things are in there. They're either in the system or they're already designed into this wrapper. So that's what I'm coding it.
Certainly I have it. I have in writing scripts, and that's as much PowerShell as anything dot net related. Yeah, to always use the double dash long names. Yeah, so you chot just so because it's a pain to do once, but it's in a script. You're never going to type it again. But when you go to read it, holy man. Yeah.
I also suspect that you're you're doing a great deal of good for any AI usage that that script would ever have. Yeah, I imagine either evaluation or to use it to find out what it's doing. To use it. For example, you might look at a bunch of scripts to say, what are the configuration files. So for that kind of work, I think that you're way far ahead if you're using the dash DASH can fig and say a dash C. Even though in theory the AI could work it back, it also should.
Be able to do you'd think it can. It's just one less step.
Well, right now today we don't yet have that open sale I at so we don't have a guaranteed way for it to get to the actual intent of that particular domain specific language and what does C mean for this particular command and so because we don't yet have a solid pipeline there, I actually think you get better results as well as being easier to read when AI is involved.
That's interesting. Okay, why don't we take a break. I got some questions after that sounds good, and we're back.
It's dot at Rock's amateur Campbell. That's Carl Franklin. Hey, hanging with our friend Kathleen Dollard after entirely too long and were just digging in on you know, the whole wave of CLI came from the open source side, and to me, it always was about appealing to non ide developers like they, especially the younger generation of web developers who never went into visual studio that were used to rolling their owns, and here was a way for them to building DOT that they they're familiar with.
I think that's true, but I also think that that it's also better for certain things. So if you look at we use the dot nea clig and that GET is equally true and GET, it's just it's not as structured quite as well as dot cli, I think. So
the CLI is huge. It's actually quite large. There's I don't know, one hundred, one hundred and fifty different options on different commands all stuffed in there, and that maybe doesn't include new geed and net new has an entire open system behind it of all the templates.
It's huge.
It's absolutely huge. So if you were just take a second and think about what the UI would look like if it was.
A good options It was a very telling thing that happened around I don't know if it was PARASHAWM guessing it was, but it might have predated Parashel where some of the work for it professionals.
The people back when we had it pro folks. They they had started they went to Gooey's and then they started having the real command line that would be the same thing at the bottom of the screens in many of the tools, because yeah, you really needed that. Both the build scripts 'very important, but also because there comes a point that just trying to assess the information that's coming at you, and there's this very small thing that salies do really well that is not obviously importance of,
and that is defaults. So if you look at that dot neit build command that's inside your script and you do or do not see a config then that's important information. Okay, so that's very easy, and so a configure you're going to probably have. Okay, that's you know, that's most likely you're going to have it. But there's a whole lot of other things there, like what your run time is,
or what actually what the projects are. Are you just going to build into this directory and move to the directory or are you're going to stay what the project is. There's just a ton of things there that either are present or absent. But when you look at a guy, you don't have that ability to say, these are the things that are special about this particular case. And that's what a default is. It's what is special about this
particular case. And nobody's ever really built gooey's that say, you know, the bread green stuff is all the stuff that's that's not default, right, I've never seen that, And in fact, in a gooey you generally can't tell the difference because if you have a zero that's a default versus a zero somebody entered, it looks.
Just the same, exactly the same. That's a great insight.
You know.
The neat thing about parameters is they're all intentional. You wouldn't put them if they weren't optional.
Any pleasure using optional parameters, that's absolutely true, and in clized. You only put the things that you need to put. No, I don't know anybody who just says, oh, for fun, I'm going to go ahead and add a few extra things when they're typing in to use a CEL.
Yeah, that's a mean person. You don't like that person. Don't do that. Only put in parameters that matter, especially.
If they do with scripts. No, you don't, you don't, you don't.
Yeah, it's a great you know. The other obvious one is it's really hard to keep multiple goooyes across multiple people all in sync. For configuration, where a batch file sitting in a folder that everybody can access, that is the only way to build. Then yeah, you know everybody literally runs the same piece of code.
And it fits in so well and with such a good driver for the SDK design and the overall design of all of it. Like you know, when we when they went to do the the file based applications, it's like, okay, we know what to do. We don't have to sit down and design anything. So we know that we want to say dot net build blah blah, dot c s. Okay, that's what it's got to be. And now how do we make that work? And so it was a huge,
huge organizing and driving factor. Now we had some mistakes that came in actually creamy, but it's okay, Like we used to be able used to have to say dot net AD. I think it was a AD project and package AD. So but there were two almost the same thing that we just switched and that's not removed. So now the noun verb completely. One everybody's doing CLI is
do noun verb. Reach out to me if you need to understand how to do obsolescence in the CLR, because it is a it is a tricky thing to do, but you can do it well.
It did bring up the question you know, now that you've talked about system, command line and so forth in this tooling, who should be building CLI's, Like I get that you should build clish you think like this, and you're building tools always going to use. But who should be making a CLI?
I can give you one right now, just people who are using AI agents to do things that you typically have to build a CLI around. Right Get hub Copilot is a perfect example.
So I think that there's a bunch of answers. One is who's your audience? So if your audience wants scoies, your audience wants scooies. If your audience wants the people going to use your app want a command line app, they want a command line app. I'm of the opinion that almost everything should be designed CLI first and then can we second, because in that way you have the organizing force of the CLI, which I mean, like I said, you just it was so important in the net s
to case it's a nightmare. It was we made it better when we at the old dot net new and got the new dot net new. And there's some things New gets relationship, you know, handing off to new get got better, and a bunch of stuff got better of the last eight years. Somebody else runs it now. Chad husk Is is the person who does that. But the part of it. The first answer is what do people want? The second answer is, unless you have a really I know this needs to be a guy in this way,
I want to design the guy first. Unless you know you want to design guy first, design CLI first, and it helps your testing, It helps your prototyping, it helps you communicate with your stakeholders without worrying about whether the button is blue. There's just a ton of things you gain from being CLI first in your overall app design. Also keeps your apps from being too big, because most of us look at something like we're you just getting dot net. They're about as big as you can get
as your CLI is actually not a single CLI. It's a breaking off point into a whole bunch of little CLIs. It's a prefix you can only get so big, and it kind of keeps you with that size.
And that granularity is super useful too.
Yeah, it's like, how should we break this up? Now becomes a good question for a good reason. Instead of a guy app which is just going to keep growing like a big amima until it's taken over your entire company if it's a medium sized company, and that's never good because then your ability to change to the next great thing is drops zero.
Right, that makes a lot of sense. Yeah, yeah, so I think, I mean, I hate. I really wanted to push on this idea that CLIs are all about AI, that there's a bunch of reasons you were going out CLIs anyway, going way back to the DevOps movement and so forth. But now it really opens the door to these new tools and the way they want to work as well.
Yeah, it really is. And that's why things I could in CLI looking at maybe some more expressiveness, looking at not being afraid to change. I'm no longer afraid to change the positic standard. I will not do it on my own, But I think that as a community, as an ecosystem, we need to take a look and say can we can we either solidify some things other than H or can we you know, what can we do here to find some space to grow alternate you know,
alternate help is a really obvious one. And prompting prompting for required values being part of your part of your part system, not something you have to write for every application yourself. If you want it, it'd be just a configuration switch.
So yeah, Yeah, it's interesting to think because that is such an old standard that maybe needs to be modernized because of these new tools, so that we have fewer problems going forward.
Yeah, and I think everything that's there will stay forever. I don't think anyone's going to literally.
Change it, right.
You know, I said I'm not afraid to change it, but I really mean I'm not afraid to talk about extending it to see whether there's buy in on some of the things that we could do if we extended it, as simple as if we're going to have help be in a more structured format to make it easier for AI, easier for some other things. Oh my gosh, can we all use the same format? That's what open cli is
ultimately about. You know, it's got lots of things going on with it, but that is, you know, we need to use the same the same structure there.
You mentioned obsoleting a few minutes ago. Yeah, is that the same as deprecating like, well, we don't use that anymore and now we use this pretty much?
Yes, that that is really the answer, because unless something becomes strictly dangerous strictly you really need not to use this, and unless that happens, you can never remove anything because you're going to break the scripts. Richard was talking about that all these people you just think about now thet
net scripts. Of course that's massively in use. There's absolutely kind of remove any feature ever, which is why it was so hard to get this verb now and thing fixed because so many people said we can't have to ways to do something, and we're like, well, we'll never fix it then, so can we please have two ways to do something? And literally it's taking what is is the old way to do it that now is obsolete and just hiding it. That's number one. Just don't put
it in help, that's number one. And then the next step, which the dot netcli, I think mini salies are ready for, is to have a warning. It is to have the replacement, and that is just so. I think you may see that within the dot NETCLI in the mid future. I'm not sure this year, but soon I think that's going to be there. I'm not sure if they're working on it right.
Now or not.
When you think about security around CLIs like do we need to have a log in or some tiers of authority for different commands in CLIs it's.
Not my space right now. The answer is that kind of the the person you are, the framework that you're in, the things seem to be working. But as AI comes in, will it I don't know. I don't know the answer to that.
It's currently the CLI runs in the context of the caller exactly. And so you know this is where if you live in a Linux line, you would pseudo before running a CLI to promote your your rights, and then the CLI runs in a higher level, but.
Hopefully in a very thoughtful way, and only pseudo when you actually need to because it's holding you say, and otherwise we may wind up with some rapper basically little terminal wrappers or repels that can hold more security for certain things that need it. That's another way, and that's another place to standards would be really important and valuable.
Right that you could be a parameter that carries a token that kind of thing, right, question or something.
So these are the kinds of things that we we kind of got stuck in the standard and said, well, we're not going to think about these new things. We're not going to think about ways to change. And there's a lot of answers to that question, including environment variables that have you know, and having keys that have a short lifetime. You know, there's a ton of different things
that could be done, and what's the best thing. I am certainly not the person to make a guess as to what's the best answer to have the most security with the least impact, And there might be more than one answer.
I'm sure I do not want the CLI to generate a prompt for a password, That's what I'm sure of. Yeah, you know, the same way invoking an SSH call or a Bash call might have a security prompt in it. Well, the cl I should not behave like that. That is bad.
Yeah, yeah, and thank you, because I do not yet in this project, this Dragon Fruit too, I do not yet have a special password type to ensure that it's never prompted. And so yeah, thank you.
Well, in the Windows guey world, when you need something that requires a higher level of context, it asks pops a dialogue, you know, POPSI dialogue. It has been doing that since what XP service back too, right.
Yeah, well that was just UAC but even before that. But you know, you make the point. One of the things about gooy is that you can layer on interface like this and interrupt.
And everything stops and you can't press enter. You actually have to click.
You can't do a damn thing, you know.
You have to click allow yeah.
Or okay, right, Well, we can actually do that. The problem is to scripts, so we could do that, but then while scripts there's two actual problems with the scripts. One is if you do an interactive mode on a command while it's in a script, it'll hang the entire session. So that's bad. And so then so in that case you couldn't get any approval, and so knowing whether you're in a script becomes then a security question. And right now, knowing whether you're in interactive mode is kind of like
we can almost always get right. Chet worked on that to get it in the dot net. In the dot necli now does know whether you're in interactive mode and does behave a little bit differently if it's an interactive mode now, which is great, right.
One thing that's in the newer version of get hub Copilot's CLI is this slash allowed dash all okay, which essentially says, don't prompt me for permission when you want to do something, just go ahead and do it and I saw that In'm like, well, that's very convenient, and you know, convenience is the enemy of security, right, I want to know exactly what you're I don't want to see bunch of stuff fly by. Yeah, I want to know exactly what you're going to do, so I don't use that mode.
Yeah, yeah, yeah, it's just a I don't want to break automation either, Like, yeah, it's a challenge of writing good scripts.
And well it is. And this is you know, I think all these problems are solvable if we look at them through the eyes of twenty twenty six. And you know, I should have looked up how all that standard is. I didn't. It's absolutely ancient and hysterical. It's nineteen ninety two, but I don't think it is. But it's it's it's quite old, and it is. It has served very well. I have nothing bad to say about it except that it's time for us to it's time for us to
look forward, modernized. And there's one thing in it that I personally dislike but I doubt it'll change, which is the ability to smash different flags together. And you know that's the only thing. It's called pozis bundling and let let you do like dash ac if A is a flag and C is a flag. I don't like that
very much. But other than that, you know, it's a really good standard and it has served really, really well, and nobody would have ever thought about the kinds of things that we're thinking about now way back then, and it's just time to take another look at it and open sealies doing that. I don't think it's the only front that we're going to be looking at that, although perhaps that will be the venue where we can take a look at a lot of different things and you know,
kind of update. It's time for that.
Yeah, it does speak to this evolving way of interacting with software I do. It is really something to watch an LM write prompts like that, I spit out a series of commands.
It is, and it's I think it's awesome. It's just it's a very nice way to communicate, you know, back and forth, as long as the commands all stay simple and easy to understand, which it's up to. It's up to people are writing the CLIs to do that.
So yeah, yeah, and back to that question of who's writing a CLI and what's for. But like you said, is any piece of software someone needs to interact with, you should probably be making the CLI first, then defining a GOOI or whatever of interfaces you want.
Unless you hear that statement and know what's wrong for your app, and there are certainly apps that's but if you don't know what's wrong, think about it. I can't think about whether that's yeah, I think if it makes sense.
So yeah.
I also saw this with the Azure CLI, which is that often the new feature shows up the CLI first and then the portal caught up sometime later. So you know, the other side of this is you can ship faster when your interface is just an additional parameter call in the cl I and it just it takes time to roll that up into the UX.
Well, it does, and the Asure CLI is probably one of the easier ones because it has a lot of standards around. You know, the CLI looks the same across a whole lot of different A lot of problems are argon solved in I'm sorry, in the guy. A lot of problems are solved in that guy. So if you're going to write to a gouy, it's probably a pretty easy one. But even so, the cl I allows you to get through prototype and find out it's even a good idea before you start putting any any time into
the arrangement of things. You know, you have to start worrying about your semantics, your words, before you start worrying about how those words lay out. And I think that's a really healthy way to look at software, as opposed to first looking at what's the shape, what's the pretty? What color should it be?
It's the color?
Yeah, yeah, you know, which is terribly important, even a guey I mean, you know, I'm not eventually. Eventually I can't design a UI for the life of me. But that's decent, A gooey, not a gooey A CLI I can design fairly much.
What I like about your this whole thinking is like it's about the functionality exactly.
That's exactly the point. And another thing that can drive you away from one is if you have a lot of data, it's not a real easy way to like, if you're interdoance. You know, if someone has to interdeance and you can't abbreviate enough to say any four letters of the goods will be good enough. Yeah, then you know, because we deal with commits all the time.
Well, now you bring up a great point, which is that you're if you're thinking CLI first, how does that change the way you craft parameters?
Exactly?
That's absolutely you would manage data like you don't want to put that in a prompt, you'd put it in a file and a porter to the file.
Yeah, yeah, absolutely absolutely.
Is that actually good for a guy or another interface? I don't know. Like it is interesting to think in those terms.
It really is. I think it's a good piece to our conversation. I don't think it's the end of our conversation. I just think it's a big part particularly conversation we're having right now. Everything's changing around us and we're all trying to figureut which way the ground is. And in that world, I think that this is one of the grounding pieces is just say I have something I want shared. This is a way I can share it, and this is a way that doesn't depend on a service to share, right.
It can certainly be wrapped by a service. That's great. But if you try to write your service first and then you write your sale lie second, good luck, because you've already got too much code in your library. If you write your library first and then your c. If you write your CLI, design your sale first, or design it alongside, then your library may make more sense. Your your API, your web api may make more sense. You know, various different pieces of your overall puzzle may make more sense.
Yeah.
Thinking through your parameters before you build your back end, even at all these places, certainly makes what would it look like?
Yeah, certainly makes testing easier too.
Sure, that's very automatable and work through all the different parameters. That's that's exciting. That's a great way to think about this, Kathleen. As usual, you got my head going.
Yeah. Well, one thing about the little project I'm working on is is if anyone is interested in uh in source generators and they want to look at a non trivial source generator, some fantastic there's some fantastic blogs out there, and I'll send you resources on two of them. On if you just want to write Hello World, Hello World for source generator is rewriting two storing for moms that is the Hello World. And so if you want to go beyond that, then it gets really hard, really quick,
and it is not linear. It is very is very non linear. It goes up fast, and I have tricks I've been doing this a long time. I had some really good tricks and I was showing somebody who's a really hot programmer. I was so impressed he said this and it was a particular thing I did, and he gets, oh, I never thought of that. That's gonna save me a lot of times. And so I'm going to be giving
a talk at Tikarama on that. And I'm also talking around on C sharp both Sea Shark gotchas and h C sharp modern Sea Shark What should what can your code look like today? And why is that good? So you know that that's the other thing as I'm working on is where C sharp is at. I was so busy building it, I couldn't really talk about it, and that was a great frustration. And now I can talk about that and the Richard Carl You know that I did a workshop for a long time which was, you know,
I'll become a better sea shark programmer. I'll make you a better sea shark programmers names like that, and so I am hoping I'm in progress. I think I'm going to be able to release that and put that together in a big way. And so that along with the modernizing and then my talk at Tekarrama is staying sane while writing as rosin source generator.
Nice.
You know, I realized there's at least two more shows here. You're thinking about what modern cy sharp looks like is a whole other show, and everything to do with Roslin's easily a show too.
Yeah, and the Sea Shark, gotcha, this is actually another show too, So we will not be waiting four years again. I'm quite sure of that.
No, no, I think we better not. We'll figure that out. So much fun to talk to you again. Yeah, I'm glad you're well.
Oh it's great.
Yeah, we're very happy for that.
Yeah, and I am so glad to be well, so glad to be here with you today and ready to go and shovel my driveway that is, or snowblower too.
But there's some shoveling and we're almost neighbors, so we should be hanging out more.
I know, I know.
Let me, let's get in touch. So let's do it.
We'll be in touch. Yeah, sounds good. All right, Kathleen, Thanks again, and thank you, dear listener. We'll talk to you next time on dot net rocks. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut, and of course
in the cloud online at pwop dot com. Visit our website at d O T N E T R O c k S dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and two. And make sure you check out our sponsors. They keep us in business. Now go write some code. See you next time.
You got Jamal Vans and
