Speaker 1: 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 2: Yeah. No, I was going to do account and then
I gotan out of fingers and toe, so I stopped.
Speaker 1: It'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 2: Though he wasn't president at that point anyway.
Speaker 1: Yeah, 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 2: Wait, 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 1: So 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 3: You know?
Speaker 1: That's our present guy.
Speaker 2: He 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 1: Yeah, 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 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
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 1: Now I bet it was the food Richard, but.
Speaker 2: They didn't complain the food was planned, and it was
a flight that went over Thanksgiving.
Speaker 1: There you go.
Speaker 2: But 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 1: Yeah, are not, M two are not? M two are not?
Speaker 2: And 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 1: Now.
Speaker 2: Part 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 1: Man, I can't wait to talk about the Space Shuttle.
Oh God, I hear you have a few things to
say about that.
Speaker 2: May 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 1: Lists might have sounded something like this, Nina, something like that,
sucket mother.
Speaker 2: Let'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 1: Wow.
Speaker 2: Second 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 1: Yeah, 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 2: We're inching towards the PC wor old bit by bed
and I look at I know where this how where
this goes?
Speaker 1: As you do?
Speaker 2: You know?
Speaker 1: Yeah? So these are the stories I'm pulling, like, these
are great stories.
Speaker 2: I only just learned about scam like that that there
was a precursor of fifty one fifty was the fifty
one hundred and.
Speaker 1: But 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 2: Alight, man? What do you got?
Speaker 1: This 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 2: What's a play Night?
Speaker 1: It'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 2: M Okay, is this.
Speaker 1: Something that's of interest to you? Because I don't really
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
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 1: Yeah.
Speaker 2: Famously, 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 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
just said. It's basically everything's on Steam.
Speaker 1: Right, Yeah, so what about EA app or all those
other things like are well just insignificant now?
Speaker 2: Yeah, comparatively, that's Electronic Arts attempt at having a studio,
but you can generally get any EA game office team.
Speaker 1: Any Okay, Well, you know that I thought it would
surprise you guys with something you think was cool. But
I guess.
Speaker 2: If 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 1: It'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 2: Us, 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 1: H 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 2: Probably, 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 1: No, I wouldn't.
Speaker 2: That'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 1: And 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 2: We must blessed.
Speaker 1: We'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 3: I'm not retired. I can call myself semi retired, but yes,
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
at ZBA and so I do some cool stuff there
as well.
Speaker 1: And 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 3: Yes, wrote that book in six weeks.
Speaker 1: That was at And you're the author of c s
l A dot Net Rocky. What is c s l
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,
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 1: Uh.
Speaker 3: And 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 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,
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 1: Right. 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 3: Oh 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 1: So logical tiers versus physical tiers.
Speaker 3: There 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 1: Right. 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 3: Well, 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 1: And 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 3: You 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 1: Yeah, 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 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
he is. He's like, he's pretty cool like it.
Speaker 3: I can sense a future episode where somebody has written
in saying, why did Rocky you know slam w PF
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
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 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
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 2: Nah phones, tablets, who needs that?
Speaker 1: So 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 3: I 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 1: Well, if you don't know what that is, just just skipping,
don't just ignore it.
Speaker 3: In 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 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,
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 1: Or Windows Form or.
Speaker 3: Maybe 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 1: So 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 3: That is not because that's all well, that's all UI
level stuff.
Speaker 1: Yeah yeah, but no, but it's also navigation, which is
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
down the crack pipe. Let me just tat down over there. Okay,
I'm sorry, what were we saying saying? Wow?
Speaker 3: I 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 1: Right?
Speaker 3: Yeah, 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 1: I 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 3: How 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 1: It routes you to the login screen.
Speaker 3: Yeah yeah, well or yeah or wherever. Yeah, but in
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,
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
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
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 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
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 2: But 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 3: Oh 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 2: And 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 3: Yeah, 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 1: So 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 3: Well 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 2: Okay, and did you ever speak to them?
Speaker 3: Well, 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 1: What a great success story for an open source project
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?
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
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 1: Right is the internet by the book the software.
Speaker 3: The 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 2: Yeah.
Speaker 1: Sure.
Speaker 2: And 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 3: Like, 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 1: Yeah.
Speaker 3: And 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 2: Yeah, And by better, I mean more hostile, like it
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
pick it up easier than that's Windows guys.
Speaker 3: And 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 2: I want, I want you to do this that badly.
I'm going to do the work.
Speaker 3: For you exactly. It's embarrassing to know that you're not
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
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
was just I got used to using source control for
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
or worse. Yep.
Speaker 3: Well, and once you wrap your head around it, yeah
it's probably for better.
Speaker 2: But 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 3: It, it does and it doesn't. I have probably three
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
going to get all kinds of ail and hate messages.
Speaker 3: So 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 1: Yeah, and there's a lot of tokens.
Speaker 3: It'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 1: Me some time and all.
Speaker 2: Yeah, just just like your cruise control or your full
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
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 1: You 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 2: It'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 3: So 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 1: Whatnot.
Speaker 3: The 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 2: The answer fifteen years ago is reflection.
Speaker 3: Exactly. 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 1: So 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 3: gRPC? 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 1: You finally came to your senses.
Speaker 3: Well, 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 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.
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 3: But without some of the security issues that came along
with remote.
Speaker 1: Oh yeah, pretty issues.
Speaker 2: I can't imagine what you're talking about. Call my machine,
it'll be fine.
Speaker 1: So 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 3: Yeah, 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 1: Yeah, process guaranteed delivery kind of thing.
Speaker 3: Yeah, and then the response comes back on a return
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
technology worth exploring.
Speaker 1: Right. 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 3: Yeah. Yeah, I characterize it very much like a Blazer
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
that laugh and I do it for them, be.
Speaker 1: Good, 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 3: They certainly can be.
Speaker 1: So what else? Uh, what else is in there that
we should talk about in not version nine?
Speaker 3: Ah, let's see just so many things. That's this is long. Yeah,
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
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 1: It, and.
Speaker 3: You 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 1: Uh.
Speaker 3: And 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 2: You know, it's like like a migration to get he's
an somebody else, is it?
Speaker 3: Yeah, 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 1: Yeah, can't avoid it, right.
Speaker 3: Yeah, 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 1: Right, I hope you send him a pizza.
Speaker 3: Yeah, he's in Australia. I guess I could, though I
could figure out a way you.
Speaker 1: Have it delivered and you know, you'd have to wake
up in the middle of the night, deticate there in
the morning.
Speaker 2: Something 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 1: You don't know what to do, that's true, they do. Yeah,
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
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 1: I wonder if I wonder if Simon is a robot.
Speaker 3: I 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 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,
but uh that's crazy. What else can you tell us
here with? You know, seven minutes to go?
Speaker 3: Oh 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 1: No, 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 3: But 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 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,
how do I do that? And it'll go find the
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
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 1: You're just exposing data points, aren't you, and search terms
or how what are you doing?
Speaker 3: Yeah, 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 1: Well, 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 3: Well, 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 1: Well, 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 3: I 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 1: Got it?
Speaker 3: And so yeah, you could absolutely create an MCP server
that updates your database by adding a customer.
Speaker 1: And now, of course that has all sorts of security implications,
but let's not get into that now.
Speaker 3: So, 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 1: Very cool.
Speaker 2: Yeah, 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 1: I 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 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
release in November for sure.
Speaker 1: Oh 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