Speaker 1: How'd you like to listen to dot net rocks with
Speaker 1: no ads? Easy? Become a patron for just five dollars
Speaker 1: a month. You get access to a private RSS feed
Speaker 1: where all the shows have no ads. Twenty dollars a month.
Speaker 1: We'll get you that and a special dot net Rocks
Speaker 1: patron mug. Sign up now at Patreon dot dot NetRocks
Speaker 1: dot com. Welcome back. It's dot neir Rocks. I'm Carl
Speaker 1: Franklin and I'm Richard Campbell. And what was that voice?
Speaker 1: I don't know, trying to make it interesting for the people.
Speaker 1: You know, Okay, I believe you. I don't know. I
Speaker 1: got nothing. You got some Rocky lockez here for the
Speaker 1: five hundred and forty ninth time on dot net rocks.
Speaker 2: Yeah. No, I was going to do account and then
Speaker 2: I gotan out of fingers and toe, so I stopped.
Speaker 1: It's episode nineteen, one hundred and seventy three. So let's
Speaker 1: talk about what happened in that year. Oh boy, Yeah,
Speaker 1: it's not good news. A few things, so Roe v Wade, Yes, right,
Speaker 1: I guess that's good news. Lennon Johnson went to that
Speaker 1: big Cadillac in the sky.
Speaker 2: Though he wasn't president at that point anyway.
Speaker 1: Yeah, former president. Yeah. The Paris Peace Accords for Vietnam
Speaker 1: in the end of the Vietnam War. Yeah, some social movements,
Speaker 1: Occupation of Wounded Knee. Members of the American Indian Movement
Speaker 1: occupied Wounded Knee South Dakota to protest against the US
Speaker 1: government's treatment of Native Americans. The first p Flag Meeting
Speaker 1: PFLAG first formal meeting of parents of Gays took place
Speaker 1: on a March eleventh, making a significant moment in LGBTQ
Speaker 1: plus advocacy. Let's see Super Bowl seven. On January fourteenth,
Speaker 1: Miami Dolphins completed a perfect season by defeating the Washington Redskins,
Speaker 1: becoming the first NFL team to achieve this feet But also,
Speaker 1: did you know that this is the year that hip
Speaker 1: hop started no in the Bronx in New York City,
Speaker 1: laying the foundation. The oil crisis began in nineteen seventy three,
Speaker 1: the first oil crisis anyway, October, leading to a significant
Speaker 1: increase in oil prices and economic challenges in the US.
Speaker 1: I think Jerry Lee Lewis made a notable appearance at
Speaker 1: the Grand Ole Opry on January twenty, marking his transition
Speaker 1: to country music. And there's a whole bunch of other things.
Speaker 1: But Richard, what's going on in science and tech?
Speaker 2: Wait, there's a couple of important ones. How about the
Speaker 2: how about the yam Kapur War? How about Nixon resigning? Yeah,
Speaker 2: and Ford becoming president? Like this is the culmination of Watergate.
Speaker 1: So we were six, but I actually do remember seeing
Speaker 1: Nixon on our black and white TV goings there you go.
Speaker 1: I actually remember that. I'm like, who's that?
Speaker 3: You know?
Speaker 1: That's our present guy.
Speaker 2: He isn't president anymore, and you and you had to
Speaker 2: make someone president who'd never been elected anything because Spiro
Speaker 2: Agnew had resigned earlier the same year.
Speaker 1: Yeah, it's you know, there's nothing fishy or funny or
Speaker 1: corrupt or anything about us politics, is it. Everything's fine,
Speaker 1: everything's fine, Everything is awesome.
Speaker 2: Should we start with should we go to space? Side? Now?
Speaker 1: Yeah, let's go to space.
Speaker 2: Okay, because Paulo seventeen. Paul seventeen was last year, and
Speaker 2: it was the last of the Apollo missions to the Moon.
Speaker 2: But it wasn't the end of Apollo yet. This was
Speaker 2: the year the sky Lab launched, where they took the
Speaker 2: third stage of the Saturn five and turned it into
Speaker 2: an extremely large space station, the only one that the
Speaker 2: Americans have ever built from scratch. Everything else has been
Speaker 2: Russian based since then. It was only used for about
Speaker 2: a year. There was three missions to it Skylab two, three,
Speaker 2: and four, and then it was never occupied again. It
Speaker 2: was only supposed to last one hundred and forty hundred
Speaker 2: fifty days, and it went longer than that, and then
Speaker 2: they were not sure what to do with it. You know,
Speaker 2: making long duration stuff in space is very difficulty. Arguably,
Speaker 2: of the three missions that went to the number four
Speaker 2: was the most famous. It was also the longest. It
Speaker 2: was this eighty four day mission, but about six weeks
Speaker 2: in there was kind of a revolt on board. You know,
Speaker 2: normally these Apollo missions were pretty short, less than two
Speaker 2: weeks total, and so you were scheduled in fifty minute increments.
Speaker 2: Everything was planned. But six weeks into that kind of intensity,
Speaker 2: the crew was kind of like, hey, you know, we're
Speaker 2: falling behind schedule. We're all pretty tired, Like can we
Speaker 2: dial this down? And one orbit they didn't turn the
Speaker 2: radio on for a whole orbit.
Speaker 1: Now I bet it was the food Richard, but.
Speaker 2: They didn't complain the food was planned, and it was
Speaker 2: a flight that went over Thanksgiving.
Speaker 1: There you go.
Speaker 2: But I think it was actually the beginning of the
Speaker 2: tuning of what is it long duration space flight really
Speaker 2: going to look like and how you treat people, and so,
Speaker 2: you know, one would argue this was the first of
Speaker 2: the sort of sensitivity trainings that ever happened involving.
Speaker 1: Yeah, are not, M two are not? M two are not?
Speaker 2: And in seventy four they returned and those three never
Speaker 2: flew again, and oddly enough, and nobody ever went to
Speaker 2: Skylab again. There were a couple of proposed missions to
Speaker 2: go back to it to reboot it. There was the
Speaker 2: Apollo Soyu's missions we'll talk about in seventy five. But
Speaker 2: ultimately the Skylab was lost in nineteen seventy nine and
Speaker 2: then uncontrolled re entry. It was supposed to be saved
Speaker 2: by the Space Shuttle because they'd run out of Apollos
Speaker 2: at that point anyway, but the Shuttle didn't actually fly
Speaker 2: until eighty one, so missed it.
Speaker 1: Now.
Speaker 2: Part of that was because there was a solar maximum,
Speaker 2: so the atmosphere was actually larger than expected and caused
Speaker 2: Skylab to re enter faster than known at the time,
Speaker 2: we were still learning things about how the solsystem actually works.
Speaker 1: Man, I can't wait to talk about the Space Shuttle.
Speaker 1: Oh God, I hear you have a few things to
Speaker 1: say about that.
Speaker 2: May have heard a few of them, just a few.
Speaker 2: The only other space one I'll mention is they returned
Speaker 2: to flight for sous so I used twelve and back
Speaker 2: in seventy one the SOYUS eleven tragedy after as they
Speaker 2: visited Salute one they had a depressurization and the crew
Speaker 2: was lost on re entry, and so twelve was their
Speaker 2: return to flight after two years. They were supposed to
Speaker 2: dock with Salut two, except for that part where SALU
Speaker 2: two wasn't there because it had failed also, so they
Speaker 2: only spent forty eight hours in orbit, tested a bunch
Speaker 2: of new safety equipment in gear, and then re entered
Speaker 2: all right over to some other tech. This is the
Speaker 2: year of the first cellular phone call. Wow, Martin Cooper
Speaker 2: Motorola in New York City demonstrating a device called the
Speaker 2: DINA TACK standing for Dynamic Adaptive Total Area coverage because
Speaker 2: it was the cell concept being able to move node
Speaker 2: to node automatically as the phone moved around, so the
Speaker 2: Diyne attack weighed about four pounds two kilos, pretty heavy,
Speaker 2: and his very first call was to his rival Joe
Speaker 2: Engel over at and T. He told him, tell him
Speaker 2: he got it working, and it would be a few
Speaker 2: years before the dash.
Speaker 1: Lists might have sounded something like this, Nina, something like that,
Speaker 1: sucket mother.
Speaker 2: Let's talk about three PCs introduced in nineteen seventy three.
Speaker 2: The first is the Xerox Alto from Xerox Park, the
Speaker 2: very first Guey based computer ever. And adjacent to that,
Speaker 2: also at Xerox Park, was the introduction of the concept
Speaker 2: of ethernet by Robert Metcalf as part of his PhD dissertation.
Speaker 2: Although he wouldn't the wouldn't actually he basically wrote about
Speaker 2: in his dissertation in seventy three, they would follow the
Speaker 2: patent at seventy five do the first test in seventy six,
Speaker 2: becomes commercial nineteen eighty and becomes an noun triple ease
Speaker 2: Standard EIGHTOHO two dot three in nineteen eighty three.
Speaker 1: Wow.
Speaker 2: Second computer is the IBM fifty one hundred, the special
Speaker 2: apl Machine portable or scamp, led by one doctor Paul Friedel,
Speaker 2: part of him. It's the fifty one hundred said, this
Speaker 2: makes it the precursor to the fifty one fifty also
Speaker 2: known as the IBMPC, and it ran apl on a
Speaker 2: custom platform, and it was considered a luggable so fold
Speaker 2: out keyboard on the bottom little screen, but you know,
Speaker 2: good thirty forty pounds, so not exactly easy to carry around.
Speaker 2: And last, but not Nie, the mccralle. This is one
Speaker 2: of the first computers built on the Intel eight zero
Speaker 2: zero eight, so the second CPU built by Intel. The
Speaker 2: company is R two E. It's a French company. The
Speaker 2: founder is Thai Trum, who's also designer of the mccrall computer,
Speaker 2: but his software for the machine is being built by
Speaker 2: one Philip Kahn Wow, aka the guy who would go
Speaker 2: on to found Borland about ten years later. That's what
Speaker 2: I got, and that was Leno's boss. Yeah at one time,
Speaker 2: back in the day. Yeah, and Andrews too. I think, Yeah,
Speaker 2: there's a lot of things happening computers in nineteen seventy three.
Speaker 1: Yeah, this is this is like an unfolding drama that's
Speaker 1: going on here. And it's really getting exciting around here.
Speaker 1: I mean there was the sixties were great, but man,
Speaker 1: it's just gonna get nuts.
Speaker 2: We're inching towards the PC wor old bit by bed
Speaker 2: and I look at I know where this how where
Speaker 2: this goes?
Speaker 1: As you do?
Speaker 2: You know?
Speaker 1: Yeah? So these are the stories I'm pulling, like, these
Speaker 1: are great stories.
Speaker 2: I only just learned about scam like that that there
Speaker 2: was a precursor of fifty one fifty was the fifty
Speaker 2: one hundred and.
Speaker 1: But once we get to the next computer, I have
Speaker 1: a story that will blow your mind. But I bet okay,
Speaker 1: let's do better. No framework roll music awesome?
Speaker 2: Alight, man? What do you got?
Speaker 1: This is a trending GitHub repo. It's from the repository
Speaker 1: of Joseph Nemick. That's j O S E F N
Speaker 1: E M E C. And it's play Night p L
Speaker 1: A I N I T E. You guys are like this.
Speaker 2: What's a play Night?
Speaker 1: It's an open source video game library manager and launcher
Speaker 1: with support for third party libraries like Steam, Epic, EA, app, Battle,
Speaker 1: dot Net, and others. It includes game emulation support, providing
Speaker 1: one unified in for interface for your games.
Speaker 2: M Okay, is this.
Speaker 1: Something that's of interest to you? Because I don't really
Speaker 1: play video games?
Speaker 2: Yeah?
Speaker 1: You know, but I know you guys do.
Speaker 2: Steam is kind of the dominant game host, right, that's
Speaker 2: Gabe Newell Dalf And then you know, almost every game
Speaker 2: is inside a Steam and most people are like, if
Speaker 2: it is no Steel, I'm not buying it.
Speaker 1: Yeah.
Speaker 2: Famously, Epic are the Fortnite guys, and so they didn't
Speaker 2: want to be in Steam. They wanted they try to
Speaker 2: set up their own system. There's a few games over there,
Speaker 2: and then Battlenet is Blizzard, and EA app is of
Speaker 2: course Electronic Cards now a privately owned company taken off
Speaker 2: the market and owned by a Saudi conglomerate.
Speaker 1: I don't know that's an upbring interesting Rocky. You play games, right.
Speaker 3: Yes I do, but I can't argue with what Richard
Speaker 3: just said. It's basically everything's on Steam.
Speaker 1: Right, Yeah, so what about EA app or all those
Speaker 1: other things like are well just insignificant now?
Speaker 2: Yeah, comparatively, that's Electronic Arts attempt at having a studio,
Speaker 2: but you can generally get any EA game office team.
Speaker 1: Any Okay, Well, you know that I thought it would
Speaker 1: surprise you guys with something you think was cool. But
Speaker 1: I guess.
Speaker 2: If I actually had a bunch of stuff in Epic
Speaker 2: like if I was a Fortnite fan. Yeah, you know,
Speaker 2: it doesn't make sense for me to have some kind
Speaker 2: of common console for this.
Speaker 1: It's an interesting idea. Well, I figured there must be
Speaker 1: a reason why it's trending, So yeah, maybe there's something
Speaker 1: we don't know. Okay, well that's what I got. Richard,
Speaker 1: who's talking to.
Speaker 2: Us, grabbed a comment off a show eighteen eighty six,
Speaker 2: the one we did with one Rocky Lockout. Maybe you
Speaker 2: heard of them. Back in February twenty four. Talking about
Speaker 2: CSLA eight, we got one comment. This is from Casa
Speaker 2: Jan who said, I love the lighthearted nature of these
Speaker 2: podcasts and I don't want that aspect to change. But
Speaker 2: having said that, sometimes it's all too common to have
Speaker 2: handwaving in the episode of something critical that makes the
Speaker 2: rest of this episode difficult to listen to. And I'll
Speaker 2: use this episode as example. Although it's not an isolated incident,
Speaker 2: by the time the house got around to talking about CSLA,
Speaker 2: I think they forgot that. The guests never explained what
Speaker 2: it was, not even a five second below.
Speaker 1: H That's that's my fault. I probably fell asleep on
Speaker 1: the job because you know, with us is on nine
Speaker 1: and we've covered every single version since one.
Speaker 2: Probably, well, I suspect we're going to talk about it
Speaker 2: again today, so I probably we will want to bring
Speaker 2: that up. But yeah, we better tell them what it is.
Speaker 2: And Cassa, thanks for your comment and a reminder that
Speaker 2: not everybody's listened to every episode, and let's face it,
Speaker 2: at nineteen hundred and seventy three episodes, you probably shouldn't.
Speaker 1: No, I wouldn't.
Speaker 2: That's a lot of shows. But a copy of music
Speaker 2: Cobe is on his way to you. And if you'd
Speaker 2: like a copy of music Cobe, I write a comment
Speaker 2: on the website at dot at rocks dot com or
Speaker 2: on the facebooks. We publish every show there, and if
Speaker 2: you comment there and I read it on the show,
Speaker 2: we'll send you copy of music coe By.
Speaker 1: And that's music to Code by at music to code
Speaker 1: by dot net. They're twenty five minute tracks of instrumental
Speaker 1: music that are neither too boring or two jarring. They're
Speaker 1: perfect for getting you into a state of flow and
Speaker 1: keeping you there. Twenty two tracks, MP three wave and
Speaker 1: flak format Music to Code by dot Net. All right, Rocky,
Speaker 1: I mean, do we read his do we even read
Speaker 1: his bio?
Speaker 2: We must blessed.
Speaker 1: We'll get an email from somebody who's like, who is
Speaker 1: this guy? Right? This guy, but he's been on so
Speaker 1: many dot net rock shows from the very early days,
Speaker 1: but he is. Are you retired now? Are you still
Speaker 1: chief software architect at Merrymurr.
Speaker 3: I'm not retired. I can call myself semi retired, but yes,
Speaker 3: I am a.
Speaker 1: Chief But Merrimur is your company, right, Marmur.
Speaker 3: Is my company. And then I also am a VP
Speaker 3: at ZBA and so I do some cool stuff there
Speaker 3: as well.
Speaker 1: And you're a Microsoft Regional director and an MVP and
Speaker 1: ably the earliest dot net author there was, certainly for
Speaker 1: VB dot net. You did. You and Billie Hollis did
Speaker 1: the first book on VB dot net during the beta
Speaker 1: of dot net.
Speaker 3: Yes, wrote that book in six weeks.
Speaker 1: That was at And you're the author of c s
Speaker 1: l A dot Net Rocky. What is c s l
Speaker 1: A dot Net.
Speaker 3: I'm glad you asked, Carl.
Speaker 1: No, it just came to me.
Speaker 3: Yeah. It turns out that the we for forever, it seems,
Speaker 3: we've had these fantastic frameworks for building user experiences, Blazer
Speaker 3: being you know, the latest and best so far. In
Speaker 3: my opinion, and uh, and we've had all sorts of
Speaker 3: frameworks for talking to databases and od b C and
Speaker 3: entity framework.
Speaker 1: Uh.
Speaker 3: And then you know, you get these situations where you're writing,
Speaker 3: let's say, real application that has business logic, where does
Speaker 3: the business logic go? That that's the question, right, And
Speaker 3: so you put it in the UI, but you're not
Speaker 3: supposed to put it in the UI. You put it
Speaker 3: in the database. But oh my god, who wants to
Speaker 3: put it in the database?
Speaker 1: Really? How much?
Speaker 2: Well did you want to write?
Speaker 3: Yeah?
Speaker 1: Right?
Speaker 3: And so that's that is what CSLA is all about,
Speaker 3: is being a home for business logic from trying to
Speaker 3: elevate business logic to the same level of structure and
Speaker 3: repeatability and maintainability that you get with these other frameworks
Speaker 3: for the UI or data access.
Speaker 1: Right. So first there was two tier, which is UI
Speaker 1: and database, right, And there was three tier, which is
Speaker 1: UI and something in the middle that has some business
Speaker 1: logic and that makes calls to your database. And then
Speaker 1: there was just n tier, which is well, you might
Speaker 1: have multiple middle tiers and you know you have like
Speaker 1: a one point a business service that has pure business logic,
Speaker 1: and then managers for your data access. And then I've
Speaker 1: even seen people, do you know, three tiers in the
Speaker 1: middle just for abstraction purposes, And I don't know. I
Speaker 1: think we went a little nuts with the tiers. But
Speaker 1: now am I wrong?
Speaker 3: Oh no, you're right, you're right. And here's where I
Speaker 3: always distinguished because CSLA supports the idea of tiers, which
Speaker 3: are all these multiple machines connected by networks. But what
Speaker 3: is really important is the concept of layering and separation
Speaker 3: of concern right, and.
Speaker 1: So logical tiers versus physical tiers.
Speaker 3: There you go. Yeah, So even if all your software
Speaker 3: is we're running on one computer, like on a mobile phone.
Speaker 3: You got your UI layer and you got your business
Speaker 3: layer and your data access layer and it's all running
Speaker 3: on the phone. That doesn't mean you should throw away
Speaker 3: separation of concerns. You should still layer your software to
Speaker 3: keep it organized in a way that is maintainable over time.
Speaker 1: Right. And you know we're spoiled, you and I at
Speaker 1: least because after using Blazer, you know, we took this
Speaker 1: idea of MVVM and it's like, well, why do we
Speaker 1: need this anymore? I mean, you know, the Blazer UI
Speaker 1: framework is so split already, and so easy to separate
Speaker 1: logic from UI code, that it seems like overkill to
Speaker 1: make a view model in twenty twenty five.
Speaker 3: Well, I agree, because of course I am a strong
Speaker 3: proponent of using CSLA, and CSLA suggests that when you
Speaker 3: create domain objects, that you create them in the shape
Speaker 3: needed by the user scenario, and the UI is created
Speaker 3: in the shape needed by the user scenario. And so
Speaker 3: if you're using these things right, you're creating your UI
Speaker 3: with blazers say, and then underneath it you create your
Speaker 3: domain object that is serving the same end goal. And
Speaker 3: then you do have to have some sort of mapping
Speaker 3: layer to talk to the database because the data, usually
Speaker 3: the data is in a relational structure that is not
Speaker 3: designed to support the user scenario.
Speaker 1: And that's fine, yeah, especially if you throw you know,
Speaker 1: an API in the mix and you've got a web
Speaker 1: assembly application and now you've got DTOs to deal with,
Speaker 1: and yep, it gets more complex from there.
Speaker 3: You know. What's interesting though, is that I not that
Speaker 3: long ago, was writing a WPF sample for CSLA, and
Speaker 3: I thought, you know, could I use dependency injection in
Speaker 3: WPF like blazer does. And it turns out the answers yes,
Speaker 3: and If you do that, your WPF looks you're The
Speaker 3: way you build the app is substantially different. It's actually
Speaker 3: almost identical to the way you do it in Blazer.
Speaker 3: And yet again, you don't really feel the need for
Speaker 3: m VVM anymore because the just the way that modern
Speaker 3: dot net works, like the way they've built it for well,
Speaker 3: the way they built Blazer. If you echo that, you
Speaker 3: get all the same benefits. And I don't know why
Speaker 3: you would do WPF anymore, but yeah.
Speaker 1: Yeah, well you know it's true. If I'm gonna do
Speaker 1: w PF, I'm probably gonna do a hybrid right Blazer
Speaker 1: code stand exam.
Speaker 2: But that's you know, Rocky Billy becoming for you right now.
Speaker 1: You know, Billy Billy's coming around, isn't he? I think
Speaker 1: he is. He's like, he's pretty cool like it.
Speaker 3: I can sense a future episode where somebody has written
Speaker 3: in saying, why did Rocky you know slam w PF
Speaker 3: like that.
Speaker 1: Yeah, don't learn about it stand in line, my friend.
Speaker 2: Well, and the same time, I've heard, you know, through
Speaker 2: the grape frind internally like WPF getting more focus right
Speaker 2: that that they with the win UI sort of peeling
Speaker 2: away like this is going to be the Windows way
Speaker 2: going forward. I just haven't seen a lot of love,
Speaker 2: like how many folks are actually working on this and
Speaker 2: where is the real progress being made?
Speaker 1: How many folks are building Windows apps?
Speaker 3: Yeah, well that's the real question, isn't it.
Speaker 1: Yeah? Yeah, who?
Speaker 3: And it's not zero though, because I talked to people
Speaker 3: at conferences, different events, and I'll talk about you know,
Speaker 3: why you should or shouldn't consider using Blazer and some
Speaker 3: of the pros and cons, and almost always there's one
Speaker 3: or two people that are like, oh, well, we only
Speaker 3: do Windows. We only plan to do Windows because all
Speaker 3: of our users are on Windows, and why why would
Speaker 3: we care about all this other stuff? And I mean
Speaker 3: it's a teeny minority, but you know.
Speaker 2: Nah phones, tablets, who needs that?
Speaker 1: So to answer the question out a CSLA dot net,
Speaker 1: we kind of went backwards a little bit. But going
Speaker 1: back into history. You wrote this in the age of
Speaker 1: Windows applications, where you had stateful data objects, business objects,
Speaker 1: and they were all stateful right on the web. You know,
Speaker 1: state is something that is created and constructed, but in
Speaker 1: Windows everything is right there in the app. And I
Speaker 1: remember you having multiple layers of undo, right, you had
Speaker 1: persistence and all sorts of features that if you were
Speaker 1: going to code them yourself would just be kind of
Speaker 1: a nightmare. And then on top of that, they were
Speaker 1: really really useful features. So looking in twenty twenty five,
Speaker 1: would people be looking to use CSLA dot net with
Speaker 1: say a greenfield Blazer application, or you really just supporting
Speaker 1: your existing users to bring them into the you know,
Speaker 1: twenty first century or both?
Speaker 3: I probably both. I would really like to think. Well,
Speaker 3: and and I do know that a lot of the
Speaker 3: CSLA user base are using and shifting the blazer cool
Speaker 3: and it turns and it's because it's largely what you
Speaker 3: said in that the UH CSLA is really good if
Speaker 3: you have a dot net and stateful client, right, and
Speaker 3: so WPF, Windows Forms, Windows phonesilver Light, all those technologies
Speaker 3: throughout the years.
Speaker 1: Well, if you don't know what that is, just just skipping,
Speaker 1: don't just ignore it.
Speaker 3: In episode two thousand and ten, you'll you'll get an
Speaker 3: earful two thousand I'm just looking looking into your guys's future.
Speaker 1: That's just too close, Like you're going to burn through this.
Speaker 3: Uh. But you know, Blazer is a stateful UI technology too,
Speaker 3: with or without web assembly, I mean either way, it
Speaker 3: is inherently stateful and it has an even better data
Speaker 3: binding story than did and so those two things combined
Speaker 3: are what really makes c s l A at its peak.
Speaker 3: And so yeah, I definitely am in a spot where
Speaker 3: we continue to support c s l A all, you know,
Speaker 3: for all the old UI technologies, and sometimes I really
Speaker 3: wish we could get rid of let's say, Windows Forms
Speaker 3: or Windows forms.
Speaker 1: Or Windows Form or.
Speaker 3: Maybe Windows Yeah, but that's just not realistic. But all
Speaker 3: all the focus for the last several years has been
Speaker 3: entirely on, uh, this first class experience for Blazer, because
Speaker 3: because Blazer is so nice and combined with CSLA, it's
Speaker 3: just I think phenomenal.
Speaker 1: So let me guess because I have not seen c
Speaker 1: s LA dot net nine for Blazer, but I can
Speaker 1: probably guess of some of the things that you put
Speaker 1: in there just for Blazer, like maybe some navigation breadcrumbs,
Speaker 1: back buttons, support, navigation stack, that kind of thing. Is
Speaker 1: that in there?
Speaker 3: That is not because that's all well, that's all UI
Speaker 3: level stuff.
Speaker 1: Yeah yeah, but no, but it's also navigation, which is
Speaker 1: something that you did in Windows Forms, didn't you.
Speaker 3: No, no, no, no. C s l A is always trying.
Speaker 1: All right, Hang on a second, I got to put
Speaker 1: down the crack pipe. Let me just tat down over there. Okay,
Speaker 1: I'm sorry, what were we saying saying? Wow?
Speaker 3: I mean the where c s l A helps the
Speaker 3: UI is that that the c s l A rules
Speaker 3: engine is more powerful than just validation, and so it
Speaker 3: not only has validation errors, but also warnings and informational results.
Speaker 3: And then there's a whole subsystem for authorization about what
Speaker 3: what users can and can't interact with different types of
Speaker 3: domain object and even all the way down to the
Speaker 3: property level. And so there there are helpers for all
Speaker 3: the UI frameworks to elevate those concepts to be first class,
Speaker 3: you know, bindable or easily accessible, so that you can
Speaker 3: make your UI so that parts of the U I
Speaker 3: appear and disappear if the user can or can't see
Speaker 3: a thing or something like that. And of course Blazer
Speaker 3: does all that too. Yeah, And so that's where a
Speaker 3: lot of the work is is integrating. So c SLA,
Speaker 3: for example, exposes a set of pre built dynamic authorization policies,
Speaker 3: and of course Blazer supports policies through the authorized authorized
Speaker 3: view and all the other cool stuff they've got, and
Speaker 3: so those two things combined together, so you can just say,
Speaker 3: oh this, you know, like like can the user see
Speaker 3: or not see the employee salary?
Speaker 1: Right?
Speaker 3: Yeah, you can just tell Blazer to use this policy.
Speaker 3: And the policy doesn't do anything. It just looks at
Speaker 3: the business rules that are in the rule engine, and
Speaker 3: the UI turns turns on or off at part of
Speaker 3: the with the user sees. So it's really neat stuff.
Speaker 1: I was using an app today that i'm working on
Speaker 1: for but with a team for a customer, and uh,
Speaker 1: how a problem with something? And one of the guys said, yeah,
Speaker 1: take a look in this part of the app that
Speaker 1: he's been working on, and so I go there and
Speaker 1: I get a blank screen and it's because I don't
Speaker 1: have the authorization to see that, like that bit didn't
Speaker 1: get flipped or whatever. But there was no message that
Speaker 1: said I'm sorry, you don't know, please wait or nothing,
Speaker 1: just like boom blank, I got nothing.
Speaker 3: How well, and I'm teaching and you might do this too,
Speaker 3: and you're teaching about the authorization stuff. In Blazer. There's
Speaker 3: the heavy hammer, which is the authorized attribute. Right just
Speaker 3: as y'all can't even get to this page, no, I'm
Speaker 3: like that that is rarely useful.
Speaker 1: It routes you to the login screen.
Speaker 3: Yeah yeah, well or yeah or wherever. Yeah, but in
Speaker 3: real life, I mean, how useful is that?
Speaker 1: You know that.
Speaker 3: You probably actually to your point when user to see something,
Speaker 3: say someday you don't have access to them.
Speaker 1: You want a sorry page, right, Richard? Sorry?
Speaker 2: Yeah?
Speaker 1: What is one of the three error messages? Right? Yeah?
Speaker 2: Three perfect air images?
Speaker 1: Is what?
Speaker 3: How?
Speaker 1: And sorry? Right?
Speaker 2: You pretty much covered everything at that point that's not
Speaker 2: happening for you. Oh that's fair. Should we take a break.
Speaker 1: Yeah, let's do that. Wow, it's really only it's already
Speaker 1: been almost half an hour, so yeah, let's take a
Speaker 1: break and we'll be right back with more from Rocky
Speaker 1: Lockcap to these very important messages. Did you know you
Speaker 1: can easily migrate asp net web apps to Windows containers
Speaker 1: on AWS. Use the app to container tool to containerize
Speaker 1: your iis websites and deploy to AWS managed container services
Speaker 1: with or without Kubernetes. Find out more about app to
Speaker 1: container at AWS dot Amazon dot com, slash, dot net,
Speaker 1: slash modernize, And we're back. It's dot net rock So
Speaker 1: I'm Carl Franklin. That's Richie Campbell. Hey, that's our friend
Speaker 1: Rock for the LUCA. Hello. Hello, and yeah talking to
Speaker 1: c s l A dot nine, you said most of
Speaker 1: the focuses on Blazer in this version.
Speaker 3: Yeah, Well two things in nine Blazer Blazer, Blazer.
Speaker 1: And did I mention Blazer?
Speaker 2: Oh and also Blazer.
Speaker 3: And then the other thing is and there's a cool
Speaker 3: story behind this, but the there's a bunch of code
Speaker 3: generation that was introduced in nine that are really I
Speaker 3: think come to maturity in ten, so very soon, because
Speaker 3: we're very much working on ten to come up with
Speaker 3: dot net ten. Yeah, and the code generation radically reduces
Speaker 3: the amount of code that you have to write in
Speaker 3: a typical business class. And the story behind this is
Speaker 3: that there's a company or organization group that's using CSLA
Speaker 3: to write some software. And I had never encountered this before,
Speaker 3: but it's a very cool thing. So what they did
Speaker 3: is they didn't want to give money directly to like
Speaker 3: to CSLA, to me or whatever. They wanted to fund
Speaker 3: people to develop though against the CSLA backlog, and so
Speaker 3: they set up, Yeah, they went on a job board
Speaker 3: and literally set up a contract that anybody who wanted
Speaker 3: to apparently could go sign up for the contract, follow
Speaker 3: some set of guidelines, and become a CSLA contributor, and
Speaker 3: then they would get compensated. And I was not party
Speaker 3: to any of this. This was all wow to me.
Speaker 3: I thought it was some sort of scam originally, like
Speaker 3: people are coming to be going, hey, how do I
Speaker 3: get this work? And I'm like, what are you talking about? Work?
Speaker 2: But I see the see I see the difference in
Speaker 2: the shape of your release in nine, because normally you've
Speaker 2: got I don't know, eight to ten twelve items in
Speaker 2: a given release, and then nine is like sixty.
Speaker 3: Oh it was. It was well, yeah, because we had
Speaker 3: I think four or five people that stepped up and
Speaker 3: did stuff, and a couple of people did a lot
Speaker 3: of stuff, including this one guy from Brazil that wrote
Speaker 3: all these code generators to do a whole bunch of
Speaker 3: cool stuff. Wow, And probably the biggest one and the
Speaker 3: one that we're we didn't it's there in nine and
Speaker 3: technically it works, but I think it'll be robust in ten.
Speaker 3: Is the way I look at it. That, Yeah, it
Speaker 3: generates partial classes, so that most of what you would
Speaker 3: have written in a CSLA business class, it just writes
Speaker 3: for you and you never see it, right, because it's
Speaker 3: in one of those dot G files. And yeah, very
Speaker 3: very cool. Yeah, very exciting.
Speaker 2: And in nine to one two, which is a little
Speaker 2: more recent, which is this past June, you still got
Speaker 2: a huge number of changes in there. Although it seems
Speaker 2: like fewer people, it does seem like it kicked off
Speaker 2: a momentum.
Speaker 3: Yeah, the contract dropped off, so the people looking to
Speaker 3: do this just for the money went away, but then
Speaker 3: a couple of people stayed and then so with all
Speaker 3: the momentum, other people joined in. Yeah. So yeah, that's
Speaker 3: been fantastic and there's been.
Speaker 1: So these guys are managing the pull requests and approving
Speaker 1: them and if they got approved then they would pay
Speaker 1: for them. Or how did that work? Do you know?
Speaker 3: Well I was approving the poll requests or another really
Speaker 3: valuable contributor named Stephan from Germany has become a you know,
Speaker 3: it has that level of trust and but yeah, so
Speaker 3: this company apparently was paying out based on the prs
Speaker 3: being accepted, not by them but by me basically.
Speaker 2: Okay, and did you ever speak to them?
Speaker 3: Well, eventually I did get an email contact with them
Speaker 3: and they're like, oh, yeah, we're holding this big piece
Speaker 3: of software. CSLA is at the center of it. We
Speaker 3: felt the need for, you know, to make sure CSLA
Speaker 3: was moving fast and knocked down the backlog some and
Speaker 3: so we just thought we would help. Well that's wow,
Speaker 3: that's great, Wow, fantastic, right, How cool is that?
Speaker 1: What a great success story for an open source project
Speaker 1: that began? G's when when was it when it started?
Speaker 3: Ninety six?
Speaker 1: Wow?
Speaker 3: Nineteen ninety six.
Speaker 2: Now, I mean, were you really even open source? Then?
Speaker 2: Source doesn't mean the same thing in nineteen ninety six.
Speaker 3: No, it was a freeware at that point.
Speaker 1: I was just a party of book.
Speaker 3: Yeah, yeah, yeah, and it was yeah, it was. The
Speaker 3: term open source did exist at that point, but you know,
Speaker 3: it was it was nascent, i would say, compared to
Speaker 3: it is today. And freeware and sharewear were pretty common terms,
Speaker 3: and so it was. It was released as freeware that
Speaker 3: you could get.
Speaker 1: Right is the internet by the book the software.
Speaker 3: The Yeah, the Internet didn't really exist either, so the
Speaker 3: only way to get to software was the CD in
Speaker 3: the back of the book.
Speaker 2: Yeah.
Speaker 1: Sure.
Speaker 2: And even you know, when I think about really old
Speaker 2: source control solutions, you know, open source solutions, I think
Speaker 2: I like something like source forge. But even that's like
Speaker 2: ninety nine, two thousand.
Speaker 3: Like, no, my my source control back then was having
Speaker 3: backups on different folders or on a CD or something.
Speaker 3: It was excellent, it was at some point, but I
Speaker 3: think it might not have been until I started doing
Speaker 3: dot net. I don't remember. I started using uh, what
Speaker 3: was it called, not subversion, the CVS, the predecessor to subversion, Yeah,
Speaker 3: concurrent versioning system.
Speaker 1: Yeah.
Speaker 3: And uh and I even set up my own server,
Speaker 3: I think for that for sure, I did because I
Speaker 3: switched to subversion and I had my own server, and
Speaker 3: that's what source forage I think originally started out being
Speaker 3: a subversion serversion. And then when GET came out, I
Speaker 3: didn't jump on it right away, even though a couple
Speaker 3: of colleagues were like, oh no, you got to eat
Speaker 3: It's so much better, and I'm like, yeah, this is working.
Speaker 3: Why would I.
Speaker 2: Yeah, And by better, I mean more hostile, like it
Speaker 2: was not.
Speaker 1: It was not a friendly tool.
Speaker 3: No, not at all.
Speaker 1: If you if you're a Unix monk, you could probably
Speaker 1: pick it up easier than that's Windows guys.
Speaker 3: And yeah, the tooling got better and somebody one one
Speaker 3: of the people I worked with at the time, and
Speaker 3: eventually was like, here, I will port your entire history
Speaker 3: into GET just to get you there, because it's.
Speaker 2: I want, I want you to do this that badly.
Speaker 2: I'm going to do the work.
Speaker 3: For you exactly. It's embarrassing to know that you're not
Speaker 3: using this thing.
Speaker 1: Nice, awesome.
Speaker 3: That was probably two thousand and three or something, I'm guessing.
Speaker 2: Yeah, I was thinking of Tortoise SVN. I think that
Speaker 2: was the last thing I used before switching to GET.
Speaker 3: Yeah, I used Tortoise all It was awesome, absolutely.
Speaker 2: Yeah, it was integrated with the Windows shell like it
Speaker 2: was just I got used to using source control for
Speaker 2: kind of everything, you know, and in the Tortoise world, yep.
Speaker 1: Yeah.
Speaker 2: And now it's all gethub all the time, for better
Speaker 2: or worse. Yep.
Speaker 3: Well, and once you wrap your head around it, yeah
Speaker 3: it's probably for better.
Speaker 2: But yeah, not that I want to hijack us into
Speaker 2: an AI conversation, but I have to wonder, you know,
Speaker 2: yes you do, how much maintenance you start doing with
Speaker 2: c SLA, with some of the dev tools that are
Speaker 2: using llms for this, because you've got such a mature
Speaker 2: code base, like I could imagine an LM functioning really
Speaker 2: well on.
Speaker 3: It, it does and it doesn't. I have probably three
Speaker 3: different angles to talk about that. Since you've hijacked the conversation.
Speaker 1: Now you've done it, Richard, like what I've done, We're
Speaker 1: going to get all kinds of ail and hate messages.
Speaker 3: So one of the angles is maintaining csla's actual source
Speaker 3: code using copilot agent mode or cursor or something like that,
Speaker 3: and that works within limited bounds. And the reason I
Speaker 3: say it that way is because the CSLA code base
Speaker 3: is not only mature, but it's kind of big.
Speaker 1: Yeah, and there's a lot of tokens.
Speaker 3: It's a lot of tokens, and they frequently find that
Speaker 3: I'll get part way through doing something with the AI
Speaker 3: and the AI will go I can't function token the
Speaker 3: contact bag. My head hurts. You're on your own, kid, give.
Speaker 1: Me some time and all.
Speaker 2: Yeah, just just like your cruise control or your full
Speaker 2: cell trap and going bebep on you, dude, I'm out.
Speaker 1: Please put your hands on the wheel.
Speaker 3: So for for some things, it works, you know, if
Speaker 3: if things of limited scope, I find that it actually
Speaker 3: is pretty. But like one of the things I hoped
Speaker 3: to do intend that I don't think is going to
Speaker 3: happen because it's it's just no matter how you look
Speaker 3: at it, it's a huge thing. And it's merging, merging
Speaker 3: two of the biggest classes in the framework to into
Speaker 3: something else. And uh for those that are C S
Speaker 3: l A people, that's it's taking the business rules engine
Speaker 3: from business Base and putting it into Business list Base,
Speaker 3: so that you could have not only a collection, which
Speaker 3: is what business list Base is, but it could also
Speaker 3: directly have properties with all the power and capability of
Speaker 3: a normal class that has properties. And I have doing
Speaker 3: it by hand is daunting, and I'm like, oh no,
Speaker 3: the LM will help me. And I have tried it
Speaker 3: many times in many different ways, and thus far, every
Speaker 3: time it has completely either started hallucinating or run out
Speaker 3: of context space and give me an error. So I
Speaker 3: do think that it shows that you know and I
Speaker 3: use don't get me wrong. I use AI and copile
Speaker 3: it agent mode for lots of stuff and cursor and
Speaker 3: it's fantastic. But when confronted with something of this size
Speaker 3: and compla, it clearly just falls flat.
Speaker 1: You take a too big a bite too. I think
Speaker 1: that's too large a skill. I've had that situation before,
Speaker 1: where you know, I tell it to generate. I can't
Speaker 1: remember what it was, a big enum that had like
Speaker 1: a thousand different things on it something I can't remember
Speaker 1: what it was, but it stopped out about half maybe
Speaker 1: half third of the way down, and it was dot
Speaker 1: dot dot. You do the rest. If something like that,
Speaker 1: you put the rest here, it's like, okay, can you
Speaker 1: give me values fifty through one hundred, Sure, no problem,
Speaker 1: fifty ninety eight and then you do the rest.
Speaker 2: It's like, come on, we're paging with an LLM now, yeah, yeah,
Speaker 2: I mean it's interesting to see it hit limits like
Speaker 2: that too.
Speaker 3: So the second angle that I'll talk about is people
Speaker 3: concluding myself, that are writing code that uses CSLA and
Speaker 3: then copilot is pretty darn good because of course Copilot
Speaker 3: was trained on I suppose it doesn't. It depends on
Speaker 3: which model, but generally speaking, right, they're trained on open
Speaker 3: source code. Well, CSLA is open source, and so it's like, yay,
Speaker 3: I understand all this stuff, and there's tons of examples
Speaker 3: out there in the world.
Speaker 1: Whatnot.
Speaker 3: The problem with it is that the same thing that
Speaker 3: us as humans have If you google something, it's like, oh,
Speaker 3: I found the answer. Ah, that was the answer from him.
Speaker 3: Fifteen years ago or five years ago or and so.
Speaker 2: The answer fifteen years ago is reflection.
Speaker 3: Exactly. You know, the code patterns have changed, and even
Speaker 3: with CSLA, we try really hard to do backward compatibility,
Speaker 3: and so in some cases the code will even still work.
Speaker 3: It's just like, man, I wouldn't do it that way now,
Speaker 3: you know.
Speaker 1: So back to CSLA, done that features. I noticed that
Speaker 1: you're using gRPC for a few things. What are you
Speaker 1: using that for? Well?
Speaker 3: gRPC? So one capability of CSLA is to move object graphs,
Speaker 3: generally speaking, between a server where it can talk to
Speaker 3: the database and the client where it can talk to
Speaker 3: the user. And over the years, CSLA has supported dot
Speaker 3: net remoting and ASMX and WCF and.
Speaker 1: You finally came to your senses.
Speaker 3: Well, for a really long time, I would say for
Speaker 3: twenty years, it's been extensible pluggable. Yeah, and so the
Speaker 3: path the technology almost everybody uses is HTTP. But it
Speaker 3: does support gRPC for people that want, you know, slightly
Speaker 3: better performance or smaller payloads over the wire, that sort
Speaker 3: of thing, significant better performance, yeah, right.
Speaker 1: And what about dot net remoteing binary formatter?
Speaker 2: Yeah, like that perform Back to two thousand.
Speaker 1: And two, well, g RPC is kind of like that.
Speaker 1: You know, it's a binary serializer. Yeah, it's very efficient,
Speaker 1: and it's a stream of bites that gets hydrated and rehydrated.
Speaker 3: But without some of the security issues that came along
Speaker 3: with remote.
Speaker 1: Oh yeah, pretty issues.
Speaker 2: I can't imagine what you're talking about. Call my machine,
Speaker 2: it'll be fine.
Speaker 1: So that's cool. So imagine it's just like, uh, you
Speaker 1: just say something like, hey, I want to move this
Speaker 1: object over there. Just do that.
Speaker 3: Yeah, right, and yeah, in fact, the current three protocols
Speaker 3: that are maintained I guess, I mean HTTP is like
Speaker 3: in the box because that's you know, then g r PC,
Speaker 3: and then I've got a rabbit MQ one because I
Speaker 3: thought it should that should be possible, and I wanted
Speaker 3: to prove to myself that it was. I don't know
Speaker 3: that anybody who's actually used it. But of course that's
Speaker 3: kind of cool because it puts your outbound request on
Speaker 3: a queue that could be picked up by any one
Speaker 3: of a number of machines that are listening.
Speaker 1: Yeah, process guaranteed delivery kind of thing.
Speaker 3: Yeah, and then the response comes back on a return
Speaker 3: queue and yeah, it works great. It's really nifty.
Speaker 1: That's nice.
Speaker 3: You want global scale and resiliency, that's certainly the a
Speaker 3: technology worth exploring.
Speaker 1: Right. Every time I'm doing a Blazer talk and we
Speaker 1: come to the point where I'm showing signal R and
Speaker 1: people are like, wow, that's amazing, I'm like, yeah, all right, Well,
Speaker 1: before you get too excited, just know that if you're
Speaker 1: not listening when a message comes in, it's gone. Yeah, Like,
Speaker 1: this doesn't guaranteed delivery. Yeah, this doesn't take the place
Speaker 1: of a queue or a bus or anything like that.
Speaker 1: It's just you know, hey, if you happen to be listening,
Speaker 1: here's a message for you.
Speaker 3: Yeah. Yeah, I characterize it very much like a Blazer
Speaker 3: turns the browser into a thirty two seventy terminal.
Speaker 1: Yeah. Nice.
Speaker 3: Not only people with gray hair understand that anymore.
Speaker 2: But yeah, do you even know why that's funny?
Speaker 1: Do you? Yeah? You probably haven't idea.
Speaker 3: There's always that that group of people in the audience
Speaker 3: that laugh and I do it for them, be.
Speaker 1: Good, but thank goodness. Yeah, having a queue or a
Speaker 1: bus is just a really great thing, especially when you
Speaker 1: have network outages and you know you want to you
Speaker 1: want to make sure that those things get delivered. Because
Speaker 1: they're kind of important.
Speaker 3: They certainly can be.
Speaker 1: So what else? Uh, what else is in there that
Speaker 1: we should talk about in not version nine?
Speaker 3: Ah, let's see just so many things. That's this is long. Yeah,
Speaker 3: the list is long.
Speaker 1: I'm gonna Signon's a contributor.
Speaker 3: I'm in crop well and and so there was a
Speaker 3: whole bunch of that too. So although that's mostly invisible
Speaker 3: is behind the scenes, there was this he did and
Speaker 3: it just jumped in and said, you know what, let
Speaker 3: me modernize your code base, and which is pretty amazing
Speaker 3: when you think about.
Speaker 1: It, and.
Speaker 3: You know, so you get I guess technical debt right,
Speaker 3: which I've I've had people do well, technical debt doesn't
Speaker 3: really exist or whatever, But I don't know, don't don't
Speaker 3: ask me, man, I've been I'm like, I kind of
Speaker 3: I kind of think it does.
Speaker 1: Uh.
Speaker 3: And so it turns out though that if somebody were
Speaker 3: to have and I think what Simon used was Rider,
Speaker 3: because a whole lot of writer type stuff showed up
Speaker 3: built you know, in the repo, but basically running tons
Speaker 3: and tons of refactorings. In my philosophy, because this code
Speaker 3: base is so big and so old, has always been
Speaker 3: that when I go into a file and I have time,
Speaker 3: I will modernize that file. But the idea of like
Speaker 3: literally wholesale going through the whole framework, well, thankfully he
Speaker 3: did that for me, I should say.
Speaker 2: You know, it's like like a migration to get he's
Speaker 2: an somebody else, is it?
Speaker 3: Yeah, And so I mean hard to argue, right that
Speaker 3: that's just phenomenal And we're actually getting a bunch of
Speaker 3: that too in c s l A ten. Although this
Speaker 3: is a breaking change and is something that Stefan has
Speaker 3: been working on for months, which is adding in null
Speaker 3: ability support. Oh my, and yeah, yeah that I mean
Speaker 3: it touches almost everything, and it's kind of like acync
Speaker 3: A weight or generics where once you start it affects
Speaker 3: your code base from top to bottom.
Speaker 1: Yeah, can't avoid it, right.
Speaker 3: Yeah, right, So it's it's a huge amount of work
Speaker 3: that that. So Simon did all this stuff in nine
Speaker 3: and then Stefan did all this stuff in ten, and
Speaker 3: life is going to be just almost infinitely better in
Speaker 3: terms of being maintainable and taking advantage of modern sea
Speaker 3: sharp features and that sort of thing, just working in
Speaker 3: this code base.
Speaker 1: Right, I hope you send him a pizza.
Speaker 3: Yeah, he's in Australia. I guess I could, though I
Speaker 3: could figure out a way you.
Speaker 1: Have it delivered and you know, you'd have to wake
Speaker 1: up in the middle of the night, deticate there in
Speaker 1: the morning.
Speaker 2: Something like that, and probably can order in advance. Probably
Speaker 2: it's a question, is what's what's a good pizza in
Speaker 2: Australia because they're you know, they put beats on their burgers.
Speaker 1: You don't know what to do, that's true, they do. Yeah,
Speaker 1: well you can't go wrong with shrimp.
Speaker 3: Oh, I don't know.
Speaker 2: Maybe it's all fun game till the allergies kick in.
Speaker 1: Right, That's what I was thinking, shrimp scampy pizza. Okay.
Speaker 3: So yeah. Another big thing along this line, and in
Speaker 3: the geeky end of the world is AOT ahead of
Speaker 3: time compilation stuff, right, which because csl A is like
Speaker 3: UI Frameworks and that it does a lot of pretty
Speaker 3: dynamic things, and so parts of c sl A can't
Speaker 3: be AOT compiled. But in order to play well in
Speaker 3: the AOT world, you're supposed to now document that through
Speaker 3: attributes in your code, and so a whole bunches of
Speaker 3: work went into attributing different types and parameters and we're
Speaker 3: basically trying to tease out where where can we let
Speaker 3: the aot uh you know compiler, uh actually compile stuff?
Speaker 3: And where do we have to prevent it?
Speaker 1: I wonder if I wonder if Simon is a robot.
Speaker 3: I wonder, man that dude appears to drop in as
Speaker 3: a hobby. I don't know. It's different open source projects
Speaker 3: and just go here. Let me make your world better
Speaker 3: if you look at it at Simon's history, uh commit history.
Speaker 3: It's just amazing, man.
Speaker 2: It's just it's just a green wall.
Speaker 1: He's contributed to a few of my projects too. He's great. Yeah,
Speaker 1: but uh that's crazy. What else can you tell us
Speaker 1: here with? You know, seven minutes to go?
Speaker 3: Oh the last the last AI thing that I have
Speaker 3: been experimenting with. Carl's like, oh man, more AI, and
Speaker 3: Richard's like yay more AI.
Speaker 1: No, No, you know, I live and breathe it every day.
Speaker 1: It's just that I know that some of our listeners,
Speaker 1: you know, they like just switch it up once while.
Speaker 3: But I tried building and did in fact build an
Speaker 3: MCP server for CSLA. Oh cool, oh wow? And so
Speaker 3: what does it do? Well? It returns It's kind of
Speaker 3: like the Microsoft docs MCP server in that if the
Speaker 3: lll M wants to find information about how to do
Speaker 3: modern CSLA stuff, it can ask the it can do
Speaker 3: a search. It's got two tools I guess they call them.
Speaker 3: Tool Number one is search, so I can basically search
Speaker 3: for how do I do a thing, and it'll get
Speaker 3: back a list of scored results, which are just our
Speaker 3: markdown documents, usually with code snippets, and then it can
Speaker 3: fetch one of one or more of those code snippets
Speaker 3: and then use them to do the right thing when
Speaker 3: it's generating. And it works both in like ask mode
Speaker 3: and agent mode. I guess you'd say, because it'll do
Speaker 3: this to go find the information to explain to the
Speaker 3: developer here's how you do it, or here's how it works.
Speaker 3: But it'll also do it in agent mode, so that
Speaker 3: if you.
Speaker 1: Say, oh, it will actually change your code.
Speaker 3: Yeah, go create this property or modernize this property, it'll go, oh, well,
Speaker 3: how do I do that? And it'll go find the
Speaker 3: current code.
Speaker 1: And so what's involved in making an MCP server.
Speaker 3: Well, it turns out that Microsoft and Anthropic work together
Speaker 3: just over the last few months to create a new
Speaker 3: GET package that makes it pretty darn easy to create
Speaker 3: a MCP server in C sharp and you just attribute
Speaker 3: some things and it does, magic happens, and everything is fine.
Speaker 3: It happens well, because I was trying to do it
Speaker 3: without and it was hard to get. The protocol is
Speaker 3: just a pain, right, And so.
Speaker 1: You're just exposing data points, aren't you, and search terms
Speaker 1: or how what are you doing?
Speaker 3: Yeah, but you have to conform to the right some
Speaker 3: semantics for the calls on the endpoint and the right
Speaker 3: Jason formats in and out. Okay, there's a whole bunch
Speaker 3: to the protocol and basically they implemented it in this
Speaker 3: new get package. So all you need to do is
Speaker 3: implement a method that says search and then however it
Speaker 3: is that you want to do the search, and whether
Speaker 3: you're using vector searching, you know, like RAG type stuff
Speaker 3: with vectors, I'm not. I'm actually just doing what a
Speaker 3: mathematician would call a naive implementation, where I just literally
Speaker 3: do full text searching against my you know what, have
Speaker 3: I got like a dozen text files to say? You know,
Speaker 3: do I do a lot of the words match? And
Speaker 3: if they do, then this is a good match, you know.
Speaker 3: And I tried the thing, by the way, and it
Speaker 3: was not as good because the vector thing is trying
Speaker 3: to get some sort of meaning out of my code samples,
Speaker 3: and it works out better to just do for my scenario,
Speaker 3: it works better to just do looking for keywords.
Speaker 1: Well, clearly, Richard, we're going to have to have somebody
Speaker 1: on who can tell us all about building all my radars.
Speaker 1: But I don't want to make this put it all
Speaker 1: on Rocky. But I'm so curious. Now, if I had
Speaker 1: an application that had a lot of functionality that you know,
Speaker 1: in building out all this UI to do stuff that
Speaker 1: is ultimately functionality, right, whether it's all in an API
Speaker 1: layer or whatever, I could build an MCP interface for
Speaker 1: that and have it work like you would build a
Speaker 1: UI am I off base with that.
Speaker 3: Well, the consumer of your MCP server is the ll
Speaker 3: M is an ll M, right, Yeah, So if you're
Speaker 3: if you're asking like in this scenario, I'm like, hey, LLLM,
Speaker 3: you know Cloud go out and you know Sonet, go
Speaker 3: out and create a business class for customer with these properties.
Speaker 3: And it'll be like, oh, I don't know how to
Speaker 3: do that, or at least I don't know how to
Speaker 3: do it correctly. I will look at your MCP server
Speaker 3: have a small side conversation, you know, brush up, and
Speaker 3: then it can turn around and go, oh okay, I
Speaker 3: see how to do this, and then it will generate
Speaker 3: all the code with Like I said, one of the
Speaker 3: drawbacks if you don't do this is that it will
Speaker 3: generate the code, but it's often using older techniques or whatever.
Speaker 1: Well, in your case, I see, what it's doing is
Speaker 1: finding code. But what if you have an application itself? Right?
Speaker 1: What if I have an application that has an API
Speaker 1: endpoint to create a customer and I want to tell
Speaker 1: my LLLM hey on this application, go create a customer
Speaker 1: with this name and that name and this name and
Speaker 1: the other thing, and return back to the customer.
Speaker 3: I D That's what MCP does. Yeah, among I mean you,
Speaker 3: MCP can do a lot of things, right. It can information,
Speaker 3: but it can also take action, right. And so when
Speaker 3: when you're using copilot and agent mode, it's actually using
Speaker 3: tons of MCP tools to create files and delete files
Speaker 3: and do all the other stuff because that the AIS
Speaker 3: can't do those things, so they use the mcps to
Speaker 3: do that.
Speaker 1: Got it?
Speaker 3: And so yeah, you could absolutely create an MCP server
Speaker 3: that updates your database by adding a customer.
Speaker 1: And now, of course that has all sorts of security implications,
Speaker 1: but let's not get into that now.
Speaker 3: So, yeah, what I did is the super simplest thing, right,
Speaker 3: which is just all I'm doing is providing information to
Speaker 3: educate the But what I also think is now that
Speaker 3: I've now I understand how to do it and how
Speaker 3: easy it is, I can see where any organization that
Speaker 3: has their own coding standards or their own approach to
Speaker 3: implementing security I don't know, whatever it might be, their
Speaker 3: own UI standards could probably take my code as a
Speaker 3: base and go, ah, it's pretty easy to go create. Yeah,
Speaker 3: you know this thing that just documents that. So the
Speaker 3: AI is doing the right thing within my organization.
Speaker 1: Very cool.
Speaker 2: Yeah, it's a powerful topic, and it's certainly what I've
Speaker 2: been looking at to say, you know, how far we're
Speaker 2: going to go with this. I have a bunch of thoughts,
Speaker 2: but looking for the right guests, so we'll figure it out.
Speaker 1: I always have a bunch of thoughts when I talk
Speaker 1: to Rocky, for sure, even if it's at breakfast in
Speaker 1: Stockholm at six o'clock in the morning. The best thoughts
Speaker 1: before somebody goes to the airport you know. Yeah, all right, well, Rocky,
Speaker 1: it's always great to talk to you, and congrats on
Speaker 1: a new framework. When was it released, by the way, nine.
Speaker 3: Nine was released at the beginning of this year earlier.
Speaker 2: Yes, it was like February and in June.
Speaker 1: And then you'll have ten with in November, hopefully shortly after.
Speaker 3: Shortly after. Yeah, we'll have a We'll have a pre
Speaker 3: release in November for sure.
Speaker 1: Oh good, all right man. Well, it's good to talk
Speaker 1: to you again, and we will talk to you, dear
Speaker 1: listener 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: facilities located physically New London, Connecticut, and of course in
Speaker 1: the cloud online at pwop dot com. Visit our website
Speaker 1: at d O T N E t R O c
Speaker 1: 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 1: You got Jamtle Vans and