Speaker 1: Hey Richard, Hey Carl, what do you know?
Speaker 2: Well, I know that our friend Michelle Rubusta Monte is
Speaker 2: with us to tell us about something that's going on
Speaker 2: adjacent to DEV Intersection.
Speaker 1: What is it?
Speaker 3: It's cybersecurity Intersection. Let's let Michelle tell that story.
Speaker 4: Hey Michelle, Hey Carl, Hey Richard, how are you.
Speaker 2: Tell us about cybersecurity Intersection?
Speaker 4: Well, so, Richard and I are partnering with the group
Speaker 4: that does DEV Intersection and next Gen AI, and we
Speaker 4: are putting on a new conference dedicated to one hundred
Speaker 4: percent security focused topics. And I mean, honestly, the lineup
Speaker 4: of speakers is incredible. We have Paula A. Jenis, who's
Speaker 4: here from Poland and does keynotes all over the world
Speaker 4: and is one of the top rated RSA speakers and
Speaker 4: black hat speaker. We're so lucky to have her. But
Speaker 4: she's not only keynoting, she's got a workshop teaches you
Speaker 4: about protecting your environments against hackers and shows you about
Speaker 4: how to you know, do attacks so that you can
Speaker 4: prevent them. It's pretty cool and sessions like that as well.
Speaker 4: But we also have speakers from Microsoft. We have we
Speaker 4: have speakers that specialize in you know secure coding practices,
Speaker 4: Azure security, Zuero, trust architectures on Azure UH and people
Speaker 4: who do decision maker tracks, so things around governance policy
Speaker 4: and you know how to how to manage and your
Speaker 4: production operations keep them secure. So it's an amazing group
Speaker 4: of speakers, really excited about it.
Speaker 2: And I think I can count myself among the group
Speaker 2: of speakers there.
Speaker 4: Well, yes you can. That is great.
Speaker 2: Yeah, I'm doing a securing Blazer Server applications talk and
Speaker 2: also I think we're doing a Security this Week live
Speaker 2: show there somewhere that is correct.
Speaker 4: Yeah, we'll be recording Security this Week Live. We're going
Speaker 4: to have a great panel with some folks. The interesting
Speaker 4: thing here is we don't really have a Microsoft and
Speaker 4: dot net and Azure focused toecurity conference yet, so that's
Speaker 4: the reason we're putting this on as well. You know
Speaker 4: there are other security conferences, but they have a spread
Speaker 4: of topics that maybe don't focus on the things you
Speaker 4: do day to day. And you know this overlaps with
Speaker 4: again our community of folks that specialize in again dot net,
Speaker 4: Azure and yeah, they need to keep it secure too,
Speaker 4: So with tons of talks.
Speaker 3: Cyber Intersection is part of a trio of conferences we're doing.
Speaker 3: They have Intersection alongside the next Gen AI Conference all
Speaker 3: in Orlando the week of October fifth through tenth. That's
Speaker 3: workshops and the main conference. And you can get a
Speaker 3: special registration code if you sign up through Cybersecurity Intersection
Speaker 3: dot com.
Speaker 4: Yeah, so if you sign up at Cybersecurity Intersection dot com,
Speaker 4: then you put in this code so Alliance cyber three
Speaker 4: hundred and you'll get three hundred off the entry price.
Speaker 4: So that's a special code that only works at cybersecurity
Speaker 4: dot com. And then you have access to all the conferences.
Speaker 2: Like Richard said, Wow, that's cool. Thanks Michelle. I'm looking
Speaker 2: forward to it and I'll see you there. Hey, guess what.
Speaker 2: It's dot net Rocks. I'm Carl Franklin and I'm Richard
Speaker 2: Kemp and we're here for episode number nineteen hundred and
Speaker 2: sixty eight.
Speaker 1: A good year for your listening.
Speaker 2: Pleasure, for your listening pleasure. Yes, So David Wensche is
Speaker 2: here and we're going to talk to him in a minute.
Speaker 2: But first, how are you, mister Campbell. I haven't checked
Speaker 2: in with you in a while.
Speaker 3: You know, post summer going into the fall conference season,
Speaker 3: I'm literally going to be traveling all of October. I'm
Speaker 3: doing like five shows and two user groups back to back. Wow,
Speaker 3: and the boss is not coming with me because you
Speaker 3: looked at it? What nah?
Speaker 2: I was just that was my next question. Is Stacy
Speaker 2: coming with you?
Speaker 3: No, no, she's not. We'll be together a dev intersection.
Speaker 3: Oh cool? Yeah, well you and I. Stacy's not coming
Speaker 3: for that one either, but yeah, okay Intersection and then
Speaker 3: the Azure Dev Summit and then the Norwegian show is
Speaker 3: this tron time and Stavanger.
Speaker 2: I looked at my schedule for dev Intersection. I signed
Speaker 2: up for a lot of stuff. Yeah, yeah, and put
Speaker 2: you to work there. I'm going to be well, you
Speaker 2: sign up for something out yourself. I know, I brought
Speaker 2: it on myself.
Speaker 1: Yeah.
Speaker 3: You made that talk with Maddie, which is really going
Speaker 3: to be cool. You know, it's spiifying.
Speaker 2: Rocks dot com in front of a live audience.
Speaker 3: I think you're crazy, but I love it. It is crazy,
Speaker 3: you know me as the conference owner, delighted me as
Speaker 3: your co host.
Speaker 1: What are you doing?
Speaker 2: What are you doing? Especially because you've seeing my code right?
Speaker 1: Yeah? I know.
Speaker 3: I you usually don't fly that close to the sun. Right,
Speaker 3: you know that, guy. I've seen your demos. They're polished,
Speaker 3: their routine they work every time.
Speaker 2: You know, they haven't all been polished. I've had some clams.
Speaker 3: It's funny anyway, it's going to be a riot.
Speaker 2: In the early days of Zamorin, I remember spending the
Speaker 2: first half of the workshop just getting people to Hello
Speaker 2: World because it was so difficult.
Speaker 3: No, you should have done the workshop called get Zamoran
Speaker 3: running on your machine.
Speaker 2: Yeah, that's basically the first half of the day. Yeah,
Speaker 2: it got easier as time went on, but back in
Speaker 2: the day, that's what we did. All right, let's run
Speaker 2: the crazy music for better no framework?
Speaker 1: Awesome? All right, what do you got?
Speaker 2: Well? Me, being a Blazer guy, I found this trending
Speaker 2: and true repo on GitHub from Mista Howard m I
Speaker 2: S T A h O W A r D And
Speaker 2: it's Blazer dash. Why Dash did Dash? You Dash render?
Speaker 2: Blazer Why did you render?
Speaker 3: So it's a powerful I wonder what this does, carlus.
Speaker 2: It's a performance monitoring and debugging tool for Blazer apps.
Speaker 2: Helps identify unnecessary rerenders and optimize component performance across server,
Speaker 2: web assembly and service side rendered environments. That's fantastic, And
Speaker 2: if you look down the features, one of the one
Speaker 2: of the best one is unnecessary render detection. Find components
Speaker 2: that re render without actual changes. Interesting and it's so
Speaker 2: easy to do. Basically, anytime you do a state has
Speaker 2: changed in Blazer, you're forcing a rerender, but you don't
Speaker 2: always need to. And I find that this is one
Speaker 2: of the things the nuances of Blazer that most developers
Speaker 2: don't understand. When should I do state has changed, when
Speaker 2: should I not? And when should I do invoke sync
Speaker 2: state has changed, which has more to do with the
Speaker 2: UI thread than it does a sink. But you basically,
Speaker 2: anytime you have a UI and event like a button
Speaker 2: click or something like that that's triggered from UI and
Speaker 2: you write some code, you do not have to rerender
Speaker 2: after that, it's automatically done. When you do have to
Speaker 2: rerender is when you have like a callback from JavaScript
Speaker 2: or a timer or something that isn't started on the
Speaker 2: UI thread. That's when you do that. But doing some
Speaker 2: code reviews and stuff, I see it's all over the map.
Speaker 2: People just throw state has changed in there as an
Speaker 2: insurance policy, but it's unnecessary. So this is a great
Speaker 2: tool for that.
Speaker 1: Awesome.
Speaker 2: Yeah, well that's what I got. Who's talking to us today?
Speaker 3: Richard grabbed a comment off a show fourteen seventy five,
Speaker 3: just back in September twenty seventeen, or were talked to
Speaker 3: Jesse Shadwick about the new Razor Pages in Core to
Speaker 3: Core two. A bit of a flashback. I know, I
Speaker 3: love it, Oh my god, but the comments are awesome
Speaker 3: on this show.
Speaker 2: Wait a minute, what episode number was that.
Speaker 3: Fourteen seventy five, five hundred shows ago?
Speaker 2: Oh my god, that's like right before Columbus Sail the
Speaker 2: Ocean Blue. We weren't doing the what happened this year
Speaker 2: back then? Yeah?
Speaker 1: No, please don't.
Speaker 3: All of that history is questionable at best.
Speaker 2: Yeah right.
Speaker 3: This comment comes from Saint Forever, which I suspect is
Speaker 3: not their name. Also, a regular comment on the show
Speaker 3: is including today the current shows. Wow, and they go
Speaker 3: on to say another great show. I've been looking forward
Speaker 3: to the show ever since it was first listed as
Speaker 3: an upcoming show because we used to do that, used
Speaker 3: to show the upcoming roster. We don't anymore, right indeed.
Speaker 3: Asp doi net Coror Razor Pages is a well architected
Speaker 3: programming model for developing modern WebUI. Microsoft recommended it as
Speaker 3: the best way to build both simple and complex webuyes
Speaker 3: and as the way forward for billy web locations. With
Speaker 3: all all the MVCs ceremony and please Carl and Richard
Speaker 3: at BEG you keep them coming great shows on Razor pages.
Speaker 3: Developers will adopt this program all the logue full well
Speaker 3: the Dotta ros Dowy shows on Razor Pages, and it
Speaker 3: will help them make the choice. Yeah, okay, I mean
Speaker 3: it's been a few years, but sure, let's do one. Yeah, okay, sure,
Speaker 3: so thanks. See, Yeah, we're with you. We're a big
Speaker 3: fan of Razor Pages. That's certainly what the run as
Speaker 3: site is built out of. And although the the Dotta
Speaker 3: rock side is Blazer, of course that's my friend Carl's
Speaker 3: a big Blazer fan. Getting smallt we'll we'll keep on
Speaker 3: doing a thing. Yeah, And a copy of music Coby
Speaker 3: is on its way to you. And if you'd like
Speaker 3: a copy of music Cobe, I write a comment on
Speaker 3: the website at dot NetRocks dot com or on the facebooks.
Speaker 3: You publish every show there, and if you comment there
Speaker 3: and I'm reading the show, we'll send you copy of music.
Speaker 2: Go and music to codeby is what we're talking about,
Speaker 2: still going strong after all these years. Twenty two tracks,
Speaker 2: twenty five minutes long each, perfect for those Pomedoro units
Speaker 2: when you want to slip in and out of focus easily,
Speaker 2: and that's at music toocoby dot net. Then we have
Speaker 2: the collection in MP three flak and wave formats, and
Speaker 2: that brings us to nineteen sixty eight, which is the
Speaker 2: leader of the show and the things that happened in
Speaker 2: nineteen sixty eight. Some bad things happened in nineteen sixty eight.
Speaker 2: Martin Luther King was assassinated, Bobby Kennedy was assassinated. The
Speaker 2: Tet offensive. On January thirtieth, Vietnamese forces launch a surprise
Speaker 2: attack across South Vietnam. The DNC protests in Chicago deep
Speaker 2: divisions over the deep Vietnam War and civil rights. I
Speaker 2: remember getting back to the Beatles from last week, Paul
Speaker 2: McCartney was saying, Yeah, they told us not to be political.
Speaker 2: You know when they say, what do you think about Vietnam? Oh,
Speaker 2: bad woo, bad wolf, that's it. Yeah, two thousand and one.
Speaker 2: A Space Odyssey was released in sixty eight. Yeah, Summer Olympics.
Speaker 2: First time the public heard the phrase artificial intelligence. Yeah, ever,
Speaker 2: that's right, that's the first time. Yeah. Summer Olympics in
Speaker 2: Mexico City notable for the black Power sloop by American
Speaker 2: athletes Tommy Smith and John Carlos during the metal ceremony.
Speaker 2: So you know, this is nothing new, this American No,
Speaker 2: this is part of the history.
Speaker 1: Yeah.
Speaker 2: A Civil Rights Act of nineteen sixty eight was signed
Speaker 2: into law. Great stuff, addressing housing discrimination and making a
Speaker 2: significant step in the civil rights movement. And I'll let
Speaker 2: you talk about Apollo eight.
Speaker 3: Well, you know, an amazing because last week's show we
Speaker 3: were talking about the disaster apollowed one. Yeah, and the
Speaker 3: three astronauts lost there. And so just shy of two
Speaker 3: years later, the first humans ever leave the Earth and
Speaker 3: go beyond low Earth orbit. They Level Andmbornman and Andrews
Speaker 3: go around the Moon a free return trajectory. They get
Speaker 3: the famous photograph earth Rise by anders Yeah, and they
Speaker 3: read from Genesis.
Speaker 1: Yeah.
Speaker 3: But Level is also the guy who held his arm
Speaker 3: out at full length and covered the Earth with his thumb.
Speaker 3: It's like everything we've ever known YEP is behind my thumb. Yeah,
Speaker 3: it's crazy, crazy cool. It was an extraordinary moment and
Speaker 3: a real positive one, and for better or worse, it
Speaker 3: was also there was a serious picture at that moment
Speaker 3: to end the Apollo program. At that point, the Americans
Speaker 3: had finally were ahead on the space rice. They'd now
Speaker 3: done something that the Soviets had not done.
Speaker 2: I don't think it can be exaggerated the importance of
Speaker 2: that image of Earth from space, the Earth rise, and
Speaker 2: the impact that it well, not just the earth rise,
Speaker 2: but you know, basically when we got out in the
Speaker 2: Shuttle and we're able to take these pictures that were
Speaker 2: where the Earth was bigger, but earth rise was in
Speaker 2: the pale blue dot, of course, but the picture of
Speaker 2: Earth from space is probably the biggest cultural achievement for
Speaker 2: the mythos of who are we as a race, as
Speaker 2: the human race, and with the biggest impact since you know,
Speaker 2: the Egyptians perhaps or any of the ancient.
Speaker 3: Astronauts to this day still talk about the overview effect
Speaker 3: that you see that the borders are invisible. Yeah, right,
Speaker 3: that the planet as a whole one. It changes the
Speaker 3: way you perceive things, really does. I got two computing ones,
Speaker 3: and we'll talk about which one is more important. The
Speaker 3: first one, I think you'll think is the most portant,
Speaker 3: but pretty sure. The second one is actually the first
Speaker 3: one is that in nineteen sixty eight the company Intel
Speaker 3: was founded, No kidding, I Noice and more. Yeah, And
Speaker 3: their first product they'll start working hard on is making
Speaker 3: digital RAM because at that point most computers are still
Speaker 3: using Ferris core memory.
Speaker 1: It's the idea of.
Speaker 3: Integrated circuit memory is still novel. There's only test articles
Speaker 3: so far. They haven't really scaled it up. But the
Speaker 3: original product what Moore wrote more Law about, because this
Speaker 3: is the year that he will author the statement that
Speaker 3: will become Moore's law. He was talking about RAM. He
Speaker 3: wasn't talking about CPUs. The CPU is still two years away.
Speaker 1: Wow.
Speaker 3: And yet there's something bigger that happened in nineteen sixty eight.
Speaker 3: It is colloquially called today the mother of all demos.
Speaker 3: This is dougle Engelbart's demo, which was originally named a
Speaker 3: Research Center for Augmenting Human Intellect. This is the Stanford
Speaker 3: Research Institute. And he had been working on a system
Speaker 3: of computing that he called NLS, short for online system,
Speaker 3: because picking random letters out of words is something they did.
Speaker 3: Even then, he couldn't want to call it OS because
Speaker 3: there's already operating system so online system NLS. There was
Speaker 3: about a thousand people in the audiences at Stanford, including
Speaker 3: Alan Ka, Like a lot of your foundational computing people
Speaker 3: were in the room for this demo. And this was
Speaker 3: a distributed computing demo, So not only were they at
Speaker 3: the SRI Center there, but they had these custom made
Speaker 3: twelve hundred modems and least lines to different locations. Bill
Speaker 3: Paxton was remote. Bill English was there, and they used
Speaker 3: an edit for video projector to show the screen that
Speaker 3: Engelbert was working from on a twenty two foot wide screen.
Speaker 3: Soever you could see it. The mouse prototype, which had
Speaker 3: only been built a year or two before, is involved,
Speaker 3: and what Douglas is demonstrating is resizing windows and highlighting text.
Speaker 3: And at one point Paxton remotely edits some text that
Speaker 3: Ingelbart had written. And at the end of this ninety
Speaker 3: minute demo, it's just this huge standing ovation. Wow, they
Speaker 3: saw the future that day. The future we were in diapers, right,
Speaker 3: this is nineteen sixty eight, we were one one year old. Yeah,
Speaker 3: the metaphors that you use in the computer today were
Speaker 3: demonstrated that day. It's why they call it the Mother
Speaker 3: of all demos.
Speaker 2: Wow, I can't imagine what the excitement must have been
Speaker 2: like the audience.
Speaker 3: And that's the same year as we put humans around
Speaker 3: the moon like sixty eight is horrible and astonishing.
Speaker 2: Yeah, what are you amazing? And on that happy note,
Speaker 2: which it is actually it is introduced David So. David
Speaker 2: Wenja is a principal software engineer at Microsoft based in Melbourne, Australia.
Speaker 2: He's currently the lead developer on the Razor Tooling experience
Speaker 2: in Visual Studio and Visual Studio Code, but has otherwise
Speaker 2: been working on dot net tooling for the last seven years,
Speaker 2: with almost the entirety of that work being done in
Speaker 2: the open on GitHub. He's passionate about good design, simple code,
Speaker 2: and delivering a constant stream of pull requests to surprise
Speaker 2: and confuse his coworker nice. When not working, he spends
Speaker 2: more time than he probably should on social media and
Speaker 2: enjoys admiring his lego collection from a respectful distance. Welcome, David,
Speaker 2: Thank you very much.
Speaker 5: Lovely pronunciation by the way. Yeah, I'm trying you trying
Speaker 5: Melbourne right as well?
Speaker 2: That's the Melbourne Nevin.
Speaker 5: Yeah, usually that's the trap. Yeah, thank you for having.
Speaker 3: Me all I remember most about Melbourne. Is it's windy
Speaker 3: all the flip and time. Sometimes a warm wind, sometimes
Speaker 3: it's a bitterly cold wind.
Speaker 5: Yes, well, especially at the places where the conference venues
Speaker 5: tend to be, which is I'm sure what you've bunk
Speaker 5: out a lot?
Speaker 1: Yeah? Right by the river right?
Speaker 2: Yeh. So I have a couple of Australian terms I'd
Speaker 2: like to settle with you.
Speaker 5: Okay.
Speaker 2: First of all, I first, I can't remember who I
Speaker 2: was talking to when I first heard the word chuffed.
Speaker 2: That's an Australian term for really happy. I'm excited. I'm chuffed.
Speaker 5: I'm chuffed to be here, chuff to be here.
Speaker 2: And second one is you guys really don't put shrimp
Speaker 2: on the bobbie.
Speaker 1: Do you know?
Speaker 5: I don't think I've ever seen anyone do that.
Speaker 2: And they don't say that, I mean, we don't call
Speaker 2: it shrimp. No, that's an American.
Speaker 5: We would say prawns. Yeah, we would say prawns. And
Speaker 5: even then, but on.
Speaker 2: The barbie, you don't do you say barbie or do
Speaker 2: you say grill? Now we say bobby, you do say barbie? Okay?
Speaker 5: Oh yeah, we like to shorten everything.
Speaker 3: Yeah, yeah, even McDonald's is too long. It's mackers.
Speaker 5: Yes, absolutely, so.
Speaker 2: I remember Adam Cogan saying let's have some brecky not
Speaker 2: breakfast hot eggs.
Speaker 5: That's right.
Speaker 2: And also Foster's beer is like water. You don't drink that.
Speaker 1: Stuff, right, Yeah, we don't drink that.
Speaker 5: No, No, I remember, Actually I was. I was in
Speaker 5: London a few months ago and walked into a to
Speaker 5: a pub there and they had it. I actually can't
Speaker 5: remember the last time I'd seen Foster's. Yeah, I have
Speaker 5: to travel internationally to do it.
Speaker 2: So the American idea of Australia is nothing like Australia itself.
Speaker 2: You just gotta go, yeah, got to go.
Speaker 5: The American idea of animals that will kill you. And
Speaker 5: Appeck Steakhouse no.
Speaker 3: Yeah, yeah, I know Crocodile Dundee really and Outback Steakhouse
Speaker 3: is owned by somebody from California.
Speaker 2: If I'm not mistaken, like you know, I would not
Speaker 2: Australian at.
Speaker 5: All, wouldn't surprise me if they've never been to Australia. Yeah, well,
Speaker 5: then again, I've never been to an Appback steakhouse. So
Speaker 5: maybe you know, maybe I should speak at a school.
Speaker 2: I mean, it's all right, but I wouldn't call it Australian. Yeah,
Speaker 2: all right, let's talk about the Razor experience, the Razor
Speaker 2: editor experience. I have a particular interest in this because
Speaker 2: I'm a Blazer developer mostly. And you heard our talk
Speaker 2: with Dustin Campbell, right, Yes, that's right.
Speaker 5: Dustin's been I guess, moonlighting on Razor Tooling for a bit.
Speaker 5: He's you know, he floats around and works on what
Speaker 5: he wants to work on, but he's been helping out.
Speaker 2: Yeah.
Speaker 5: Yeah, he's been helping out. Heapes on Razor Tooling, doing
Speaker 5: lots of stuff on the compiler, but also lots of
Speaker 5: stuff on the two. And yes, I heard I heard
Speaker 5: your excitement at when he mentioned this new co hosting effort,
Speaker 5: and I thought, oh, well, if that's if that's interesting
Speaker 5: to people, then I can talk about that for oh,
Speaker 5: I don't know forever. I've been working on it for
Speaker 5: about eighteen months, almost exclusively.
Speaker 2: So yeah, well, why don't you remind us what that
Speaker 2: was all about?
Speaker 5: Sure, well, I mean let me take one step further back.
Speaker 5: So in actually almost at the time that comment that
Speaker 5: Richard red was from when Visual Studia twenty twenty two
Speaker 5: was released. I believe the first version of that. There
Speaker 5: was a new Razor Editor then and it was based
Speaker 5: on LSP, which is Language Server Protocol, which is this
Speaker 5: way to disconnect language services from the ide and have
Speaker 5: you know, sharing of code and have one server be
Speaker 5: able to go in multiple IDs, et cetera. It's really
Speaker 5: cool idea. And the Razor Editor was the first sort
Speaker 5: of widely used LSP editor in Visual Studio. LSP had
Speaker 5: come out of Visual Studio Code and it's much much
Speaker 5: bigger part of that, just you know, by its architecture,
Speaker 5: it's more separated and things.
Speaker 3: It's cool and so stuff being built visual Studio being
Speaker 3: brought to Visual Studio, code being brought to Visual Studio.
Speaker 1: I didn't know about that. That's interesting.
Speaker 5: Yeah. So actually eighty nine of the code in the
Speaker 5: Razor repository is behind sort of part of this LSP server,
Speaker 5: and the same server is shipped with vs code in
Speaker 5: the c sharp extension and with Visual Studio, and in
Speaker 5: fact there's even some bits that go the other way.
Speaker 5: So the CSS LSP server that is shipped in Visual
Speaker 5: Studio is the VS code one. They just reship it.
Speaker 5: So it's a lovely architecture and when it works, it's great.
Speaker 3: And that's qualifier their David.
Speaker 2: Yeah, that was very polite, kind of almost Canadian way
Speaker 2: to express your opinion about that.
Speaker 5: Yeah, I know, LSP is great, I think. So it's
Speaker 5: not so much that the LSP doesn't work. There's dot
Speaker 5: Net projects are difficult for LSP because LSP has no
Speaker 5: concept of projects at all. And in dot net world,
Speaker 5: we're used to having cs prog files and we have references,
Speaker 5: and you know, automatically, every c sharp file that's in
Speaker 5: your folder is just picked up magically. You don't need
Speaker 5: include statements and import statements and all these wonderful things
Speaker 5: we benefit from. Of course, the LSP server has to
Speaker 5: deal with that itself, and so what we ended up
Speaker 5: with is this situation where the Razor tooling has to
Speaker 5: understand your project, It has to understand your references so
Speaker 5: it can find your components, and that sort of thing,
Speaker 5: has to monitor all the files for changes, and we
Speaker 5: have the Roslin LSP server sitting next to it, which
Speaker 5: has to do the exact same thing for all the
Speaker 5: sea sharp files. And at some point Raiser, the Razor compiler,
Speaker 5: became a source generator and so it plugs into Roslin,
Speaker 5: and so now Roslin has to monitor all the Razor files,
Speaker 5: and Raiser Tooling has to monitor all Raise files, and
Speaker 5: we have lots of these double handling. And Razor has
Speaker 5: a project system and Rosslin has a project system, and
Speaker 5: there was bugs in Razors and probably less bugs in
Speaker 5: Roslin's because it's a bit more battle hard and it's
Speaker 5: got a few more users. And so a couple of
Speaker 5: years ago, while working on the Razor tooling and fixing
Speaker 5: all these lots of issues around this project system, I
Speaker 5: just sort of had the idea that, like, maybe if
Speaker 5: we just lived in the same world as Roslin, we could,
Speaker 5: you know, things would be better. We do less work,
Speaker 5: we take advantage of some of the stuff that Rosin's
Speaker 5: already done, et cetera, et cetera. And that's where this
Speaker 5: idea of co hosting comes from. I didn't coin the name,
Speaker 5: but basically the idea is that Razor is hosted in
Speaker 5: the same world as Rosslyn, and you know that's the
Speaker 5: same process or not the same process doesn't really matter,
Speaker 5: just more they have the same view of the world context. Yeah,
Speaker 5: lsp is it's kind of like web API that that
Speaker 5: sort of change from web views to web api. It's
Speaker 5: that sort of thing applied to IDE tooling. So in
Speaker 5: the old in the old days, maybe not the old days,
Speaker 5: but you know, in a different type of thinking, you know,
Speaker 5: you might have you might have an I frame, and
Speaker 5: let's say you go like a master detail page on
Speaker 5: a web page right right, and so you want to
Speaker 5: show an order detail inside a grid where you might
Speaker 5: have an I frame, and you say, show me the
Speaker 5: order page here, and that works, but you're getting the
Speaker 5: whole page, and so that page might need to have
Speaker 5: some smarts to know if it's inside the grid or
Speaker 5: not or whatever. If you make a change to this
Speaker 5: doesn't apply for it's used, it's a been annoying. And
Speaker 5: so we move forward from that and we you know,
Speaker 5: have web API is now where you don't give me
Speaker 5: the order page. You just give me the data for
Speaker 5: the order and I'll work out how to display it.
Speaker 5: And that's kind of the same thinking on the tooling side.
Speaker 5: So in a c sharp file, when you bring up
Speaker 5: the IntelliSense list, Roslin essentially is responsible for rendering that list.
Speaker 5: Under the LSP world, the IDE is responsible for rendering
Speaker 5: the list. The language server just tells it which items
Speaker 5: to put in. So it's more portable and it's flexible
Speaker 5: and all those things. Yeah, yeah, it's it's definitely. It's
Speaker 5: a cool architecture. It's just that and some of the
Speaker 5: quirks of Razor also always where it sort of shows
Speaker 5: some of its rough edges. So Razor is, you know,
Speaker 5: five languages in one file and that's a bit difficult, right,
Speaker 5: So the Razor wrong, Yeah, that's right. The Razor LSP
Speaker 5: server in order to answer some of these questions, it
Speaker 5: would have to call to the Rosalin LSP server to
Speaker 5: get its answer, and like, hey, you know, Razer will
Speaker 5: get asked, you know, what should I show it line
Speaker 5: five of this file, and Raser has to go, well,
Speaker 5: actually line five, that's actually C sharp and that's actually
Speaker 5: line seventy four in this generated C sharp file. So
Speaker 5: I'll go and ask Roslin what to show at line
Speaker 5: seventy four. Rosal will respond, I'll translate that back, send
Speaker 5: that back up. And that sort of stuff still happens
Speaker 5: in co hosting because it's still an LSP based editor
Speaker 5: in from the Razor point of view, but now we
Speaker 5: like that connection to Roslyn rather than making LSP calls
Speaker 5: and serialization and de serialization of data and working with
Speaker 5: strings and sort of primitive types. That's now just a
Speaker 5: C sharp method call and we just call an API
Speaker 5: and roslins ay, give me a list please.
Speaker 2: So I get how it's more efficient for you guys
Speaker 2: in the back end to render all this stuff, But
Speaker 2: what can you nail down the benefits to the developer
Speaker 2: this co hosting architecture, So.
Speaker 5: I mean the benefits. The biggest benefits that you're going
Speaker 5: to see is just performance and reliability. It's a lot faster,
Speaker 5: a lot use a lot more memory, a lot less memory.
Speaker 5: Reliabilities is definitely a huge one though one of the
Speaker 5: one of the the other problem with this sort of
Speaker 5: disconnected world. Fundamentally, the Raiser language server cannot see the
Speaker 5: Roslin compilation, so it doesn't actually know about any of
Speaker 5: the types used in your project. It doesn't know about
Speaker 5: any of the references, and so there's this communication of
Speaker 5: like component information and what is the list of components
Speaker 5: that available in this project?
Speaker 2: For example?
Speaker 5: We have to find that out in Roslin where there's
Speaker 5: a compilation, and then we send it across to RASA
Speaker 5: and that data has to come across. It's a lot
Speaker 5: of data and one of the key areas that Dustin
Speaker 5: actually worked on was was making that used message pack
Speaker 5: and used checksum so we could send less data if
Speaker 5: nothing's changed. And it's a much more reliable system now
Speaker 5: than it was it used to when when I first
Speaker 5: joined the team, or when Raiser sort of Raisers sort
Speaker 5: of joined the Roslin team, they came to me through
Speaker 5: osmosis ident around here. But when that when that first happened,
Speaker 5: it was literally adjacent file serialized disc And that's why,
Speaker 5: like everyone, when there was problems with the Razor A,
Speaker 5: people would delete their OBJ folder and that would fix things.
Speaker 5: Because when they were just deleting this Jason file which
Speaker 5: was this cash and it just got corrupted or it
Speaker 5: got out of date, and so there's all the synchronization
Speaker 5: issues trying to synchronize all this information. You know, Razor
Speaker 5: has to compile your c sharp file and it pushed
Speaker 5: it to Roslin in order for Roslam to answer questions,
Speaker 5: and that's synchronizing two systems, and we just don't need
Speaker 5: to do that anymore.
Speaker 2: So is this why for example, if you type a type,
Speaker 2: you know you have a variable of a type and
Speaker 2: the namespace isn't qualified you In the Visual Studio code editor,
Speaker 2: you can hover over that type and it will say
Speaker 2: using blah blah blah. But in the Razor editor it
Speaker 2: doesn't do that. Like there are little things like that,
Speaker 2: like code lens is one thing that I miss in
Speaker 2: the Razorator. So you're saying that this new co hosting
Speaker 2: model will enable and facilitate those kinds of features.
Speaker 5: Ah, that's I'm going to take that as two questions
Speaker 5: because they were both really good but very different answers
Speaker 5: unbunounced to you. So as far as the first one, yes,
Speaker 5: So you were talking about add using, and in some
Speaker 5: cases Razor does support ad using, and we do that
Speaker 5: relay thing where we ask Roslin, hey, what should we
Speaker 5: do here? But this co hosting will definitely enable us
Speaker 5: to add more of that in future. So we in
Speaker 5: Razor we now have full access to the same compilation
Speaker 5: as rosalind, the same documents, the same project information, and
Speaker 5: so we can call any of Roslin's normal API to
Speaker 5: find out what we need to do, what we might
Speaker 5: want to do that was never possible for so all
Speaker 5: those things we can start to take advantage of now.
Speaker 5: I will say the effort so far has just been
Speaker 5: you know, we're sort of rebuilding the plane as it's going.
Speaker 5: So we're just trying to get everything working right. The
Speaker 5: features can come from here, So yeah, that's definitely something
Speaker 5: we want to invest in. I did one sneaky feature
Speaker 5: like that I worked on a couple of weeks ago,
Speaker 5: where so go to definition in a Razer file. You
Speaker 5: could do it on a Blaser component, but you couldn't
Speaker 5: do it on an MVC tag helper. And the reason
Speaker 5: for that is because all that data that synchronizes across
Speaker 5: from Roslin, it includes type names and property names and things.
Speaker 5: And in Blazer you can infer okay, well, if there's
Speaker 5: a component with a type name of whatever, then it's
Speaker 5: in a file called whatever, not Razer. But in MVC
Speaker 5: you cannot make that connection. Take Helpers could be called anything,
Speaker 5: they can be defined in any old class. And so
Speaker 5: we just couldn't answer this questions in Razer because all
Speaker 5: we had was a type name, but we didn't have
Speaker 5: any information about the compilation. Now, with co hosting, I
Speaker 5: wrote some code a couple weeks ago. It just calls
Speaker 5: the standard Roslin method for hey, give me the type
Speaker 5: for this type name please, and Roslin does, and then
Speaker 5: now we know where it comes from. So we're definitely
Speaker 5: going to start to see more of those things coming hopefully.
Speaker 2: Okay, what about the underscore imports Raiser. I always thought
Speaker 2: it was weird that we had a separate imports list
Speaker 2: for Razor components than we do for regular Sea Sharp components.
Speaker 2: Is that something that this will enable us to, I
Speaker 2: don't know, just use the CEA sharp global usings or
Speaker 2: regular using statements.
Speaker 5: That's that's an interesting question. We definitely technically are capable
Speaker 5: of doing that. The one interesting thing about Raiser that
Speaker 5: this doesn't change is the ownership of things is a
Speaker 5: bit weird. So Razer came out of ASP dot net,
Speaker 5: including the tooling and the compiler, and probably three years
Speaker 5: ago maybe the tooling and compiler came over to Roslyn,
Speaker 5: and so the Roslin compiler team owned the Razor compiler.
Speaker 5: Rosin Ide Tooling owned Razor Tooling, which is where I
Speaker 5: sort of came to be on it. The runtime is
Speaker 5: still owned by ASP dot net, and so those sorts
Speaker 5: of decisions are more on the runtime side. Obviously, you know,
Speaker 5: we meet with them and we have likeguage design meetings,
Speaker 5: not as often as Sea Shark, but you know they
Speaker 5: do exist, and so that's that's the sort of change
Speaker 5: we can definitely talk about.
Speaker 2: I don't know, but there's a reason that they chose
Speaker 2: to do it that way, right, I mean.
Speaker 5: Well that predates global usings in c sharp, So you
Speaker 5: know the reason they did that is because they were
Speaker 5: trying to solve a problem that rasor developers had and
Speaker 5: sea sharp developers, I mean, they probably had it at
Speaker 5: the time, but maybe it was less important or that
Speaker 5: just wasn't Sea sharp was ready to tackle yet. So
Speaker 5: it's sort of this you know, parallel invention thing that
Speaker 5: sometimes happened, and then you get to the end you're like, oh,
Speaker 5: we've got two systems for this, can we merge them?
Speaker 5: And it certainly technically we can.
Speaker 2: It's just sure is it?
Speaker 5: How hard is it?
Speaker 2: Will we break?
Speaker 1: People?
Speaker 2: Be nice to have the option like look in at
Speaker 2: you know, look at underscore imports and if it's not there,
Speaker 2: look in global usings and if it's their using yeah.
Speaker 3: Easy, Yeah, definitely, and then all the places you'd go anyway, right.
Speaker 5: Yeah. So the other thing you asked about though was codelin,
Speaker 5: which is interesting. So code lens is supported in visual
Speaker 5: stdio code, as you mentioned, and the code that does
Speaker 5: that is in the Razor repot. That's like we own that,
Speaker 5: that's our code, but it doesn't work in Visual studio.
Speaker 5: The reason it doesn't work.
Speaker 2: Wea code lens works in Visual studio, but not in
Speaker 2: the Razor editor.
Speaker 5: But not erase fun. Yes, sorry, code land's in a
Speaker 5: Razor fhile. In visual studio, code is our code, but
Speaker 5: it doesn't work in Visual studio in a Razor fhile.
Speaker 5: And the reason for that is so LSP is, you know,
Speaker 5: essentially a standard set of APIs for ID tooling. So
Speaker 5: the Razor server supports the code lens API, but the
Speaker 5: Visual Studio client doesn't.
Speaker 3: And so that's on.
Speaker 5: Visual Studio to you know, move further towards embracing alix
Speaker 5: per But they.
Speaker 1: Are doing that.
Speaker 5: Get busy they are doing.
Speaker 2: I'll let him know.
Speaker 5: Since version like seventeen point ten, I think of Visual
Speaker 5: do all of the error list and the squiggles and
Speaker 5: the diagnostics and everything, all of that is powered entirely
Speaker 5: through LSP in Visa studio. And that's one of those
Speaker 5: you know, rebuilding the plane things where no one really
Speaker 5: noticed we just swapped out. We were using this system.
Speaker 5: Now we're using this system. We can get rid of
Speaker 5: the old system now and so it's slowly being adopted
Speaker 5: over there, but visual studio is twenty years of history
Speaker 5: of not doing it.
Speaker 2: Say so, sure, it's a lot of inertia. All right,
Speaker 2: This seems like a good time to take a break,
Speaker 2: so we will be back right after these very important
Speaker 2: messages stick around. Do you have a complex dot net
Speaker 2: monolith you'd like to refactor to a micro services architecture?
Speaker 2: The Microservice Extractor for dot Net tool visualizes your app
Speaker 2: and helps progressively extract code into micro services. Learn more
Speaker 2: at aws dot Amazon dot com slash modernize.
Speaker 3: All right, and we're back. I'm Richard Campbell. Let's call Frank.
Speaker 3: You talking a bit about to David about all the
Speaker 3: fun things in Roslin and when you mentioned co hosting
Speaker 3: Roslin and Razor together. Of course, I'm collecting links for
Speaker 3: the show, so I search for that, and I think
Speaker 3: I found the GitHub issues ninety five nineteen where this
Speaker 3: whole thing kind of kicks off, and I see you
Speaker 3: stepping in. It's really fun for me to suddently see
Speaker 3: here's where David got involved and started doing his work
Speaker 3: all the way back at twenty twenty three.
Speaker 5: That issue is it lives on my book Macbarr in
Speaker 5: my browser. I bet my that is my stream of
Speaker 5: consciousness issue.
Speaker 3: It is a beast and then to the point where
Speaker 3: it has a it has a there's another issue that
Speaker 3: is a summary of all of the LSP implementations that
Speaker 3: you can see are gradually all getting checked off.
Speaker 5: Yes, I think itels like one left.
Speaker 3: Yeah, you're hitting a point of this is becoming a ship. Yeah,
Speaker 3: like you can see. I'll include it in the show
Speaker 3: notes for people who want to see this because it's
Speaker 3: really I love the historical sense of this, because there's
Speaker 3: halfway through this issue you guys change gears on this
Speaker 3: LSP integration mindset. You could see you clearly think bigger
Speaker 3: in it.
Speaker 5: There was actually I think two or three points where
Speaker 5: we had to change gears and not even it wasn't
Speaker 5: even enough. It was actually Roslin. So I had the
Speaker 5: idea for this probably two years ago, and I think
Speaker 5: the first PR was January twenty twenty four, so well
Speaker 5: that's coming up to almost two years. And the basic
Speaker 5: idea was can we use the razor source generator in
Speaker 5: the ide not just at build time, and then live
Speaker 5: within Rosalin And that was all cool. And we got
Speaker 5: together a team, you know, with Roslin, and had a
Speaker 5: bunch of meetings, which is what that stream of consciousness
Speaker 5: issue is sort of the summary of. And so all fine,
Speaker 5: we start working. And then Roslin, for you know, they
Speaker 5: obviously have their own desires and performance goals. So I
Speaker 5: think the first thing that had was they moved all
Speaker 5: source generators. Now none of them run in the visual
Speaker 5: studio process, and so if Razer wanted to access that data,
Speaker 5: we couldn't be in the visual studio process anymore. So
Speaker 5: we now had to go over to this process, and
Speaker 5: so we rearchitected there in the middle to do that.
Speaker 1: And then.
Speaker 5: That you know, we sort of got past that. There's
Speaker 5: a bunch of stuff of having our own external process
Speaker 5: which we haven't had before, et cetera. And then they
Speaker 5: Rosland introduced this another thing for source generators where they
Speaker 5: now run if you set your idea up or by default,
Speaker 5: they run in what's called balance mode, which is essentially
Speaker 5: they run when you save a file and when you
Speaker 5: do a build, but they don't run on every keystroke.
Speaker 5: Because there's lots of source generators now and some of
Speaker 5: them are a little slow. Of course, for Razor that
Speaker 5: doesn't work. We need to run on every keystroke, and
Speaker 5: so we had to adapt to that as well. And
Speaker 5: so there's been a few things where I guess it's
Speaker 5: the downside of living in the same world is where
Speaker 5: sort of we're also from the same monumental shifts that
Speaker 5: happened sometimes in that world. We were a little bit
Speaker 5: isolated before.
Speaker 3: But sure, now your change in architecture is also added
Speaker 3: by their changes in architecture.
Speaker 5: That's right, And I mean there's other there's changes in
Speaker 5: architecture that they could do and that are sort of
Speaker 5: on their roadmap that would make things easier for us too.
Speaker 5: So you know, it's not all I don't want to
Speaker 5: make it seem like the bad thing, but it's It's
Speaker 5: definitely been an interesting eighteen months. And I think the
Speaker 5: biggest thing about the exciting thing for me now is
Speaker 5: like as you say, we're sort of starting to get
Speaker 5: in close to the end, is just that this is
Speaker 5: the first thing I can remember working on a Microsoft
Speaker 5: where it's a reasonable size idea and a reasonable size implementation,
Speaker 5: but it's sort of all or nothing. We can't really
Speaker 5: do this halfway. We couldn't have rolled this out piece
Speaker 5: at a time, we would have just been you know,
Speaker 5: essentially making everything worse for everybody. And so that's a
Speaker 5: little nerve wrack, you know, the big switch it happened.
Speaker 3: Yeah, you don't like big bangs, big bangs bad.
Speaker 5: Yeah, well that's right. It happened about a month ago
Speaker 5: with Visual Studio code. We switched the sea Sharp extension
Speaker 5: to have this on by defaults and you know, there
Speaker 5: was a couple of little rough edges, but nothing too bad.
Speaker 5: And of course that extension releases weekly if you're on
Speaker 5: the pre release channel, so it's pretty quick to get
Speaker 5: to get a fix out. But yeah, having it on
Speaker 5: in Visual Studio is the next big the next big hurdle,
Speaker 5: So it's definitely exciting times definitely.
Speaker 1: Yeah.
Speaker 3: Okay, Well it's just you know, as part of the
Speaker 3: new Microsoft, the fact that the literally the thinking and
Speaker 3: how these features evolve is documented publicly.
Speaker 1: Anybody can look at it if they want to look out.
Speaker 5: I mean, that's one of the I would say, the
Speaker 5: reason I'm at Microsoft, but definitely one of the biggest
Speaker 5: draw cards, you know. I remember I was a sea
Speaker 5: Sharp developer in industry when Roslin was open sourced and
Speaker 5: just watching all of everything happening on GitHub and you
Speaker 5: know a few little contributions here and there. That's like
Speaker 5: with such a huge draw card for me. It's the
Speaker 5: bit about my job I love the most is that
Speaker 5: interacting with the our users on GitHub because they're all developers,
Speaker 5: we all speak the same language. You know, we can
Speaker 5: all can we can we can shortcut a lot of things.
Speaker 5: I love that bit. And so you know, I'm I'm
Speaker 5: on read at watching when people mention it, I'm on
Speaker 5: blue Sky and masterdon and everywhere else. Just yeah, that
Speaker 5: community involvement of being on GitHub is a wonderful thing.
Speaker 2: Does Microsoft need more contributors to the GitHub repos for
Speaker 2: all of these things? Is there a lack of Is
Speaker 2: there a perceived lack on Microsoft's part of, you know,
Speaker 2: we need more community involvement?
Speaker 5: I think I think it's I mean, it's gift. So
Speaker 5: I don't know, I don't know the need is the
Speaker 5: right word. I think it's always welcome, it's it's a
Speaker 5: gift when it comes. I think there's some It really
Speaker 5: depends on the product, you know, sometimes, particularly say the
Speaker 5: c sharp compiler side of Rouslom. Sometimes when they're getting
Speaker 5: to crunch time for a release, which is, you know,
Speaker 5: sort of starting about a month or two ago, their
Speaker 5: heads down fixing bugs, reviewing prs, etc. Any extra load
Speaker 5: on them to review community prs is often too much
Speaker 5: and they'll they'll have to push the community pr like
Speaker 5: to tell the person, you know, we're not going to
Speaker 5: be able to get to this for a couple of months, so,
Speaker 5: you know, and that's you know, not a great thing
Speaker 5: to have to say, because obviously maybe someone was hoping
Speaker 5: to get something into Sea Sharp fourteen and they've missed
Speaker 5: the boat or not from their fault, you know. So
Speaker 5: I think that sort of thing can happen. But generally speaking,
Speaker 5: Roslin gets a reasonable load of community contributions that are
Speaker 5: they're all very welcome on Razer. We don't get a lot.
Speaker 5: We've had some over the years and definitely very appreciative.
Speaker 5: I think Razor is a difficult, slightly difficult thing to
Speaker 5: get started with, just because you know, it is five
Speaker 5: languages in one and it's hard to juggle and learn
Speaker 5: about all the little quirks of Well, here's a method
Speaker 5: that sounds like it does the right thing, but before
Speaker 5: you call this, you have to be sure of these
Speaker 5: other things first. And it's not really well documented.
Speaker 2: Obviously, I can't imagine how one would go about trying
Speaker 2: to write a Razor editor. I mean that just seems
Speaker 2: like a big, big chunk of meat to you know,
Speaker 2: to chew off.
Speaker 5: It's it's definitely I mean I wasn't there when it started,
Speaker 5: but yeah, it's definitely an ambitious goal. In particular the
Speaker 5: way that LSP works. You know, essentially the Razor tooling
Speaker 5: produces two files. Out of your razor file, it produces
Speaker 5: a HTML file and a c sharp file, and most
Speaker 5: you know, most of the questions that are asked about it,
Speaker 5: it actually forwards onto these other two servers and then
Speaker 5: it gets the answers back, and sometimes we have to
Speaker 5: combine them, and sometimes we have to discard some or
Speaker 5: we have to map coordinates around and it's it's interesting
Speaker 5: we get I mean, we get a lot of benefit
Speaker 5: from that as well, though. So yeah, we don't really
Speaker 5: understand C sharp code, and we don't want to because
Speaker 5: obviously that would be writing a separate PASA, which we
Speaker 5: don't have to. That's right. One of the other big
Speaker 5: innovations that's actually on by default in dotnet ten is
Speaker 5: and fred on the ross and compiler team did this
Speaker 5: for us. He raised a compiler now uses part of
Speaker 5: the Roslyn PASA to parse the sea sharp and so
Speaker 5: for things like interpolated strings in your sea sharp, that
Speaker 5: was something the Razor compiler didn't know how to handle,
Speaker 5: and to implement it in the Razor compiler would have
Speaker 5: been teaching it the same parsing rules as is in
Speaker 5: the sea sharp compaler. So if we can just reuse
Speaker 5: that component, we sort of get it for free. And
Speaker 5: so there's a lot more of those, you know, like
Speaker 5: I was saying before, a lot more of those sharing things.
Speaker 5: I'm hoping that we can take advantage of. My sort
Speaker 5: of personal goal or north star maybe is right now
Speaker 5: the light bulb menu in a raiser file, we have
Speaker 5: an allow list of which things we will show. So
Speaker 5: Roslin might suggest six things you could do to this code,
Speaker 5: but we'll only show two of them, and that's because
Speaker 5: we need to sort of vet each one and make
Speaker 5: sure that it's not going to possibly break your razor code.
Speaker 5: My north star is that we can just remove that
Speaker 5: allow list and we can just say anything that Roland
Speaker 5: suggests we know how to handle. And so we've done
Speaker 5: it for using statements that was one of the one
Speaker 5: of the big things I remember first working on was
Speaker 5: pretty exciting. Was any anything that tries to introduce a
Speaker 5: using directive, we will now map that to a Raser
Speaker 5: using directive and they're pretty similar. So that's okay. But yeah,
Speaker 5: we've got more work to do obviously. You know, if
Speaker 5: you want to add a method, that's pretty easy in
Speaker 5: a c sharp file, but in a Razer file you
Speaker 5: might need to add a code block, you might not
Speaker 5: you might be a code behind file.
Speaker 1: You know.
Speaker 5: There's all these sorts of things we need to work through.
Speaker 1: But I'm hoping.
Speaker 5: I'm hoping this is a new foundation we can get
Speaker 5: there from.
Speaker 2: What do you think is the feature of the up
Speaker 2: and coming Razor editor in Visual Studio twenty twenty six
Speaker 2: that people will freak out the most about. And I'm
Speaker 2: talking about Blazer developers here. What are they going to
Speaker 2: like the most?
Speaker 5: Well, I mean, I hope they just the thing with
Speaker 5: the Razor editor over the last couple of years is
Speaker 5: the reliability has really not been that good, and so
Speaker 5: I definitely hope that is the biggest change that they'll notice.
Speaker 5: I think the challenge is it's hard for us as
Speaker 5: humans to notice that sort of thing. We are very
Speaker 5: quick to write it off. And you know, I was
Speaker 5: mentioning about how we used to use this serialized Jason file.
Speaker 5: I still see comments on Reddit of people saying, oh,
Speaker 5: just delete your OBJ folder and that'll fix the razor editor.
Speaker 5: Sometimes I go in there and I say, well, actually
Speaker 5: that won't do anything. We have no files in there,
Speaker 5: but you feel free to delete it. That's fine, we
Speaker 5: won't hurt.
Speaker 2: But what a lot of times just closing the razor
Speaker 2: file and reopening it, you know, gets rid of this
Speaker 2: and recolors everything correctly.
Speaker 5: And yeah, that's right, and so that that I'm hoping
Speaker 5: that we have to do that less. In fact, I'm
Speaker 5: hoping you have to do that never, especially the colors one.
Speaker 5: That one we have a we actually have a name
Speaker 5: for that internally. We call that Disco colors. And it's
Speaker 5: pretty well, pretty well known issue. Yeah that with co hosting.
Speaker 5: With co hosting, that should be completely a thing of
Speaker 5: the past. The question is whether anyone will will notice,
Speaker 5: because you know, when things are working.
Speaker 2: Of course there will, we'll see. The other thing is, dude,
Speaker 2: I have an I nine computer with sixty four gigs
Speaker 2: of RAM, and it's still happens on my computer.
Speaker 5: Yeah, I mean that one, that one's not a performancing,
Speaker 5: that one's just keeping these two worlds up to date.
Speaker 5: That one's that What that means is, you know, Rosen
Speaker 5: thinks that there's a there's a class from you know,
Speaker 5: character four to character seven, and Razer thinks that's a
Speaker 5: character seeks to character whatever, and we just get the
Speaker 5: colors from it. But so that one should be thin.
Speaker 5: But yeah, and the other thing is performance, and the
Speaker 5: big the big win for performance with co hosting really
Speaker 5: is hot reload. So with the old editor, we you know,
Speaker 5: the Razor tooling compiled all your Raiser files and Roslin
Speaker 5: compiled your Razor files. At build time and obviously at runtime,
Speaker 5: both of those two things can be in play, and
Speaker 5: so hot reload has this code to map from. We
Speaker 5: essentially have two solutions in memory, ones called design time,
Speaker 5: which is what you're looking at. One is called runtime,
Speaker 5: and hot reload has to map between the two, et cetera.
Speaker 5: And all of that just goes away now because co
Speaker 5: hosting uses the same source generator, build time users. And
Speaker 5: so I mean, I can't remember off the top of
Speaker 5: my head, but Chris on the Razor Compiler team produced
Speaker 5: a series of graphs of that some of the time
Speaker 5: savings for large projects were just astronomical, and it's just
Speaker 5: we're just not doing a whole lot of work we
Speaker 5: had to do before, and so hopefully that impacts.
Speaker 2: We have a ten second rule for het reload. If
Speaker 2: it does an update in ten seconds, I closed, I
Speaker 2: stopped the app and run it again. It's just one
Speaker 2: of those things.
Speaker 5: Yeah, so yeah, that that should be a big win
Speaker 5: as well.
Speaker 2: Yeah that's great. But yeah, well these dall sound really
Speaker 2: fantastic and yeah, very powerful and as I mentioned before,
Speaker 2: paving the way to parody with the visual Studio code
Speaker 2: editor that we desperately want. So this is all good news.
Speaker 2: Is there anything else that we didn't touch on that
Speaker 2: you want to talk about?
Speaker 5: I don't think so, you know, as I I could
Speaker 5: talk about this stuff.
Speaker 2: For a while. You know, we're not pressed for time.
Speaker 2: We have someone if you want to continue.
Speaker 3: I mean, the main part about what do you think
Speaker 3: in the terms of testing for all of this, because
Speaker 3: I think it's always a challenge with these mixed language files.
Speaker 3: It's like, how do I know that it's working correct?
Speaker 5: Yeah, So that's that's Actually, that's one really big influence
Speaker 5: that I think. So, as I said, right started an
Speaker 5: asp on net. When it came over to Rosalin, two
Speaker 5: of the people from the asp on net team came
Speaker 5: over with it, and so they were heading up the
Speaker 5: Razor effort, but they were under Roslin, and over time,
Speaker 5: through Riors and people getting promoted and some leaving Microsoft,
Speaker 5: et cetera, that it's all changed out. But the I
Speaker 5: feel like what we've been working on, you know, me
Speaker 5: and Dust and the rest of the team over the
Speaker 5: last few years is sort of the rosalindification of Razor
Speaker 5: taking all these things from and so the testing is.
Speaker 3: Meme has stuck around. Right to me, it'd always felt
Speaker 3: temporary that this was the new version of c sharp,
Speaker 3: this sort of compiler of a service mindset, but it
Speaker 3: just yeah, it turns it seems like everything compiler related
Speaker 3: has lived under Roslin ever since.
Speaker 5: Yeah, sometimes codenames stick, you know, But yeah, the testing front,
Speaker 5: the testing front is definitely something we've we've taken from them,
Speaker 5: and so there's a bunch of new tests for hosting
Speaker 5: in the Raisor repo, and every single one of them
Speaker 5: is written as what I would call a Roslin style test,
Speaker 5: which is really like snapshot testing, where we essentially have
Speaker 5: here's your raser document, here's your operation you want to run,
Speaker 5: and here's what the raser document should look like. The
Speaker 5: older styal tests that come from more on the ASPN
Speaker 5: and outside, they're more written like a library test, written
Speaker 5: because asp dot net developers were all used to writing
Speaker 5: libraries right like, it makes total sense how they got there.
Speaker 5: It's just an interesting difference. And so there's lots of mocks,
Speaker 5: and there's lots of unit tests of specific this method
Speaker 5: should do this. And in the tooling side, we don't
Speaker 5: really care what that method should do. We just care
Speaker 5: that the user's code looks how they think it should
Speaker 5: look after they've done whatever of they've done. And so
Speaker 5: I think that's a big part of it. I think
Speaker 5: one of the interesting things when we go to graduate
Speaker 5: co hosting from being a an experiment and let's put
Speaker 5: it out there and see if it breaks, to actually, okay,
Speaker 5: it's great, let's turn it on and we remove some
Speaker 5: of the old code. The temptation is, oh, we don't
Speaker 5: need this test assembly anymore because none of this code
Speaker 5: is real. But I think we actually need to go
Speaker 5: through that test code with a little bit of a
Speaker 5: fine tooth comb, because there's probably some little nuggets in
Speaker 5: there that we maybe don't have coverage on that, you know,
Speaker 5: we need to add in the newer style.
Speaker 2: Good stuff. What's next for you, David? What's in your inbox?
Speaker 2: Your to do list?
Speaker 5: Well, not a lot because the wonders of time zone
Speaker 5: differences mean I get most of the day to myself.
Speaker 5: So no, the thing I'm working on, I'm still just
Speaker 5: you know, trying to basically land this ship, you know,
Speaker 5: work out how to pull out some of the older
Speaker 5: stuff and make it as efficient as possible. Very very
Speaker 5: keen to see the feedback from people, and I'm I'm
Speaker 5: hesitant to take on too much right now because I'm
Speaker 5: just poised for the bugs. But if you see them,
Speaker 5: if you see them, log them and of fixham.
Speaker 2: That's great.
Speaker 3: Take the preview out for us bin try this on.
Speaker 2: Yeah, absolutely absolutely, I'm looking forward to it. Yeah, okay, Well,
Speaker 2: thanks very much for spending the hour with us.
Speaker 1: David.
Speaker 2: It's great pleasure to talk to you, and we're going
Speaker 2: to have to have you on again. If you have
Speaker 2: anything that haply comes up that you want to talk about,
Speaker 2: feel free to reach out. Thank you all right, and
Speaker 2: we'll talk to you next time on dot netwoks. Dot
Speaker 2: net Rocks is brought to you by Franklin's Net and
Speaker 2: produced by Pop Studios, a full service audio, video and
Speaker 2: post production facility located physically in New London, Connecticut, and
Speaker 2: of course in the cloud online at pwop dot com.
Speaker 2: Visit our website at d O T N E t
Speaker 2: R O c K S DOM for RSS feeds, downloads,
Speaker 2: mobile apps, comments, and access to the full archives going
Speaker 2: back to show number one, recorded in September two thousand
Speaker 2: and two. And make sure you check out our sponsors.
Speaker 2: They keep us in business. Now go write some code,
Speaker 2: see you next time.
Speaker 5: You got jud Middle Vans
Speaker 1: And the