ASP.NET Community Standup - 🎂7 Years of ASP.NET Community Standup🎂

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Music] [Music] [Applause] [Music] we're on sorry about that i was i'm quite excited seven years we got us all on the call this is so cool so welcome that was your howard dean moment there oh no i'll never be president now yeah so sad um yeah well eleven years has that really been seven years yep somebody sent a tweet out a couple of days ago i can think i can dig it up when we were doing this and damian i think i sent you that right damian yeah can you find that yep and uh and it was like damien's like yeah we should probably get this off your youtube scott we should put it somewhere reasonable and like stop i think we were doing it in google meet uh hangouts hangouts meet didn't exist i think one of the products that they canceled out yeah it was it was literally the only product at the time that gave you sort of one click set up a conference call and then have every one and then just stream it to youtube there was no other solution uh you know i was thinking about it was like to be able to do that then and do like browser-based and it like worked and it was straight to youtube and it was like we were doing like live streaming i mean seven years ago i don't know i think we tried like live meeting and we tried whatever the predecessor of i think we tried a skype thing once and we tried a couple of startups and but nothing was as straightforward as google hangouts if you just want to get on youtube live and have some guests and be able to share your screen right and get reasonable video quality because we were i mean we didn't have the setups you know the setup that we do obs was in was nascent right yes indeed so like we were you know scott and i would muck around with a camera that logitech would be kind enough to send us or i'd choose i think i bought a blue like that i got a gray blue yeti over there from work that was bought specifically for that to try and improve our audio um but it was just in a small room off the team room and you know you were at home john and hanselman was typically at home but the one you were talking about there scott you were actually at a customer site and you just like popped into a meeting room to to start the stream yeah i was actually at a treehouse i'll share my screen and uday found this i was a treehouse on a customer site and there's young damien lowe these many years ago suggesting look at youngsters with my surface book my original surface book with the wood yep paneling on it wow me with hair you without hair apparently i've lost it and you've gained it back [Laughter] john doesn't look at day over 29. and this was actually sort of the second phase of the show because the first phase was in building 44 i think it was where the asp.net team in the goo building so when goo was head of uh you know newly coined well even before that before he became head of azure it was in it was um in building 44 i think it got rebuilt the inside and we moved into our team rooms our neighborhoods for the first time and we used to just do this in a meeting room and we would we made a point to point the camera which was just standard meeting room av equipment um at the whiteboard so that i could like explain stuff we could have different folks come and explain stuff on the whiteboard and it was an effort just to try and get in front of any misunderstandings or you know at worst misinformation that may have been floating around there you go the week before yeah see look at this so that is september 2nd 2014. all right i grabbed let me grab here's my okay right i did uh okay all you've proven is that my office hasn't changed much so that was yeah so let me get the banner off the screen so you can actually see them because i grabbed a few screenshots from some previous ones so that there's that one and then we've got um this was a fun one this was at mvp summit mvp summit and we did a few of these and these were crazy i was in the back of the room and i think we were going out over a few things off these crappy old laptops and there was like live to youtube but then there was also like a teams meeting or something yeah all kinds of craziness or not teams it would have been live meeting back then i don't i don't know but i also remember that was the one where like the the the ubiquitous cheap hdmi usb capture card didn't exist at this point so we had these these beautiful you know studio level cameras at the back of the room because this is the theater in the convention center and we had the professional recording folks there with their very impressive like um studio in a box if you recall and they were like we can give you sdi or hdmi out and we were like but how do i get that to work on live meeting how do i get that to go through like google hangout and we were like let's quick can we find a device like that we can buy from offer and we like tried to buy a thing if i was like hundreds and hundreds of dollars yeah and this was before the cam link existed or even um the razer rip saw which i bought like a year after that to try out for console stream because no one was doing really console streaming live like they were now so you didn't have this cheap hdmi capture card thing and then now 15 for an hdmi capture card that goes over usb 2. um and it's just so funny to think that seven years ago we didn't have any of that and so we struggled so hard trying to get this stuff out yeah all the all the different av stuff and yeah playing with it and trying to get the the sounds right like it still feels weird to me i'm not wearing headphones and for years and years i wore the big headphones and because i was worried about the echo and even now i've got this one on just in case i know and i i have some monitor headphones but i kind of stopped wearing i'm lazy now i don't know bring up my uh my desktop again john i'm noticing damien here he's maybe 15 frames a second [Laughter] yeah it's like watching an old-timey movie with the black and white and like it's struggling to get the get the color i get the uh like he like you it'll get all exposed and underexposed and never exposed oh man you're not much better noticing you though right here yeah i move around too much apparently so it's very noticeable and and like you're saying the goal early on was like hey we're planning asp.net this was back before it was asp.net v next and then all the different names yeah but talking through like here's kind of the design and like i mean and that's part of the name right it's asp.net community stand-up it's a weekly meeting with community the weekly meeting uh that we could effectively just go over what happened since the last week and i think john you were the one who started bringing community links yeah and early on that's funny and that actually it evolved because we had on the front page of the asp.net website asp.net there was the what was it called the community of the st i forget it even if it's like the flashlight or something spotlight oh light spotlight yeah and so we we would do those and then it just kind of rolled into hey it's like we're doing a live video show why don't we just share those out um yeah i pulled up a stat on that it's it's um i'll show that in a second but here this was one uh let me share my screen again so this was one of those like live on campus ones yep this is so cool and scott would just like walk around to different different rooms and talk to people and stuff and i think so this isn't the smurf lab but we did do several that that looks familiar because actually to the left is the performance lab which was just two computers under um glenn's desk left yes that was the perf area that was the smurf lab we had the little plush smurf and i think i set up a i had them both dialed in to the call and i had a headset so i could turn around and talk but also share the screen of the smurf lab i remember futzing over that setup to try and get it to work as well but we yeah like we managed to get all this stuff going back then as you said it was pre-naming like we didn't i think like it was project k even right at the beginning we were talking about before it was dnx and then got renamed and then got merged and then eventually became donaire one right this is so funny there's a comment here was the camera crew following him around no he was holding the iphone with my left hand camera crew there's no camera camera crew implies we have budget which to this day we still do not have budget so this was funny and we've done several but this was a show with interns and uh so and at least one of these is hired and been on the show many times uh since and that was that was before we learned how to use the microphone properly yeah yeah yeah that's like a whole screen to people using this microphone and having it oriented incorrectly yeah that because we're talking to the the back of the microphone yeah that's right uh let me see so this was fun this was four years and 150 shows uh understood in the studio now how many have we done total now i don't know how many shows have we done 260 yeah wow okay yeah um this was the five year this was damien set this up balloons all over the place that was a productive day at work that one you should have gotten a budget for like lucite or some kind of a statue or something trophy i want to call this one out this was just fun because this feels like going back to some of those early shows talking about architecture we've had a series now we've had i think four of these where david's come on and we'll just dig deep into like architecture and get into some pretty cool like queuing and all kinds of you know computer science-y things it's true i remember that being a facet of the earlier shows especially because we were talking about asynchronous io and a lot of the performance stuff and i remember spending quite a bit of time just talking through a bunch of those concepts and it was it even helped clarify a lot of it for me because being forced to explain it all you often make your own leaps of understanding in that moment where you're you're explaining live to someone and you go oh yeah okay now i do understand that i get that oh look it fits into this other thing as i remember talking about iocp and a bunch of other like how async and networks and to clarify a whole bunch of that stuff so part of the thing with that too is then you get the community interaction and they'll say well what about this and it does i i know several times over the years there's been things where it's like yeah you're right we should consider that or that's the case we hadn't you know thought or prioritized or whatever absolutely i think that was one of the um things that we loved about the early shows was how informal they were and how unstructured they were and i kind of thought i i mean yourself and handsome and all probably tell others like i fought for a long time to keep the show as unstructured as possible and i'll admit i resisted a bunch of the efforts to um formalize the format and the even the content uh early on um and obviously since then it's become a standard format that we use across a lot of the dot net teams it has its own site and it has its own we've got all this wonderful production quality and stuff now um but it you don't have to lose any of that um feeling of just having no these are the these are the folks on the show that are working on the product right now and it's an active discussion with the community where you can ask questions in real time get a real-time answer you can ask the hard questions about product versus technology and hopefully the person that's in the room feels comfortable enough to to answer that and has some authority and they can they can walk that line well we've had to do that a few times obviously because we still you know we still look after product as much as we do technology so we need to to think about those things and i've i've always really admired that part of the show where we can we can do that i don't get on as much as i'd like to like i i mean i don't work on the product the same way as i did six or seven years ago either um all of our roles have evolved a bit but um i still like to be able to you know talk to talk talk to the community in this type of format like we do it on github we do it other places but i've always enjoyed this format it and like you're saying it's been pretty cool like that was something years ago um uh james montemagno on our community team now he he said hey could we scale this to a xamarin show and you've got the thing going on with asp.net what about and then when we looked at it we just kept kept just kind of pushing that out further of like hey could we you know and and keep the format but then give all the producers like you know they're kind of on free reign to set their own style for their show yeah every show has its own sort of feel which makes sense and someone just commented actually they missed the we i forgot we used to do this we would usually just crap on about tech for the first five years of the show like that our standard warm-up like it was a chance for hansel and i just to catch whatever we bought that week that's so stupid we would like oh look at this camera look at this thing i bought did you see the new announcement about this laptop or whatever and we would just geek out about stuff nintendo you know yeah i've got i've exactly got that thing up on my dining table right now yeah yeah i've got two slides left and then that's my proposed agenda for the rest of the show is random tech stuff so let me see okay so yeah so we took this and we built the site and this i think is cool because this site actually runs in blazer so it's all asp.net razer pages and blazer all working together and then it like has this really cool automation stuff where it pulls from the youtube and twitch and like it like interfaces with all the apis so when we schedule stuff we use streamyard for streaming now and it automatically gets pulled through an azure function and then this blazer site like pulls in from that so it's pretty cool like automation behind the scenes for it that's amazing i remember being impressed when we were able to schedule a show ahead of time yeah and then have the title be correct and the date not be the wrong day yeah manually copy pasting the embed code from youtube from that little site i created the show's down everyone tweet the new link or whatever oh lord yes if other people pop in you'll see right john yeah yep uh okay so then here's just a few stats i put together um so we uh one and a half million total views um this is across just the asp.net stand-up shows 260 shows two and a half thousand community links this was napkin math so i i did as best as i could but i'm thinking about two and a half thousand community links which is which is really crazy um two and a half thousand youtube comments just on youtube and then overall including twitch and everything eleven and a half thousand total comments well that's the other thing is at first we were just youtube yeah and now we're how i don't i've lost count to how many places we stream to now so currently we're on uh so youtube and and um twitch we're also on periscope to twitter and we're on facebook um wow yeah and it's it's kind of cool um like facebook brings in a different audience we get people from different parts of the world that wouldn't normally show up and then uh periscope is kind or now i guess it's twitter live whatever but that's kind of interesting mostly i think because people see this cool like live video playing in their twitter stream and then they hop over to some of the other ones um but we have some people watch the entire show on facebook or youtube another thing that surprised us was how many people watch on mobile um and so people are always saying zoom in and that was a thing that i learned from scott very early on always zoom up your font size but it's whenever we don't people are like hey i can't see this and and it's surprising when we do polls and also just look at the analytics and i wonder if that's if it's a combination of folks we're not commuting right now i would expect but i wonder if it's like i i was trying to a lot of folks don't have two monitors they might be working on a single monitor so they put the youtube on their phone and they just watch that while they're doing other work maybe i don't know or maybe they they they're like why would i watch netflix when i can watch the asp.net community stand up follow me yeah plot i'm curious like let us know in chat like what's what's your if you're watching on mobile or if you regularly watch on mobile i'm interested i got one other thing i wanted to show off this is just goofy but this is behind the scenes how we are doing these thumbnail generators so i made these things with with um they're just little glitch pages and then it's um you know different things for the different themes and then they're um they are svg and then so like here here's a title here's you know and then that just creates svg and then when we hit generate it creates a png and just download it so we have different themed ones for all the different shows on.net and um and you know several jeff fritz has a cool one that has actually like his his graphics and everything so anyhow i just thought that was funny i learned what a stinger is thanks to this show thanks to james uh what's the twinger the stinger is a transition that has an alpha channel so it's a motion transition that comes in over one you know track on your premiere timeline and then you have a stinger transition which then the second track overtakes you get this beautiful seamless sort of uh you know with a 8-bit alpha channel and obs supports it as well but you typically create them in i think adobe after effects uh or one of the adobe things to to do so so first time i saw it i was like oh that is nice it's you know it's interesting because there's there's definitely like that's the pro way of doing it but there are so many websites that will do that for you now yeah you put in your text and your custom like graphics and your theme and it'll be like it just creates yeah and that's the thing as we said before like streaming was kind of so nancy back then as a as a platform and it's really only the last you know few years it's really come into its own that all of these third-party you know businesses and facilities have become available and like whether it's a a streamer's pack with a whole bunch of assets and sounds and you know whatever else you want to do i'm still not huge into that side of things but it's obviously incredibly popular uh as a lot of people use them but yeah it's just it's such a short time window it feels so like so little time has passed and yet we've seen such a huge explosion um of this type of content it still surprises me well the if you want to feel really old the ipad came out 11 years ago like it didn't exist before that like the only time we'd seen anything like that was on star trek this is true and i wish i had a tablet pc but it was not like that i was talking with eric newcomer this morning if you remember eric newcomer and he works at a company that works on web services and he was reminding me about the time that he wrote the specification for ws transactions to do atomic transactions over stone over soap oh whizzy ws star ws death star yeah lord well all these things seemed like a good idea at the time we should invite folks to ask questions if they do have any questions for us i don't think you and i have been on the show together in a while scott that is a good point and we definitely do need to see any kind of gadgets ooh so here's one i'll have to unplug it oh no i don't have to unplug it this is my pc panel ooh there's a color is that bright bright colors or is that like they're led they're they're customizable rgb okay so this came about because i tweeted one day i was looking at the audio mixer in windows with the little you know the virtual sliders uh where you can change the volume of any application in windows or any sound device in windows and i was looking at my stream deck and i was as i you know at home working became normal i would have a combination of like teams calls and something coming from the browser like stream yard here or running youtube music desktop app or whatever my spotify and i was off i was always trying to normalize the volume like that all the volumes would be different it would be very i would change the volume of the system so i could hear a team's call properly but then my music when i finished the meeting would be far too loud and i think i just demoted online on twitter i was like ah why isn't there a hardware device that takes the best of a stream deck and like an audio mixer and makes it a thing and then someone replied oh what like this thing and they sent me to this website where this had just been announced and so i was like put the pre-order in what is the name of that thing it's called a pc panel and you can get it from i think it's get pcpanel.com um and this was this one is the pro it's about 99 they have a smaller version without the sliders which is just the knobs and each one of these is mapped to a different app so the green one is my overall volume the red one i've made my youtube music volume right for youtube purple is teams because teams purple so i slide it up and down and make teams and then blue is the browser there it is every one of the dials at the top can also be assigned a function and the dials are clickable too and you can assign these to run an xe or you know anything you would typically be able to do with stream deck you can just shell out something if you want something or if you use the volume it doesn't have any xlr plugins no it is not an audio interface it is literally just a bunch of sliders dials okay buttons that you know it's a stream deck slider knobby thing so like stream deck you push a button things happen with that you turn it knob you move a slider things happen exactly exactly and so i use this every day because forever volume part like right now i had to go and manually change this to this thing and i'm always adjusting volume and then i accidentally set the volume of teams muted just on the app basis and i use that application ear trumpet yes so i use that as well the wonderful application yeah volume settings is subtle as soon as you start changing the volume of one app yep uh you're in trouble and that's where it all came from is because i never had to do that until i was working from home and my work day would transition through wanting the sound from different apps at any given point in time and then not being normalized um or i wanted to listen to you know something on youtube like for a while i'm doing it over here on the other pc i run like a window vista from youtube so i can hear birds and things in some mountain lake and i might want to just to adjust that separately i can do it now it's super super simple i have how many is this john look at my screen here yeah i'm in the same same boat there's like 11 some of these i just need to disable because these don't need to be here okay do you want to i can show you something super geeky if we're going to look at the uh the sound sure sound options okay you ready so let me share my screen uh share this oh which one did it share i don't see any shirt yet you need yeah you have to pick the share screen i have to choose which one to share i want to share that one okay can you see that one so well i know you see it now yep so i got so sick of uh the number of audio devices and not knowing which one was which that i created custom icons yeah yeah i did that yeah so i got the pv6 mixer which is my mic my speakers which is that and then i disable any other audio device that i'm not using so it doesn't show up in the list by default i'm gonna actually do that now i'm gonna disable all the i got all these monitors i'm never going to use them but then it's like stream you know steam virtual streaming output like i could maybe use that someday you know but enough to like keep it enabled nah one of the most annoying behaviors i've found is whenever you set up a new device windows swaps to it as the default so i was yeah yeah mucking around with my personal pc yesterday which i've got this lovely new 43-inch monitor on which i'm using to route audio through as well and then i plugged i set up the oculus software to plug in my oculus quest and once the software had installed i lost all sound because it changed the default sound output to the oculus that wasn't even plugged in i just noticed that in the video broadcast was set to default just now and it's like no right i need that i've got i've got virtual desktop audio for streaming to oculus i've got steam streaming for streaming to the steam link and then i've got nvidia broadcast and it's like i probably should just disable them all yes i'm never going to use them until the day i use them right right and it it's such a it it sounds like it's an over-the-top kind of problem but i i watched my kids struggle with this during remote schooling um and you would see you know my daughter would have an external webcam plus uh whatever stuff came with her machine by default there's a digital out and there's a line in and a whole bunch of other sound devices and if zoom had for some reason changed what the audio device was like you know they would struggle to figure out how do i change the audio and they have heads you know they'd have a wireless headset maybe and plus some plugged in speakers so it's not just a problem for you know geeks like us who have far too many audio devices and as you just saw there like even the monitors are audio devices if it's hdmi or display port that carries audio signal and a lot of monitors have an audio out so you can carry the audio over the video cable and so that shows up as another device and creates another way and it's even more confusing if the sp if there are built-in speakers on the monitor so it kind of sounds like it's working but it sounds really bad and it's not coming out of the speakers that you want it to and i've i've had to diagnose all of these issues with my kids machines during the last year of remote learning um i think it's a it's an area ripe for innovation i want them to just separate the physical from the virtual it's the same thing with printers you know i've got all these virtual printers faxing and pdf and stuff and you know no we can't just remove the fax printer somebody's using it you know someone's using it somewhere but if you just have a line and separate them yeah and that was kind of part of my motivation to wanting a physical device to control the volume of all the various sound devices on my machine so i would know oh no this one's mapped to that i know it's going to do that even now as i'm going through this and i'm right clicking and disabling stuff yeah there's like a lowercase a anxiety about i could need that one day might spontaneously need to steam you know streams but i'm only really just using the headphones or this thing and that's it yeah yeah and if you ever do need it you can turn it back on but i've had the same thing it's like oh i don't know i'm scared to turn them off you know yeah and it is it is funny family members have helped them all with the same sort of thing it's like why isn't i can't hear anything or whatever and it's like it's it's confusing look at this apparently the elgato has an interface for audio as well never used yes it does it'll it'll take audio from the camera never needed it all right i've just done it i've cleaned up i've got down to two and two now okay nice well hopefully that's simplified hopefully things will still work well i can still hear you so that's a good sign we've had some yeah i didn't it didn't break my computer i had some random questions come in so i'll just throw them at us um okay clarification on netstandard.net six targets etc okay michael more context perhaps seeking clarification re-net standard disposition dot net six targets etc i mean i can try and guess what you're asking maybe infer that you're asking netstandard versus net five slash six moving forward that's what it sounds like to me yeah um so the reality is as long as people still run on.net framework um dotnet standards not going anywhere um dotnet standard won't evolve like there won't there won't be a new version of net standard i think 2.1 will be the last as was announced a while ago um and as more you know with the release of.net 6 and the integration of the xamarin workloads into net than you know the post.netcore.net then you can truly sort of target any app type through the dotnet tfm you know.net 6 and if you're targeting a platform that requires extra api then you can do the dash you know os at the end of it um but if you are if you're building a library of any sort whether it's a new get package or an internal library just in your solution that needs to be loaded by a.net framework application uh then.net standard is still applicable sorry about that i want to show something funny and i forgot that the audio was already turned on for you i'll mute myself while i fix now you're muted scott we didn't hear you i threw out a clever retort that only if only you changed your audio devices like i had so thoughtfully the wrong person was muted and you so if that was the question michael i hope that that answered it it's it's if you're targeting if you're building uh if you're building say an extension to uh some asp.net core thing then you can um potentially just target the net tfm's for the versions of asp.net core that you want it you know to be supported in if your target if you're building something is more cross-cutting then dotnet standard might still be a thing that you need to think about you okay john i am okay i'm trying to juggle between now okay let me see oh this isn't okay when people send me stuff to review i send it back i don't have i do not have a free piece of the cloud you do have a good looking surface hub behind you though that's on loan and it's got a big old microsoft uh asset tag on it so yeah i took mine back to the office i used to have one up here that's what this stand is um but i got to the point where i i had got it to a point where oh look a wild boss that's why scott hunter's the best boss of oh hello hello [Laughter] how's it going sir it's going great seven years yeah we're just looking at the stats as best rough guess 100 or 1.5 million views of just the asp.net one show him that slide that we had of the show that we do the monday tuesday wednesday slide yeah we're gonna do a review and get like our yearly rewards then just might as well do it live on youtube right right okay here let me bring that up i have to see i'm working through the animation oh it's the one that powerpoint there we go and throwing it on the screen yeah so that's all the shows that all came from the asp.net community stand up because we basically took the playbook and just kind of you know and all the tech stuff we figured out and threw it at all the other ones so that crazy show that first slide of us on day one with all the hair oh my goodness there's that one yeah and i can still puff it up but it's just not there's more forehead yeah yeah so this was four years it's crazy that was four years later and also three years ago but yeah that's that's pretty amazing i need to re i need to redo my office it's really i'm hearing here was the was the one seven years ago that was that when we kind of really we introduced api that was the first one that was asp.net core yeah v-necks as it was called then we didn't even have a name and so this this one most of it like a lot of it was david and damian like with the whiteboard behind him like scribbling stuff up on the whiteboard so yeah i and that's been a fun thing that we've had with the the recent architecture series but that whole style of like scribbling stuff on a whiteboard it was really fun both of you guys have been doing that recently on those that's that's been pretty cool i missed the whiteboard uh the one last one i had was oops no that's not it and i've got to reshare this so these are all our stats just kind of rough but yeah switch to my screen all right so that's september 2nd seven years ago whiteboard that's the whiteboard where it's all figured out right yep that was back in the original team room uh that's the meeting room that was part of our team we opened up with date with david fowler's mac yeah that's right he's still out of mac we're still we're still he still has a he still needs to get a new machine his machines are too slow he just yeah david fowler's computers are bad we'll just tell you as a boss to like get on that he doesn't he doesn't use work machines he buys his own but he just takes too long between each yeah he's got to get on that video that's the future of asp that's an interesting question hmm somebody's job if you can do it on the web you'll be able to do it with asp yeah i mean i i will say like trying to answer that somewhat concretely now like we we're terrible at guessing none of us have a crystal ball um i would say in the beginning one of our first focuses as part of core was performance was definitely a big focus up front um and layering which sounds a bit odd but we really wanted to ensure that we didn't make the same um mistakes with regard which weren't mistakes at the time but in you know 2015 years on it was like what what could we change now if we wanted to reinvent.net we have one chance um and we wanted to re-layer things so that we weren't tied to something that might uh not be as applicable or might hold us back as a product in the future so if we're gonna go fully open source and we're gonna go fully cross-platform that means we can't be tied to a server that ships with the operating system it means we can't be tied to a particular development tool it means we can't be tied to a particular file format that isn't evolving um so and we and we can't have assembly layering in the framework itself that means every application has to bring along 500 megabytes of dependent dependencies or whatever it might be um so we took all of that sort of motivation um and try to start from a foundation of you know small pay for play pay as you go was one of our first philosophies is two uh two up front we wanted to be really sure that your app only brought with it what it needed and you only got exposed to as much api and as many concepts as needed but of course that was always difficult because we also had a 15-year legacy that we wanted to ensure that we could um leverage and build on top of we didn't want to just leave everyone out on an island that they had no way to migrate from to sort of the new and better.net and so we've always had to make concessions and we've always had to make those trade-offs and i think you know here seven years later um you know in.net six we're doing a big push on um minimalizing a whole bunch of ceremony around both booting up an asp.net application uh the hosting layer and the layer with regards to how you build http apis we've had mvc now since before i joined microsoft so like hunter you were around for the beginning of mvc um when i joined microsoft i had not used mvc in a production application i was still very much a web forms guy um and mvc was the new thing and that was done in response to you know uh you know product forces and market forces and that's what happened with core as well and that's what we're doing now with the the minimum the minimal sort of effort is i see it as being two-pronged obviously part of it is trying to ensure that we can appeal to folks who are new to net not necessarily new to programming but that's part of it as well but just newton.net um when you hold us up next to uh other stacks and other things like do we look similar is it easy to learn us if you all you're doing is learning the language um and so that that required some new thinking you know to be really frank that wasn't something that i was looking at particularly or some of the other um sort of product folk were looking at and it took new sort of minds on the team to really push that um and i'm speaking specifically of folks like maria and others who have been pushing that not just through the web framework but through the language and through the tooling and there's a lot of work to do yet but this is um a big effort that we're doing in this release to try and really simplify some of those things also and the other part of it is we learn things over seven years of building it what we thought was a great idea in the beginning you look back and you go turns out we really didn't need quite that much flexibility for 80 of the applications but they're all paying for the complexity that that flexibility brings and so why don't we revise a bit um try and cater more towards the 80 percent in the mainstream but still have the ability to dive down and do the really custom thing if you need to by ensuring the new thing is built on top of the existing thing and that's what the new minimal stuff is the mvc story is an interesting one because the mvc we have in asp.net core is for all intents and purposes the same as the mvc that we shipped back in you know before 2010. there's a high level of concept um compatibility and and thus complexity that that's been there all along and that's not going to go anywhere because there's so much code based on that and there's so much flexibility it provides that a lot of our customers need that and rely on it but as i said not everything needs that and relies on it and so we hopefully will be able to cater to kind of both needs moving forward but it's i think you know hunter will be the first to say we're trying it out it's an experiment um it doesn't invalidate anything that's there already everything we do in every product in for all intents and purposes is an experiment we don't know if it's going to work or not uh if that's not the definition of an experiment i don't know what is um and so everything we try we we try we do so with a bit of conviction and then we we measure and when we we react when necessary it is worth pointing out that that some some people you know call the haters call them whoever think that we just make stuff up and just throw it out there but there are we interview people we interview students we interview folks at big giant companies we interview folks at little tiny companies you know you got to make giant company with a domain you've heard of happy you've got to make 19 year old coming out of college happy you've got to make mid-sized or emerging startup happy and the way you do that is by talking talking to them and sometimes it's informal it's an interview sometimes it's formal where we record them and you know we give them pizza and then they they try a thing and we watch them go look i can't believe they stumbled on that or whatever and we go back and we fix it but we aren't just pulling these things out of our butts no people would like them to like to think and there's big email threads too there's big email threads trust me there's there's huge email threads where we argue with ourselves um back and forth i mean that the whole minimal api thing damien's is is interesting because if i go back and think think about as net core uh one one of our goals was to hide all the magic um it used to be that in web forms and all the net before stuff just worked and you didn't know why it worked and you had to go research how it worked and so one of our goals and the reason i think why there was so much startup code was we tried to be very intentional way back then and show you all the things that are actually happening as the application boots up um and now we're struggling with the tension as damian said of well maybe that's showing you too much um so do we hide some of that back away again um but as damian said it's still there's no magic it's still just it's all still there you can still do all those things if you want to and that's that's just a tension that i think we always fight back and forth with uh and that's why those files have changed considerably since 1-0 to version 6. it's also i think indicative of we sometimes make decisions somewhat late in the milestone a little later than i i wish we could but we don't do big upfront waterfall design like we do big upfront planning for releases and we've just started that for dot net seven today actually you'll see more about that in the coming weeks um but we don't know how people are gonna react to the first three four five six previews we don't know how we feel about what we've built until we've built it and used it and seen other people use it to hanselman's point and that's part of any what i think good product design and to hanseman's point before also sometimes it is just us making stuff up and other times it's us talking to customers and other times it's doing more formal user research and other times it's twitter arguments or a github issue argument and good product design is figuring out when to listen to each and any of those sources and it's very difficult there's really no guidebook that tells you well that's when you should talk to a real customer and record it and that's when you should find a new customer and have them use your thing for the first time with an open stream of consciousness feedback channel and that's when you should go to your your really enthusiast crowd like your mvps or your your twitter folks like that just comes with time um and with having more than one person work on the product more than one point of view to the point before right it's not just myself or fowler or any other you know known name or handsomen um saying well we should just do this sometimes it's that like any product sometimes someone has to make a decision and that person will say well this is the best decision i can make right now and we'll we'll do that and then we'll look at what happens um none of us have a crystal ball we just don't know like we we just i couldn't have told you five years ago what we would be working on in dot net six um i couldn't have told you that we would unify the platform from a branding point of view and increasingly from a technology point of view with dot net five that was your call hunter um i remember you making that call and i remember you having a lot of dissenters internally that that was the right way forward and i might have been one of them for a short period of time um and it turns out that was the right call i think that was the right thing to do and now we're here with net six and every year afterwards we'll just have net and a version will just go up and it'll be easier to understand the first the first day of damien that i get i'm in a meeting with scott guthrie he doesn't call it.net core still i'll i'll rejoice somebody did ask too like hey when is the net six release and just like to make sure people know like we've published this release cadence like out on the dot net website yeah it's not a secret yep and the why why why is it called five because it five is a bigger number than four point eight and why is it called six because it's a bigger number yep monotonically increasing integers and we'll have hiccups to that along the way like engineering is still not a precise science not software engineering anyway um and so every now and then we'll we'll have to adjust course or do little things that we wish we could have avoided but we're doing pretty well so far i think especially after the first three releases we had some real versioning um complexities and i still wish we could make it simpler but the reality is you know semver doesn't solve the world it solves things in the context of a single um unit but when you look at something as large as.net and an entire ecosystem it's just you know someone has to set the direction and some things unfortunately just aren't simple oh that's a great question i'll i'll give you my flavor of the of the justin question damian um early on when we first started doing the original a's net core one of the things one of the feedback that that we got strongly from scott guthrie was hey keep the name space this namespace is the same uh from like the original asp.net mvc yeah um and that's gonna haunt me forever um and that we thought that was too much of a change you know there was there was uh the reason he he made that that gave us that feedback was when uwp had been built uh that's a framework for building windows applications um that framework changed all the namespaces for really no reason and uh it caused a bunch of confusion and some negative feedback um people always ask us like what version of mvc is in asp.net core um and oh is it is it mvc six or seven or 8 or 9 or whatever but i would love to go take those name spaces back and and name the thing correctly uh that's the one change i would make i don't know what damian has but that's one that that i would make i'd love that one like i think we around version three of core if you recall we started trying to de-emphasize mvc in the product and when we introduced razer pages which is built on nvc from a technology technology point of view we changed the methods like we introduced the ad controllers and use controllers and add razor pages and use razer pages because we we knew mvc was a ball and chain from a somewhat from a sort of branding and product point of view and a concept point of view and so we had this project project houdini which was to make mvc and disappear over many years and we're still working through that because it's just not a great factoring it's not a great unit of logic to call a one product and then thus to have other things take a dependency on because it's very large and it's quite complex and as hunter points out it's kind of it's the same thing it's been for a very long time and if you say nbc to someone it means nothing like it's the name of a pattern it should not be the name of a product um but that's what we do we name things after what they are i i mean all these things were like the whole thing it seemed like a good idea at the time but like based on where things were like for instance when mvc came out it kind of did make sense as a product name sort of because it was it was that different from web forms like it's not web forms it's you know and then and we had all the web forms prior to that really right it was just it was not before before there was mvc there was just asp.net and you wrote asp.net code and we only started calling it web forms when there were two um and then we did something else goofy as well and this was something that it's not i don't regret it all but we did web api um which was almost it looked like nvc but it wasn't yeah and that was one of the things that we did fix in in the asp.net core world is we did merge all that tech together into a single pipeline again we had web pages as well we couldn't help ourselves but create separate versions of asp.net with slightly different names that were just descriptions of what they were but that was the most magical version of asp.net it was the most magical version there was more stuff that just turned on by default for you with that that version than any other version um but really i mean web page is still is here today it's razer pages and razer pages is just a more mature um you know as damien said in many cases the work is iterative work and we learn from each one of the things that we do um and so the next ones are better on that topic rather than answering i'll answer that in a second or hunter can or handsome and can but rather than saying what's the one breaking change you could make if i had a magic wand the one thing i would fix about net is the ability to is identity is the ability to rename stuff we basically are very restricted in what we can do with regards to retrospectively changing the name of a type or a method or a property or an assembly um which means that decisions like oh it's called microsoft.asp.net.mvc um have to stay that way forever and in fact we're dealing with this even now where functionality that exists in mvc and asp.net core that we want to utilize outside of mvc for example in the new minimal stuff that we've been doing um we can't change the name of those things we can move types so we can remove the type lower down assembly with type forwarding but its name can't change and so that means the mvc name stays there unless we choose to duplicate the type remove the name and now you've got a type with the same class name existing in two different places which has its own problem so if i had any one magic wand i could fix but if i could use to fix something it would be make it so that we can seamlessly and easily change the names of things version to version in a way that doesn't break customers what about assembly neutral interfaces oh see a is is a related but slightly different um thing that would have solved a lot of problems so that's my that's my regret yeah that was about fixing dependencies and not having to have two types agree on where their common dependency comes from was the ability to say we both depend on ifu and ifu is something that has a member on it called name and it's a string but it's not a type dependency it doesn't say you must be in this assembly and it must be signed with this key and it must be exactly this version dot net core improved that a lot because it removed the strong name requirement and it has better version resolution semantics than that framework did but that's where it stopped we still don't have an a and i level like we did in dnx sort of magical oh although look it looks like an iphone i'll just use it right let's all just agree it's an iphone it i'm not saying never i still think we'll get there one day it's just a super complicated problem and i think it'll take multiple versions for us to get to that world that said i think we're in a better place than we were given you know.net standard and now the net five and six tfms um and and just you know the ecosystem is slowly getting more um welcoming to not you know taking dependencies on something that we had to ship for example which is one of the other issues that isn't a technical issue it's more of an ecosystem issue um that just takes time like no one has a magic wand that can solve that or a silver bullet like it just takes time for us to do so handsome eraktai has a question that's controversial that we should pop in let's do it let's actually leave the question first real quick though the the first question was up there was what does asp stand for yeah that's a fun one and so you know asp stands for active server pages um which was which was the predecessor to asp.net um and that was when we basically you could write code in either javascript or vbscript uh that would run on the server to build a web page this shipped i think in 1996 as part of like us windows 10 everything in the 90s was active activex dynamic dynamic html everything was active and dynamic so you go to the dictionary you look for thesaurus words that are dynamic and idio is one of them activex data objects um and then then asp turned into for a brief moment i think it was asp plus plus yep um which was the predecessor to be being called asp.net and i'm going to guess the plus plus was kind of because it was it was more c-sharpish or c for splashes or object-oriented is why they why they went that way and then the final final branding was asp.net there was xsp in there for a little bit yeah and there was also there were some namespaces i remember that were still xsp or there was print and then there was for a bit there was also asp ng asp next generation oh really yeah yeah asp.net was planned before there were i mean or what became expected it was planned before even c sharp was the language right um so they it was toy with in other languages as well so it it wasn't necessarily going to be a net thing at the time that it was first uh you know brought that that kind of came and stuck with the product all along it doesn't really make sense if you're building a blazer app there is no server potentially in the in the application but it's it's stuck and one of the lessons we've learned is rebranding is very hard um and please don't like scott guthrie told me to my face one day it's like you've got a couple billion dollars worth of marketing on on.net uh you know renaming it to something else that was when scott and i were going to call it titanium or something years ago um yep don't don't do that i think there was an idea to try and lean into the asp as asp instead of asp shortly at 1.2 and do some type of snake based angle as well um but this i mean it's just another demonstration of how product continuity can result in names that don't make any sense for the current thing but they have so much weight behind them it's practically impossible for us to change them we can sometimes pivot the angle through which we talk about the product sometimes nice thanks john um and you know sometimes you might take a you might see us in any given you know learning uh content or marketing channel or whatever it might be um someone might take a language first approach and they'll talk about f sharp or c sharp instead of talking about you know asp.net or they might take a tool-first approach and they'll talk about look i've got vs code or i've got visual studio and i'm building a web app um it all just really depends on the audience and maybe this is a good segue into the question that you wanted us to answer all right let me find it so uh erica eric time this one here saying as a web developer student why should one focus on csharpen.net instead of javascript and node my belief is if you're going to be a web developer in the next 10 years you should learn two languages javascript and a back-end language where that back-end language back-end language might be javascript it might be c-sharp it might be f-sharp it might be freaking erlang doesn't matter but you need to know the language of the front-end and the language of the back end so if you compare c sharp or any or java or any of these other languages with with node with respect to our good friends in the node in javascript community a compiled strongly typed early bound language like c sharp has extreme perf uh benefits over node uh yes you can be successful in any language you can use ruby you can make a whole company facebook runs on php any language will make can make your company successful but the performance benefits of c sharp and dot net are well documented so c is an incredibly versatile language and allows you to make anything on anything i love that john is supporting me by putting this up but also covering me underneath the uh oh look at that here let me disappear i'll throw something else in there while john's goofing around and i'll i'll say that uh you know c sharp was designed to be very toolable as well so the net was designed not only to be a programming language and platform it was designed so tools like visual studio could be built on top of it and give you great productivity aids even even the tools typescript has helped javascript be a little better there but it's not nearly as rich from a tooling perspective as the net space is either i think you know where we try and make this and we can always keep improving but where we try and make these decisions clear is on the.net website and the things that jump out to me here is it's cross-platform open source and it's all the different stuff so yes i can build web with it but i can also build mobile desktop microservices like it's it's very portable i can build games i mean this month i'm planning some like content we're working on for iot we're doing an event at the end of the month so like running code on a raspberry pi and then the performance stuff is is huge like this is you know the the one graphic but then you can dig in and we talked earlier on in this about the performance lab and that was part of the whole design when you know like.net core and asp.net were being like you know created in these early shows was like how do we make it fast how do we make it competitive because it wasn't early on you know like no i still remember when when i got angry we made the smurf lab for the first time i want to answer the question slightly differently because i've i consider myself a web developer over any other type of developer i've been a web developer way back since hot dog you know html editor um in the first versions before i even existed and so when i when folks ask me that question i give an answer that's probably a variation of what you said hanselman um i always like when i very first started i learned um i did asp 101 i did asp.net sorry asp classic is my first sort of server-based programming um and i did i had an oracle back-end in the first app i i worked on and so i had to learn uh pl sql and which for the first time which was just a variation of sql i didn't have to do anything particularly procedural it was mostly just sql and i had to learn um vbscript which i had done in some access forms and you know those type of excel automation and stuff like that previously um and then it was all the web-centric stuff and so the the the challenging thing about web programming which is still true to this day what's it's more true to this day is that you're not learning one language for the front end like you said javascript scott but you have to know html you have to know css or some derivative and some tool chain that does it for you you're probably learning a framework to do the front end as well whether it's bootstrap or something else html has evolved enormously in the 20 30 years that i've been using it to the point that i still have to look up element references for elements i forgot were added as part of html5 or we're in the spec but we're not supported by a browser until the last webkit release of the last chromium release six months ago or whatever it might be um so you go to canius.com to figure that out and i haven't even talked about css yet which you know we used to talk about css 2.1 being the be all and end-all and then they introduced grids and flexbox and frameworks and scss and i still don't know how to use flex layout because i've never had to build a site in anger using it so i have to look that stuff up if i want to use it and we haven't even got to the back end yet and so i typically say to folks i think i tweeted this recently was if you're going to be a web programmer you need to learn http and i wish i had learned http better earlier like we went through people might forget now we went through this whole rest revolution where someone went oh why are we doing all this other stuff like we have a a wire protocol like we have this protocol that has all these semantics for describing everything that we're layering on top of it when we don't need protocol flexibility we don't need to be able to take our messaging protocol and have it run on our transport separate to http let's just use http it's ubiquitous it goes through every firewall like you can run it over any port like let's just and we have a built-in client on every os why don't we just use that for everything and we're still here 10 years after that happened or even more and we're still talking about how better to use hdp and hdb cell http http itself has started evolving after a long period of stagnation we got http 1.1 back in the 2000s and didn't do anything for years we got web sockets and we thought that was incredible and now we've had http 2 and http 3 because mobile devices and ads and search necessitate the need and and security have necessitated the need to evolve those things and so but but the knowledge of hdb11 is not lost like it's the same verbs it's the same connection semantics at a high level and it's the same programming primitives that you use to program again against hdb2 and three typically at the layer that we work at so i would say learn http um and then depending on how you interpret web do you mean building apis and having a front end call them or do you mean running your app in the browser tailor what it is that you want to learn as a derivative of the answer to that um you know if it's net or if it's python or if it's perl or if it's java or whatever else knock yourself out like the truth is we sell tools for all of them and we have run times for all of them um but i love net i'm a dot net person and i and you can do practically anything in dot net now and we'll continue to keep pushing it forward um but yeah i think you know the options for a web developer have never been richer but yes it does make them more complicated it's more choice and choice is one of those things that sometimes it feels like i wish i had less choice but they're all good choices well you know that and you string a lot of stuff together today damian too the other part about modern web developer development is you're going to take a bunch of tool chains and chain them all together so it's not just you're not just going to use javascript you're not just going to use node you're probably going to use react or angular as well then you have to go use the tool chains to go make those things pre-compile and do all their stuff and so uh it ends up being way more complicated it's interesting i think if i go back to i started the same place the damian started and it just seemed simpler back then it feels like it's something we've not it doesn't need to be complicated i i love this this is my favorite blog post i've read in a long time and this is from the 18f team that it's people from industry going to work in government and they make this whole case for simplicity and they this is about architecture but they talk about why and it's cost-effective maintainable all these things but they say if you can make static make it static if you need if it can't be static try to make a server rendered if you can't do that then like work your way up towards interactivity and javascript and complex front-end apps and they're making this case from the point of view of development but i think also from the point of view of learning this as a developer like damian was saying start with http i also highly recommend as a web developer don't dig way deep into too many frameworks and wire all the frameworks together and stuff learn how to build a static built static html you know like make that work then build server rendered master those things and then layer on the dynamic complex component based build chain stuff i would i would also add to borrow from what i've heard handsome and preach for years now um and maybe with a bit of artistic license riff on it don't think about learning a language don't think about learning a framework think of those as tools themselves they are just tools for learning a concept like ultimately what you want to develop is some type of some capability and systems level thinking so that when you see something new for the first time you can identify what part of the overall model of just software development in general it fits into is that a language and if it is a language is it a pre-compiled language or is it an interpreted language or you and you will learn those you can't learn it all in one day but you can learn in a fairly reasonable amount of time these concepts and c-sharp is an example of a concept the net runtime is an example of a concept a browser is an example of a concept and so on and so forth a database a micro service uh command queries request separation you know pick your acronym pick your enthusiast level argument on the internet they're all simply examples of a pre-existing concept that someone has now either combined with another one or reinterpreted a a new way or added some ceremony to or removed some ceremony too and and lay it on some type of opinion and the the biggest thing looking back that 20-plus years in this industry has given me is simply the ability to identify a new thing or recognize one or understand it new newly by relating it to something else that i learned and go oh that's this with this twist on it and so as a new person i would hope that what you aim to do is to get to a point where you can when learning a language or learning an ide or whatever it might be think about the thinking behind it think about the concept that it represents not the fact that you know visual studio or that you know c those are useful things like knowing word or excel is useful but excel is a spreadsheet which is a set of concepts and i know handsome you've done some great podcasts on the history of of the spreadsheet and as a concept and the software that's sprung from that and i don't see this as being any different yeah i love to give this example here where i'm going to send an email and i'm going to attach a file to it and web developers do this every day and 99.9 of them have no idea how it works they just assume that it works like you understand http you understand maybe http headers but you take email for granted so take this email and flip it over look at the back side and i see name value pairs separated by colons i see a multi-part mime type with a boundary here and here now we look at an html form being posted here's an email there's an html form being posted everything no matter and object databases and redis and sql and the world is a big distributed hash table of name value pairs they're magic magic strings the word referrer in the http spec for hp refer has been misspelled for the last 40 years and will always be till the internet continues to work absolutely absolutely i just think people need to come back to the basics i really like these examples you know i always like to use my car examples uh gaming where it's like listen if you're an uber driver do you need to be a mechanic no is it nice if you know how to change your tire yeah obviously you'll be a better uber driver but you're not required to know that but you should probably know that your car has tires and how tires work and the things to take that analogy another way yeah you don't learn to drive a toyota and then hop into a mazda and go oh i can't drive this it's it's it's like well no it has a wheel it has some pedals and you know you look out the front and maybe it has a gearbox and maybe it doesn't but you'd learn to drive one car and you can pretty much get in any car and figure out how to drive it now it's not a direct comparison but it's not far off most languages pretty much look the same a for loop is a for loop a while loop is a while loop a conditional branch an if statement is an if statement like syntax might change the color of the leather seats might change from car to car but it's basically the same stuff and that scales all the way up um and all the way down like all the way down and we talked about this in the architecture series john to like cpu level instructions like there's a queue there are multiple queues inside the cpu like implemented in hardware multitasking is a lie multitasking is a lie until you have threads but even then there are shared stuff like those concepts if you can draw them on a whiteboard this is why whiteboards are so great and it's something that's hard to rep it's hard to replicate in our current work environment is that if you can draw it with lines and boxes which you know lewis on the asp.net back on the asp.net team in the beginning used to force us to do labs lines l a b lines and boxes you're going to describe the thing you want to build on a white board with only lines and boxes almost everything can be described that way and you'll find the more you do there aren't that many different boxes and there aren't that many different lines you're going to start labeling them very similarly no matter what you're talking about i would caution people this is a reminder that having um re taking a new concept and then applying it to what you're learning or what you're currently doing make sure that you're saying oh it's like this it's just familiar it's not just like this oh go oh you're just c with that way you're you're applying it like yes a spinning hard drive is similar to a vinyl record it's not just a vinyl record with metal and magnetics instead of you know so we tend to want to minimize things because when overwhelming concepts drop upon us we go and say oh wow blazer is just really interesting technology yeah you know and also just to highlight that i'm not trying to say that it's not complex it is complex and to like try and demonstrate a bit of new learner empathy for a moment imagine you're a person new to web development you run something for the first time and you see a message about a port conflict how on earth would you ever know what that means if you are new to networking new to operating systems let alone new to web programming what is a port and what is it conflicting with you've never heard the the term web server or why you have to have one running before your browser can connect to it let alone dns and name resolution all those things so we've seen people go through this part of their journey when doing the type of user labs you talked about before hanselman and it's incredibly challenging as a product person to think how would i help the user who is you know earnestly trying to learn web programming in all good faith and they get hit with an incredibly common problem like a port conflict how would i help them resolve that how could i do something that would make that easier for them it's incredibly difficult there are so many concepts that we take for granted even after six months of doing this let alone 20 years or more like all of us on the call have um that trying to to trying to think like a new like a new user is incredibly challenging and trying to design products and and experiences that cater to them is also incredibly challenging knowing how much complexity exists below every single layer of everything that that we all work on that that's why damien when we hire new people the first thing we do is watch them try to use our software because it's like it's fun it's in many cases it's great to bring new people new talent into the team and let them see and hear them tell us the product from their eyes some of the minimal api stuff are came from some of those types of insights absolutely absolutely did in fact the port conflict example was one i think we i literally remember occurred to a new program manager on the team and it was wow talk about how much we take for granted when someone sits down and uses our product for the first time how would how could you conceivably expect anyone to understand what that means if they're new to this in general and it's worth pointing out that while you might say oh well.net does this well or wrong and no does this well or wrong we do forget that there is a different brain set a different mindset for someone who was there when the web itself was invented right i was there when we invented fire is very different from like here's a lighter push this button and makes fire that's a lot i don't know there's a lot of people just taking stuff for granted you push the gas pedal and the thing goes forward and if webpack fails you go straight to stack overflow uh the example i like to give actually i'll share my screen again i think i've shown you this presentation before damien i don't know if scott hunter has seen it oh no i just i removed the the toaster concept whenever i start teaching classes on software i say all right hey kids let's learn how to code my toaster's broken and they all look at me like i'm an idiot and i'll say well what should i do to debug my toaster and they'll be like well buy a new toaster that's the go to stack overflow and look for the answer right thing right but systems thinking is what we look for hunter talks about this when we hire we're not interested in whether you know the trivialities of c sharp we want to know if you know where it fits into a larger system is the power on to the toaster what if you plug in a light that means you know that power is a thing and it exists do you know that a fuse box exists is there power on it all i gave a talk on this to some 14 year old young girls with black girls code and one of the little girls yelled out do the neighbors have power that was such a genius thing i'm trying to make toast and she's already peeking out the outside window looking to see if the neighbors have power to make that leap of logic that's the it's always dns right like you have to know that those things exist this is the true cheating superpower of any highly proficient technical professional i've ever worked with by the way is the people who can make those leaps of deduction through a little bit of knowledge that they've gained in prior examples even if they've never had this exact problem before think about there are infinite possibilities for what could possibly cause something to go wrong just like you know solving a rubik's cube you learn the patterns and you go well if i can determine it's not x i can rule out 50 of all the possible things that could be causing this right and watching those people who can deduce problems quickly because they know how to jump from one logical deduction to the next through trial and error or through informed um observation is incredible and that's you it can be learned you don't have to be born this way it's not that your brain works a certain way you can learn how to problem solve this way and sometimes it is sometimes you hit hit uh you hear hoof beats and it is zebras and sometimes you hear them and it is horses um and then you know things like this is a great when we saw the sherlock holmes bbc where this woman kills her husband but then she has an alibi because she's on the other side of the of the of the town and watson's like it's twins it's all you know and then surely whatever it is it's never twins um i thought this was is interesting because what what you're both talking about is the problem-solving approach and this is what we've learned over time but i forget who i think it was david fowler was mentioning this too recently it was like there was something where you know that we can continue to make our products better in surfacing those so that we can intuitively see oh maybe the irish message shouldn't say port conflict maybe or maybe it should say we've detected a port conflict this is often caused by you know you may have more than one instance of this server running you may you know like um or troubleshooting steps are here or that kind of thing i think i think it's definitely like and that and and these are things we think about as we're designing and seeing people and and like you mentioned those usability labs where we watch people use our products and see what are they getting stuck on i never would have thought like i just wake up thinking about port conflicts so this isn't even you know right and from a systems design or product design point of view this is i've always called like the designing for the failure mode like so often when we when we see a new proposal for something one of the first questions i'll ask is how can this fail and what will the developer who's using this feature logically or likely be able to determine from the way that it fails um we should be able to as product designers be able to to to predict some level of how it will fail because we you know we expect us to have more knowledge of the underlying systems and the ways that they can go wrong and how that will manifest when the thing goes wrong and so we do think about that a lot and in fact in the minimal stuff a lot of our final polish that we've been doing is exactly this is by looking at the types of ways that we have ourselves have failed trying to use the features that we've built or whenever a new team member joins the team or we see feedback on line or i think fowler has even been trolling through github through public code repositories on github to find people who are already using these new apis and then sending prs for where they've done something wrong and then we roll that in to the work item that we have to improve our error messages and sometimes that's incredibly difficult i think one of the best examples that really inspired me early on speaking of mvc hunter was the view cannot locate view exception from mvc one which was you know you said please load return the view home dot cs html um and it was like well i couldn't find it and then it would list all the places that it looked i said i looked in all of these houses in this order yeah and so we're doing a very simple type i got an error message and here's how to fix it i'm like somebody is looking out for me and making my day better you know right and so we we uh i often think back to that exception message whenever i'm thinking about failure modes in.net apis now especially in asp.net at a higher these higher level frameworks that can assume a lot more because they assume a lot more um that you should be in a lot of cases you can fail with a far more descriptive error sometimes those errors aren't definitive and we have to say it could be one of these three things we can't tell which one because rules of computer science say we can't tell which one of these things are it is but it's probably one of these three things and so we are trying to do that more with the errors that we love these days and i i think an important design part with that is to like hear this message we've all seen you know this sort of thing but yeah i feel like there's also a trap where you can make an error message too simple like oh something went wrong and it's like well that doesn't help me solve the problem so like that's not a friendly error message it doesn't help me i i that's just something that frustrates me sometimes is when error messages try to be too friendly without giving me the information i need to solve the problem so maybe i might just finish with it with an example from today i had unfortunately a problem on my work machine i had installed um my first rc2 build because you know we're already working on rc2 rc1 is going to be out very soon um and as soon as i would install an rc2 build the net command would stop working on my machine i would get a wall of red text and it was some error about a workload manifest and the the big clue was that it was always looking for this file in the current directory and failing i was like well my machine's hosed the only way i could fix it was to uninstall rc2 and so i had a thread going on with the folks on the team that are responsible for this part of the code and no one could figure out what was going on so this morning i debugged through it i didn't have the source code i just used visual studio to launch the debugger by running.net exe with the command that i know fails and then you know set you know break on all exceptions and then try and debug through everything and what we finally figured out was that it was a casing issue within my program files under the net directory there is a full sdk manifest which is a new thing in this release and the there's a folder for each manifest i have like eight of them but they didn't all have the same casing some of them were lower case and some of them were title case well that's a bit of a clue but why would that cause it to fail well it turns out on newer machines they're always lower case and the developer that i was debugging with was like that's strange in back in preview 4 i made the code change to normalize all the manifest casings so they're always lower case so our best guess is that i've had i had a build before preview 4 that laid down some manifests with the old casing and then i've just been upgrading ever since right which most folks don't do because i would have had some internal build that i installed and then it's always been updating since then and the installer on windows doesn't see the casing of the files as being a thing to change because on windows files are case insensitive and so it's just been happily laying down files inside the old cased folder ever since and but there's code now that assumes all the folders are lower case because that that because that's what we changed it to some previews ago we don't know exactly where the issue is but it is definitely to do with the fact that i have mixed casing and i was ending up with like some part saying it's trying to find it's duplicating all of the manifest it's finding 16 instead of eight but eight of them have a null id because it couldn't figure out the the directory properly so every single command would just fail saying i can't find the manifest in the current directory and i had to debug through it to figure that out so that's the type of thing that we're talking about when sometimes it's really difficult to create an error message that would have been more informative in that case because it's based on an assumption that's been in there for eight months now and i'm just in a rare circumstance where for some reason i had a mix of casing um but we try we try to make them easier i was going to bring up an example of something on my podcast website so while we were talking i go up to my podcast just now and when i click on which is written in asp.net razer pages and when i click on a page now you can try this on your machine it redirects to the home page but it doesn't okay so the page stays the same but it's redirecting to the home page but nothing has changed okay bring up my system here real quick yeah so i'm here if i click on episodes you pick one here's f sharp 799. watch the url oh interesting okay now nothing has changed.net hasn't changed the site hasn't been updated in 11 in 17 days we go out here we do the obvious thing we hit refresh okay we hear we see a 200 what's going on like it's starting to act it's starting to act weird but now i'm looking in here look at this in this bizarre i'm seeing like could it be that some react website is down something like some external depend like i don't know yet i'll figure it out in a little bit some external dependency has changed this failed to failures that who's loading stripe i don't have a strike on my web page right and this is where things get interesting you know what i mean this is the kind of stuff where i'm completely in over my head but i know that it's not a black box so i'll figure this out in the next you know 20 minutes or something and now i've got a blog post and as a web developer it's another reminder that you'll get comfortable with the developer tools in the browser because sometimes it's the first line of uh defense you have against some weird error that comes up for the first time out of the blue is like check the console what's going on in the browser and here's a great example this is it's just weird to see they're saying stripe won't load i don't use stripe have you got ads on that site now from an embedded they're just pictures okay that's interesting so it's like did the the people who make this podcast player oh they're there you go yep so now my podcasts player if i click it the new one is not coming up see i have a i have a podcast player and i have one that works with transcripts and you can see it did the switch and that podcast player didn't show up so someone's javascript has broken my stuff interesting bit right as we say in the industry you can't just build a website and leave it and have it run forever anymore it's just not really not twins though oh man well it's uh we should probably wrap up here i guess we have other meetings and things to do and stuff but we can reconvene next september seven yes so thanks everyone for showing up and and including everyone watching live it's it's uh this is an amazing experience to be able to like build a product together with the whole community like this so all right i'm gonna go get my freaking thing now have fun thanks everyone bye [Music] do [Music] [Music] i
Info
Channel: dotNET
Views: 6,004
Rating: undefined out of 5
Keywords:
Id: 0wscoCzfIH0
Channel Id: undefined
Length: 90min 36sec (5436 seconds)
Published: Tue Sep 07 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.