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