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