Modernizing .NET Applications with Tomáš Herceg
Read full transcript 20 segments
-
hi I'm Scott Hanselman this is another hi I'm Scott Hanselman this is another episode of Hansel minutes today I'm episode of Hansel minutes today I'm episode of Hansel minutes today I'm talking with Tomas hereg he's the CEO of talking with Tomas hereg he's the CEO of talking with Tomas hereg he's the CEO of rianti and the recent author of rianti and the recent author of rianti and the recent author of modernizing Donnet web applications how modernizing Donnet web applications how modernizing Donnet web applications how are you sir I'm great thanks for having are you sir I'm great thanks for having are you sir I'm great thanks for having me yeah thanks for hanging out um this me yeah thanks for hanging out um this me yeah thanks for hanging out um this is fantastic so modernizing net web is fantastic so modernizing net web is fantastic so modernizing net web applications just came out from apress applications just came out from apress applications just came out from apress it's like 600 Pages you've kind of it's like 600 Pages you've kind of it's like 600 Pages you've kind of dropped the holiday book of the Season dropped the holiday book of the Season dropped the holiday book of the Season here uh with a complete road map for here uh with a complete road map for here uh with a complete road map for basically anyone who wants to modernize basically anyone who wants to modernize basically anyone who wants to modernize their net web applications it looks like their net web applications it looks like their net web applications it looks like a huge amount of work how long have you a huge amount of work how long have you a huge amount of work how long have you been working on this book uh I tracked been working on this book uh I tracked been working on this book uh I tracked all time I spent on that and I was all time I spent on that and I was all time I spent on that and I was surprised it was less than I thought it surprised it was less than I thought it surprised it was less than I thought it was about 500 hours was about 500 hours was about 500 hours uh maybe not all the time is included uh maybe not all the time is included uh maybe not all the time is included but I guess like I tracked at least 90% but I guess like I tracked at least 90% but I guess like I tracked at least 90% of it so that's a huge amount of effort of it so that's a huge amount of effort of it so that's a huge amount of effort though but you've also been a Dev for though but you've also been a Dev for though but you've also been a Dev for over 15 years you've been an an a over 15 years you've been an an a over 15 years you've been an an a Microsoft MVP uh you're the CEO of a Microsoft MVP uh you're the CEO of a Microsoft MVP uh you're the CEO of a software development company in Prague software development company in Prague software development company in Prague so there's the 500 hours of writing but so there's the 500 hours of writing but so there's the 500 hours of writing but then there's also thousands and then there's also thousands and then there's also thousands and thousands of hours of actual experience thousands of hours of actual experience thousands of hours of actual experience I assume your company does this kind of I assume your company does this kind of I assume your company does this kind of work yeah exactly that was basically work yeah exactly that was basically work yeah exactly that was basically what led me to writing this book because what led me to writing this book because what led me to writing this book because we had a lot of modernization projects we had a lot of modernization projects we had a lot of modernization projects for banks and financial institutions for banks and financial institutions for banks and financial institutions they had a lot of very old web forms they had a lot of very old web forms they had a lot of very old web forms apps sometimes even running on NET apps sometimes even running on NET apps sometimes even running on NET Framework one so like I I saw this
-
Framework one so like I I saw this Framework one so like I I saw this experience aggregated across several experience aggregated across several experience aggregated across several projects and uh I I thought a lot of I I projects and uh I I thought a lot of I I projects and uh I I thought a lot of I I saw a lot of people were quite confused saw a lot of people were quite confused saw a lot of people were quite confused what are the equivalents of these old what are the equivalents of these old what are the equivalents of these old Frameworks and Technologies what Frameworks and Technologies what Frameworks and Technologies what strategies they should uh they should uh strategies they should uh they should uh strategies they should uh they should uh select when migrating and also and select when migrating and also and select when migrating and also and that's one special chapter in the book that's one special chapter in the book that's one special chapter in the book it's about how to explain the need of it's about how to explain the need of it's about how to explain the need of modernization to like business people to modernization to like business people to modernization to like business people to management because uh yeah it's it's a management because uh yeah it's it's a management because uh yeah it's it's a technical decision what you need to do technical decision what you need to do technical decision what you need to do what you need to change to modernize the what you need to change to modernize the what you need to change to modernize the application but also other people in the application but also other people in the application but also other people in the company they need to understand why it's company they need to understand why it's company they need to understand why it's necessary and what are the risks if you necessary and what are the risks if you necessary and what are the risks if you don't do it okay so let's talk about don't do it okay so let's talk about don't do it okay so let's talk about that and I'm going to use my blog and my that and I'm going to use my blog and my that and I'm going to use my blog and my sites as an example because we're going sites as an example because we're going sites as an example because we're going to pretend that I'm a little company you to pretend that I'm a little company you to pretend that I'm a little company you know hans.com is one person um my blog know hans.com is one person um my blog know hans.com is one person um my blog has been net web forms and asp.net has been net web forms and asp.net has been net web forms and asp.net 2 for 20 plus years yeah it works fine 2 for 20 plus years yeah it works fine 2 for 20 plus years yeah it works fine why should I as a business person bother why should I as a business person bother why should I as a business person bother modernizing if it works fine today modernizing if it works fine today modernizing if it works fine today yeah so it depends on multiple factors yeah so it depends on multiple factors yeah so it depends on multiple factors one is if the application is uh still one is if the application is uh still one is if the application is uh still developed or still extended with new developed or still extended with new developed or still extended with new features and if there is some active features and if there is some active features and if there is some active development going on then it the benefit development going on then it the benefit development going on then it the benefit is much higher because like everybody
-
is much higher because like everybody is much higher because like everybody will get more efficient there is a lot will get more efficient there is a lot will get more efficient there is a lot of security concerns NET Framework is of security concerns NET Framework is of security concerns NET Framework is still supported that's not a problem but still supported that's not a problem but still supported that's not a problem but uh like a lot of time any improvements uh like a lot of time any improvements uh like a lot of time any improvements in terms of security like better in terms of security like better in terms of security like better algorithms for hashing passwords better algorithms for hashing passwords better algorithms for hashing passwords better management of Secrets for example in the management of Secrets for example in the management of Secrets for example in the codebase that's that there's like dozens codebase that's that there's like dozens codebase that's that there's like dozens of these tiny improvements that in when of these tiny improvements that in when of these tiny improvements that in when you add everything together they can you add everything together they can you add everything together they can make a huge difference and with new make a huge difference and with new make a huge difference and with new regulations like gdpr or things like regulations like gdpr or things like regulations like gdpr or things like that uh it will be quite difficult to that uh it will be quite difficult to that uh it will be quite difficult to pass these new requirements with very pass these new requirements with very pass these new requirements with very applications for example yeah I think applications for example yeah I think applications for example yeah I think that's a really great example and I also that's a really great example and I also that's a really great example and I also wanted to support mobile I wanted to do wanted to support mobile I wanted to do wanted to support mobile I wanted to do make the web app Progressive uh have it make the web app Progressive uh have it make the web app Progressive uh have it be faster I think the expectation of the be faster I think the expectation of the be faster I think the expectation of the speed of an application is greater in speed of an application is greater in speed of an application is greater in 2025 than it was in 2002 when I launched 2025 than it was in 2002 when I launched 2025 than it was in 2002 when I launched the blog and if the blog loaded in a the blog and if the blog loaded in a the blog and if the blog loaded in a couple of seconds before that was fine couple of seconds before that was fine couple of seconds before that was fine but now I need this blog to load in you but now I need this blog to load in you but now I need this blog to load in you know sub half second or even a tenth of know sub half second or even a tenth of know sub half second or even a tenth of a second a second a second uh so for me upgrading to net core was a uh so for me upgrading to net core was a uh so for me upgrading to net core was a performance benefit that was I mean it performance benefit that was I mean it performance benefit that was I mean it was probably 10 or was probably 10 or was probably 10 or 20x yeah it can be performance benefit 20x yeah it can be performance benefit 20x yeah it can be performance benefit if if your block site takes few seconds if if your block site takes few seconds if if your block site takes few seconds too loud it's it's a killer for uh too loud it's it's a killer for uh too loud it's it's a killer for uh search engines because they will give it search engines because they will give it search engines because they will give it much worse ratings and they will not
-
much worse ratings and they will not much worse ratings and they will not recommend the site uh also it can uh recommend the site uh also it can uh recommend the site uh also it can uh affect the costs like the websites in affect the costs like the websites in affect the costs like the websites in Azure on Linux they are like cheaper Azure on Linux they are like cheaper Azure on Linux they are like cheaper than the windows so if you will be able than the windows so if you will be able than the windows so if you will be able to run the application on Linux it can to run the application on Linux it can to run the application on Linux it can make a difference even for a small blog make a difference even for a small blog make a difference even for a small blog site for example and uh also in bigger site for example and uh also in bigger site for example and uh also in bigger projects where you have larger projects where you have larger projects where you have larger development teams it's uh quite it's development teams it's uh quite it's development teams it's uh quite it's like increasingly difficult to hire new like increasingly difficult to hire new like increasingly difficult to hire new team members in this Legacy projects team members in this Legacy projects team members in this Legacy projects because people who started working with because people who started working with because people who started working with net eight years ago net eight years ago net eight years ago they may not even met The NET Framework they may not even met The NET Framework they may not even met The NET Framework they already started in net core and they already started in net core and they already started in net core and they didn't met the old world so it will they didn't met the old world so it will they didn't met the old world so it will be over time it will be increasingly be over time it will be increasingly be over time it will be increasingly difficult to find people with that the difficult to find people with that the difficult to find people with that the necessary skills and of course everyone necessary skills and of course everyone necessary skills and of course everyone wants to stay updated with the new wants to stay updated with the new wants to stay updated with the new versions because otherwise your value on versions because otherwise your value on versions because otherwise your value on the market also decreases if you know the market also decreases if you know the market also decreases if you know only 20 years old stuff so that's also only 20 years old stuff so that's also only 20 years old stuff so that's also an argument which the management of the an argument which the management of the an argument which the management of the company would probably understand that company would probably understand that company would probably understand that it will be difficult to hire another it will be difficult to hire another it will be difficult to hire another people to the project yeah totally agree people to the project yeah totally agree people to the project yeah totally agree I want to pull back on the conversation I want to pull back on the conversation I want to pull back on the conversation you just said about the cost which is you just said about the cost which is you just said about the cost which is huge for me so I'm paying for my own huge for me so I'm paying for my own huge for me so I'm paying for my own Azure time and I always say if you you Azure time and I always say if you you Azure time and I always say if you you know if you talk to a Microsoft employee know if you talk to a Microsoft employee know if you talk to a Microsoft employee and they're running around on free Azure
-
and they're running around on free Azure and they're running around on free Azure time don't trust them because they're time don't trust them because they're time don't trust them because they're not going to architect their application not going to architect their application not going to architect their application in an efficient way because for them the in an efficient way because for them the in an efficient way because for them the time is free I was running this thing on time is free I was running this thing on time is free I was running this thing on a virtual machine on a Windows Virtual a virtual machine on a Windows Virtual a virtual machine on a Windows Virtual Machine on I is very heavy very Machine on I is very heavy very Machine on I is very heavy very expensive for me moving to net core now expensive for me moving to net core now expensive for me moving to net core now net you know net you know net you know 6789 uh was a choice it was about choice 6789 uh was a choice it was about choice 6789 uh was a choice it was about choice I wanted Linux I wanted Docker I you I wanted Linux I wanted Docker I you I wanted Linux I wanted Docker I you know I could do windows I want to have know I could do windows I want to have know I could do windows I want to have that that option so as soon as I could that that option so as soon as I could that that option so as soon as I could run it anywhere as soon as I could run run it anywhere as soon as I could run run it anywhere as soon as I could run my blog on a Raspberry Pi it gave me a my blog on a Raspberry Pi it gave me a my blog on a Raspberry Pi it gave me a sense of like okay now where do I want sense of like okay now where do I want sense of like okay now where do I want to post do I want to go to a tiny to post do I want to go to a tiny to post do I want to go to a tiny container on Lode do I want to run it on container on Lode do I want to run it on container on Lode do I want to run it on Heroku and I ended up switching to a Heroku and I ended up switching to a Heroku and I ended up switching to a tiny I think I'm on a P1 uh application tiny I think I'm on a P1 uh application tiny I think I'm on a P1 uh application server on Azure it went down by like $40 server on Azure it went down by like $40 server on Azure it went down by like $40 a month and it's so fast it's so fast a month and it's so fast it's so fast a month and it's so fast it's so fast yeah and there is a lot of uh case yeah and there is a lot of uh case yeah and there is a lot of uh case studies from bigger teams like from the studies from bigger teams like from the studies from bigger teams like from the team how much they saved when team how much they saved when team how much they saved when migrating to net 6 and then to even new migrating to net 6 and then to even new migrating to net 6 and then to even new newer versions like there are really newer versions like there are really newer versions like there are really huge amounts of money that can be saved huge amounts of money that can be saved huge amounts of money that can be saved just by like using more performant new just by like using more performant new just by like using more performant new version of net and I love the actually version of net and I love the actually version of net and I love the actually the longest chapter of the book is a the longest chapter of the book is a the longest chapter of the book is a chapter describing all the benefits and chapter describing all the benefits and chapter describing all the benefits and all the features of the new. net what all the features of the new. net what all the features of the new. net what you will gain if you modernize and like you will gain if you modernize and like you will gain if you modernize and like I'm referencing the Steven tabs blog
-
I'm referencing the Steven tabs blog I'm referencing the Steven tabs blog posts these very long blog posts with posts these very long blog posts with posts these very long blog posts with thousands of like performance thousands of like performance thousands of like performance improvements that get in every version improvements that get in every version improvements that get in every version of net this is really amazing stuff of net this is really amazing stuff of net this is really amazing stuff amazing platform improvements that we amazing platform improvements that we amazing platform improvements that we can enjoy so what are reasons that can enjoy so what are reasons that can enjoy so what are reasons that people feel like they can't modernize people feel like they can't modernize people feel like they can't modernize that they look at their codebase and that they look at their codebase and that they look at their codebase and they go oh our codebase they go oh our codebase they go oh our codebase uses this I we can't we can't do it for uses this I we can't we can't do it for uses this I we can't we can't do it for example I was on a thing called dos blog example I was on a thing called dos blog example I was on a thing called dos blog Das blog uh that is now managed by Mark Das blog uh that is now managed by Mark Das blog uh that is now managed by Mark Downey and we had used the registry we Downey and we had used the registry we Downey and we had used the registry we had back flashes and hardcoded paths for had back flashes and hardcoded paths for had back flashes and hardcoded paths for the C drive and uh we had one or two Cal the C drive and uh we had one or two Cal the C drive and uh we had one or two Cal objects and that made us feel like we objects and that made us feel like we objects and that made us feel like we could never move but the really big one could never move but the really big one could never move but the really big one was we used web forms so we were just was we used web forms so we were just was we used web forms so we were just convinced that web forms was going to convinced that web forms was going to convinced that web forms was going to prevent us from ever moving prevent us from ever moving prevent us from ever moving forward I think that um it again it forward I think that um it again it forward I think that um it again it depends I guess every team has uh a bit depends I guess every team has uh a bit depends I guess every team has uh a bit different concerns uh I think that uh it different concerns uh I think that uh it different concerns uh I think that uh it uh depends a lot on uh code quality and uh depends a lot on uh code quality and uh depends a lot on uh code quality and uh testability of the applications uh testability of the applications uh testability of the applications because if you have thousands of tests because if you have thousands of tests because if you have thousands of tests then you are less scared to make even then you are less scared to make even then you are less scared to make even bigger changes to the application you bigger changes to the application you bigger changes to the application you are not scared that you will break are not scared that you will break are not scared that you will break something or at least you will not break something or at least you will not break something or at least you will not break something important you can make some uh something important you can make some uh something important you can make some uh trivial breaking changes but the overall trivial breaking changes but the overall trivial breaking changes but the overall impact will not be that big other teams
-
impact will not be that big other teams impact will not be that big other teams they can be scared of that a lot of they can be scared of that a lot of they can be scared of that a lot of Legacy projects they contain function it Legacy projects they contain function it Legacy projects they contain function it no one knows anything about that so you no one knows anything about that so you no one knows anything about that so you basically have to go through every line basically have to go through every line basically have to go through every line of code try to understand what was the of code try to understand what was the of code try to understand what was the intent what is doing why it's there if intent what is doing why it's there if intent what is doing why it's there if it can be removed or not and even it can be removed or not and even it can be removed or not and even trivial changes onliners can be very trivial changes onliners can be very trivial changes onliners can be very risky because you don't see everything risky because you don't see everything risky because you don't see everything usually on these projects it's not the usually on these projects it's not the usually on these projects it's not the person who was at the beginning of the person who was at the beginning of the person who was at the beginning of the project it's can be third fourth project it's can be third fourth project it's can be third fourth generation of people working on that and generation of people working on that and generation of people working on that and uh if there is documentation it can be uh if there is documentation it can be uh if there is documentation it can be upd outdated so I was in some projects upd outdated so I was in some projects upd outdated so I was in some projects we were actually using uh C GPT to we were actually using uh C GPT to we were actually using uh C GPT to figure out what was the original intent figure out what was the original intent figure out what was the original intent of the code what it's doing and to map of the code what it's doing and to map of the code what it's doing and to map the business logic to like discover the the business logic to like discover the the business logic to like discover the use cases that were probably implemented use cases that were probably implemented use cases that were probably implemented in the application so it helped us of in the application so it helped us of in the application so it helped us of course it needed manual review we course it needed manual review we course it needed manual review we couldn't rely on that but uh it was very couldn't rely on that but uh it was very couldn't rely on that but uh it was very helpful in discovering what the helpful in discovering what the helpful in discovering what the application used to do because nobody application used to do because nobody application used to do because nobody knew yeah I really like that you called knew yeah I really like that you called knew yeah I really like that you called out testability because on the Dos blog out testability because on the Dos blog out testability because on the Dos blog side that's what saved us we had a very side that's what saved us we had a very side that's what saved us we had a very extensive unit testing section uh for extensive unit testing section uh for extensive unit testing section uh for our our runtime so we didn't have that our our runtime so we didn't have that our our runtime so we didn't have that fear and I talk about fear-based fear and I talk about fear-based fear and I talk about fear-based development a lot on the show if you are development a lot on the show if you are development a lot on the show if you are afraid of your codebase write more tests
-
afraid of your codebase write more tests afraid of your codebase write more tests until you're no longer afraid and having until you're no longer afraid and having until you're no longer afraid and having a great uh testable framework allows you a great uh testable framework allows you a great uh testable framework allows you to do crazy stuff like you could just to do crazy stuff like you could just to do crazy stuff like you could just switch from net you know 6 to 8 without switch from net you know 6 to 8 without switch from net you know 6 to 8 without even worrying about it and then run the even worrying about it and then run the even worrying about it and then run the test and see how you feel and if you test and see how you feel and if you test and see how you feel and if you feel not fearful you know go for it but feel not fearful you know go for it but feel not fearful you know go for it but if you have no tests you're really just if you have no tests you're really just if you have no tests you're really just uh rolling the dice yeah and I think uh rolling the dice yeah and I think uh rolling the dice yeah and I think that a similar uh fear is uh when you're that a similar uh fear is uh when you're that a similar uh fear is uh when you're writing your first test because there is writing your first test because there is writing your first test because there is a lot of uh work a lot of complexity in a lot of uh work a lot of complexity in a lot of uh work a lot of complexity in preparing the infrastructure mocking all preparing the infrastructure mocking all preparing the infrastructure mocking all the services you will need so the first the services you will need so the first the services you will need so the first test is really uh difficult to do so a test is really uh difficult to do so a test is really uh difficult to do so a lot of people are scared of that and lot of people are scared of that and lot of people are scared of that and they will not they will not do it but they will not they will not do it but they will not they will not do it but once you have at least one test then once you have at least one test then once you have at least one test then writing any additional test it's much writing any additional test it's much writing any additional test it's much easier and with tools like copilot today easier and with tools like copilot today easier and with tools like copilot today it's it's very useful of course it it it's it's very useful of course it it it's it's very useful of course it it doesn't work 100% reliable but still it doesn't work 100% reliable but still it doesn't work 100% reliable but still it can save you a lot of time can save you a lot of time can save you a lot of time yeah that's absolutely true and the yeah that's absolutely true and the yeah that's absolutely true and the other thing that can save you a lot of other thing that can save you a lot of other thing that can save you a lot of time are Frameworks from people like time are Frameworks from people like time are Frameworks from people like yourself who've thought about these yourself who've thought about these yourself who've thought about these things so for example you work on vvm things so for example you work on vvm things so for example you work on vvm which is a tool that lets you literally which is a tool that lets you literally which is a tool that lets you literally modernize your web forms app so if modernize your web forms app so if modernize your web forms app so if you're listening and you have a web you're listening and you have a web you're listening and you have a web forms app and you think you'll never be forms app and you think you'll never be forms app and you think you'll never be able to go forward vvm is a tool that able to go forward vvm is a tool that able to go forward vvm is a tool that allows you to modernize those forms you allows you to modernize those forms you allows you to modernize those forms you can basically switch your aspx forms to
-
can basically switch your aspx forms to can basically switch your aspx forms to a different you know View model a different you know View model a different you know View model equivalent that will feel familiar but equivalent that will feel familiar but equivalent that will feel familiar but is totally compatible with with net 8 do is totally compatible with with net 8 do is totally compatible with with net 8 do you use this a lot in your business yeah you use this a lot in your business yeah you use this a lot in your business yeah we it was it's it's basically this is we it was it's it's basically this is we it was it's it's basically this is vvm is what started our focus on vvm is what started our focus on vvm is what started our focus on modernization we started this framework modernization we started this framework modernization we started this framework in in in 2014 and uh because previously we were 2014 and uh because previously we were 2014 and uh because previously we were using web forms but at in using web forms but at in using web forms but at in 2014 it was clear that the web is going 2014 it was clear that the web is going 2014 it was clear that the web is going in a different direction than web form in a different direction than web form in a different direction than web form so we were looking on react or angular so we were looking on react or angular so we were looking on react or angular and we saw knockoutjs which was a client and we saw knockoutjs which was a client and we saw knockoutjs which was a client side mvvm framework and we like that side mvvm framework and we like that side mvvm framework and we like that idea but we didn't like writing a lot of idea but we didn't like writing a lot of idea but we didn't like writing a lot of JavaScript code so vvm basically allows JavaScript code so vvm basically allows JavaScript code so vvm basically allows you to build Rich client you to build Rich client you to build Rich client applications with just the C and HTML we applications with just the C and HTML we applications with just the C and HTML we decare The View model in CP and VM decare The View model in CP and VM decare The View model in CP and VM somehow translates it in JavaScript so somehow translates it in JavaScript so somehow translates it in JavaScript so it was generating The Knockout GS code it was generating The Knockout GS code it was generating The Knockout GS code for us and uh if this idea sounds for us and uh if this idea sounds for us and uh if this idea sounds familiar to you it's it's because of familiar to you it's it's because of familiar to you it's it's because of laser which came few years after that we laser which came few years after that we laser which came few years after that we started before net core so first version started before net core so first version started before net core so first version of vvm was NET Framework only and when of vvm was NET Framework only and when of vvm was NET Framework only and when net core first version came out we added net core first version came out we added net core first version came out we added support to net core so suddenly we had a support to net core so suddenly we had a support to net core so suddenly we had a framework which is the same on NET framework which is the same on NET framework which is the same on NET Framework and net core yeah so you just Framework and net core yeah so you just Framework and net core yeah so you just install one new get package in your
-
install one new get package in your install one new get package in your application and the syntax everything is application and the syntax everything is application and the syntax everything is the same and this wasn't the original the same and this wasn't the original the same and this wasn't the original intent but like accidentally we created intent but like accidentally we created intent but like accidentally we created a modernization path for web forms a modernization path for web forms a modernization path for web forms projects because you can start with your projects because you can start with your projects because you can start with your NET Framework applications which may NET Framework applications which may NET Framework applications which may have hundreds of web forms pages and you have hundreds of web forms pages and you have hundreds of web forms pages and you can install vvm in this project so it's can install vvm in this project so it's can install vvm in this project so it's running in the same application in the running in the same application in the running in the same application in the same process as the web forms and then same process as the web forms and then same process as the web forms and then you can incrementally replace pages one you can incrementally replace pages one you can incrementally replace pages one by one rewrite them to vvm it will force by one rewrite them to vvm it will force by one rewrite them to vvm it will force you to re refactor your code behind you to re refactor your code behind you to re refactor your code behind files to view models which makes it files to view models which makes it files to view models which makes it testable so then you can cover it with testable so then you can cover it with testable so then you can cover it with with tests and then once you get rid of with tests and then once you get rid of with tests and then once you get rid of all web forms dependencies you will be all web forms dependencies you will be all web forms dependencies you will be able just to switch the target framework able just to switch the target framework able just to switch the target framework to net 8 net 9 anything the newest to net 8 net 9 anything the newest to net 8 net 9 anything the newest version and it will work because vvm is version and it will work because vvm is version and it will work because vvm is same on both the these platforms so it's same on both the these platforms so it's same on both the these platforms so it's uh I we are not using it for all uh I we are not using it for all uh I we are not using it for all modernization projects but when you just modernization projects but when you just modernization projects but when you just need to change the target framework and need to change the target framework and need to change the target framework and don't make any significant changes in in don't make any significant changes in in don't make any significant changes in in the application you want to keep the the application you want to keep the the application you want to keep the things as they are just Target newer things as they are just Target newer things as they are just Target newer libraries then this can save you a lot libraries then this can save you a lot libraries then this can save you a lot of things because all the business logic of things because all the business logic of things because all the business logic you don't need to touch it you just need you don't need to touch it you just need you don't need to touch it you just need to refactor the code behind to view more
-
to refactor the code behind to view more to refactor the code behind to view more model which is basically one to one model which is basically one to one model which is basically one to one transformation and uh uh most of the transformation and uh uh most of the transformation and uh uh most of the codebase can remain as it is yeah now I codebase can remain as it is yeah now I codebase can remain as it is yeah now I didn't personally use vvm on dos blog didn't personally use vvm on dos blog didn't personally use vvm on dos blog because we were already using a temp a because we were already using a temp a because we were already using a temp a similar templating engine but I think similar templating engine but I think similar templating engine but I think your point about if you already have your point about if you already have your point about if you already have view models if you're producing view view models if you're producing view view models if you're producing view models you're halfway there it's just models you're halfway there it's just models you're halfway there it's just that markup that's the challenge and that markup that's the challenge and that markup that's the challenge and you've got vvm has a thing called HTML you've got vvm has a thing called HTML you've got vvm has a thing called HTML markup we we switched to razor pages and markup we we switched to razor pages and markup we we switched to razor pages and we found that moving over to razor Pages we found that moving over to razor Pages we found that moving over to razor Pages was surprisingly possible uh even for was surprisingly possible uh even for was surprisingly possible uh even for complicated pages and now now today uh complicated pages and now now today uh complicated pages and now now today uh as of last week uh all my websites are as of last week uh all my websites are as of last week uh all my websites are on net 8 they're all running ra razor on net 8 they're all running ra razor on net 8 they're all running ra razor pages and I've got no web forms anywhere pages and I've got no web forms anywhere pages and I've got no web forms anywhere and users of Dos blog uh Mark Downey has and users of Dos blog uh Mark Downey has and users of Dos blog uh Mark Downey has gone and updated it all to net 8 and net gone and updated it all to net 8 and net gone and updated it all to net 8 and net 9 and uh the benefits are are immense it 9 and uh the benefits are are immense it 9 and uh the benefits are are immense it it felt impossible and now I'm on the it felt impossible and now I'm on the it felt impossible and now I'm on the other side of it and I'm like why didn't other side of it and I'm like why didn't other side of it and I'm like why didn't I do this a year ago like I feel like I I do this a year ago like I feel like I I do this a year ago like I feel like I should have started before yeah like should have started before yeah like should have started before yeah like congratulations uh to achieve this uh congratulations uh to achieve this uh congratulations uh to achieve this uh even for smaller projects there is quite even for smaller projects there is quite even for smaller projects there is quite a lot of steps you need to take it's not a lot of steps you need to take it's not a lot of steps you need to take it's not just like y changing clicking few things just like y changing clicking few things just like y changing clicking few things in visual studio and that's done also in visual studio and that's done also in visual studio and that's done also you need to test everything that you you need to test everything that you you need to test everything that you didn't break things things like that but didn't break things things like that but didn't break things things like that but uh
-
uh uh yeah uh for longer projects it can take yeah uh for longer projects it can take yeah uh for longer projects it can take months or even like one two years but uh months or even like one two years but uh months or even like one two years but uh the book describes how to do it the book describes how to do it the book describes how to do it incrementally so you would minimize the incrementally so you would minimize the incrementally so you would minimize the risk in each stage of this process and risk in each stage of this process and risk in each stage of this process and you can also you need to figure how to you can also you need to figure how to you can also you need to figure how to add be able to do both modernization and add be able to do both modernization and add be able to do both modernization and like adding new features to the like adding new features to the like adding new features to the application because that that's what the application because that that's what the application because that that's what the business usually requires not many business usually requires not many business usually requires not many companies will let you like okay we will companies will let you like okay we will companies will let you like okay we will stop adding any feature for two years stop adding any feature for two years stop adding any feature for two years let's modernize and then yeah that's let's modernize and then yeah that's let's modernize and then yeah that's that's not how the world works yeah one that's not how the world works yeah one that's not how the world works yeah one of the other things I thought was really of the other things I thought was really of the other things I thought was really cool about the book and I think it's cool about the book and I think it's cool about the book and I think it's worth checking out and again folks can worth checking out and again folks can worth checking out and again folks can see this at modernization book.com see this at modernization book.com see this at modernization book.com modernization book.com is it's not just modernization book.com is it's not just modernization book.com is it's not just about upgrading from web forms to.net about upgrading from web forms to.net about upgrading from web forms to.net it's about well I'm on WCF I'm on the it's about well I'm on WCF I'm on the it's about well I'm on WCF I'm on the Windows communication Foundation which Windows communication Foundation which Windows communication Foundation which ran a huge amount of the business in the ran a huge amount of the business in the ran a huge amount of the business in the world for a very long per period of time world for a very long per period of time world for a very long per period of time and then slowly faded away or upgrading and then slowly faded away or upgrading and then slowly faded away or upgrading from forms authentication to Identity or from forms authentication to Identity or from forms authentication to Identity or upgrading from you know signal art a upgrading from you know signal art a upgrading from you know signal art a signal art core these are a lot of signal art core these are a lot of signal art core these are a lot of people are out there right now for people are out there right now for people are out there right now for example using WCF sitting on WCF example using WCF sitting on WCF example using WCF sitting on WCF thinking well I guess that's it we're thinking well I guess that's it we're thinking well I guess that's it we're here we're we're we're stuck and they're here we're we're we're stuck and they're here we're we're we're stuck and they're just not stuck there are options and you just not stuck there are options and you just not stuck there are options and you call out some of those options in the call out some of those options in the call out some of those options in the book yeah I tried to go through all uh book yeah I tried to go through all uh book yeah I tried to go through all uh libraries and Frameworks that were libraries and Frameworks that were libraries and Frameworks that were commonly used so if you have the old web
-
commonly used so if you have the old web commonly used so if you have the old web services or if you are using link to cql services or if you are using link to cql services or if you are using link to cql there is a like migration guide what there is a like migration guide what there is a like migration guide what changes you need to expect and what changes you need to expect and what changes you need to expect and what should be the places where you should should be the places where you should should be the places where you should put the most attention because like put the most attention because like put the most attention because like Entity framework core has lazy loading Entity framework core has lazy loading Entity framework core has lazy loading disabled by default so even if the disabled by default so even if the disabled by default so even if the syntax of link to SQL and Entity syntax of link to SQL and Entity syntax of link to SQL and Entity framework core is not that different framework core is not that different framework core is not that different then you will see runtime errors then you will see runtime errors then you will see runtime errors whenever you try to use the laser whenever you try to use the laser whenever you try to use the laser loading so like there's a lot of uh loading so like there's a lot of uh loading so like there's a lot of uh things like that uh I try to cover things like that uh I try to cover things like that uh I try to cover really everything because I have seen a really everything because I have seen a really everything because I have seen a lot of Legacy projects which contained a lot of Legacy projects which contained a lot of Legacy projects which contained a very rich combinations of all these very rich combinations of all these very rich combinations of all these Technologies all espet web API and Technologies all espet web API and Technologies all espet web API and things like that yeah there's tools also things like that yeah there's tools also things like that yeah there's tools also like core WCF which is an open- Source like core WCF which is an open- Source like core WCF which is an open- Source you know version of WCF you know version of WCF you know version of WCF uh you also call out that you could do a uh you also call out that you could do a uh you also call out that you could do a direct move like from WCF to core WCF or direct move like from WCF to core WCF or direct move like from WCF to core WCF or you could upgrade to grpc or rest or you could upgrade to grpc or rest or you could upgrade to grpc or rest or things that you know didn't exist 20 things that you know didn't exist 20 things that you know didn't exist 20 years ago at the time so you can move years ago at the time so you can move years ago at the time so you can move sideways or you can move diagonally to sideways or you can move diagonally to sideways or you can move diagonally to use that that analogy yeah basically use that that analogy yeah basically use that that analogy yeah basically it's only how much uh time you have to it's only how much uh time you have to it's only how much uh time you have to invest in getting rid of this technical invest in getting rid of this technical invest in getting rid of this technical depth that accumulated in the project uh depth that accumulated in the project uh depth that accumulated in the project uh in in the past years and uh like I tried
-
in in the past years and uh like I tried in in the past years and uh like I tried to core WCF on several occasions and it to core WCF on several occasions and it to core WCF on several occasions and it was really smooth like most of the WCF was really smooth like most of the WCF was really smooth like most of the WCF is written in managed code so probably is written in managed code so probably is written in managed code so probably the migration wasn't that uh complicated the migration wasn't that uh complicated the migration wasn't that uh complicated and I have a similar experience with WPF and I have a similar experience with WPF and I have a similar experience with WPF that was also 99% of the code base was that was also 99% of the code base was that was also 99% of the code base was written in managed code so like the written in managed code so like the written in managed code so like the problem was only the surface where it problem was only the surface where it problem was only the surface where it interacted with IIs or the operation interacted with IIs or the operation interacted with IIs or the operation system so that was the things that uh system so that was the things that uh system so that was the things that uh had to be changed and uh also core WCF had to be changed and uh also core WCF had to be changed and uh also core WCF it has quite nice integration with the it has quite nice integration with the it has quite nice integration with the new authentication model in aspnet core new authentication model in aspnet core new authentication model in aspnet core so that's what I really liked because it so that's what I really liked because it so that's what I really liked because it was and and the framework is adding new was and and the framework is adding new was and and the framework is adding new features which weren't present on WCF so features which weren't present on WCF so features which weren't present on WCF so it's not just like one to one it's it's it's not just like one to one it's it's it's not just like one to one it's it's giving you more options that that's giving you more options that that's giving you more options that that's really incredible really incredible really incredible yeah and you know the number of options yeah and you know the number of options yeah and you know the number of options that are available to us now once you that are available to us now once you that are available to us now once you get onto net quote core net core you get onto net quote core net core you get onto net quote core net core you know five and above uh the choices that know five and above uh the choices that know five and above uh the choices that you have are amazing like just being you have are amazing like just being you have are amazing like just being able to say you know I'm going to put able to say you know I'm going to put able to say you know I'm going to put this in a Docker container and that's this in a Docker container and that's this in a Docker container and that's not hard like that's a thing you can do not hard like that's a thing you can do not hard like that's a thing you can do very very quickly you talk about how very very quickly you talk about how very very quickly you talk about how modernization takes takes months that modernization takes takes months that modernization takes takes months that that can be true but getting it into a that can be true but getting it into a that can be true but getting it into a container or switching your putting container or switching your putting container or switching your putting engine X in front of it or switching engine X in front of it or switching engine X in front of it or switching servers it's so easy now being able to servers it's so easy now being able to servers it's so easy now being able to move to a different cloud or to a
-
move to a different cloud or to a move to a different cloud or to a different deployment model um once you different deployment model um once you different deployment model um once you get yourself onto a modern. net stack get yourself onto a modern. net stack get yourself onto a modern. net stack yeah exactly and the great thing is that yeah exactly and the great thing is that yeah exactly and the great thing is that you can do it incrementally so uh you can do it incrementally so uh you can do it incrementally so uh several chapters are describing how to several chapters are describing how to several chapters are describing how to use ARP to like you can take just small use ARP to like you can take just small use ARP to like you can take just small pieces of the application re retarget pieces of the application re retarget pieces of the application re retarget them or like refactor them to run in uh them or like refactor them to run in uh them or like refactor them to run in uh the new framework and you see to send the new framework and you see to send the new framework and you see to send all the traffic that isn't handled by all the traffic that isn't handled by all the traffic that isn't handled by the part that is already migrated to the the part that is already migrated to the the part that is already migrated to the alt app so you can have the container alt app so you can have the container alt app so you can have the container you can start using the benefits of net you can start using the benefits of net you can start using the benefits of net core quite early not after you modernize core quite early not after you modernize core quite early not after you modernize everything you can get the benefits very everything you can get the benefits very everything you can get the benefits very quickly for some parts of the quickly for some parts of the quickly for some parts of the application some people may not be application some people may not be application some people may not be familiar with that you're the word familiar with that you're the word familiar with that you're the word you're saying is yarp yet another you're saying is yarp yet another you're saying is yarp yet another reverse proxy and that was created reverse proxy and that was created reverse proxy and that was created because Microsoft found a bunch of because Microsoft found a bunch of because Microsoft found a bunch of internal teams that that were making internal teams that that were making internal teams that that were making reverse proxies for all of their stuff reverse proxies for all of their stuff reverse proxies for all of their stuff and said hey you know let's do this and said hey you know let's do this and said hey you know let's do this let's do it right let's do it once just let's do it right let's do it once just let's do it right let's do it once just like Kestrel let's make this incredibly like Kestrel let's make this incredibly like Kestrel let's make this incredibly fast where performance is a feature and fast where performance is a feature and fast where performance is a feature and even supporting things like even supporting things like even supporting things like http2 uh and then building on that http2 uh and then building on that http2 uh and then building on that modern infrastructure uh it is modern infrastructure uh it is modern infrastructure uh it is incredibly performant and you know you incredibly performant and you know you incredibly performant and you know you shouldn't be writing your own reverse shouldn't be writing your own reverse shouldn't be writing your own reverse proxy if you're trying to do business proxy if you're trying to do business proxy if you're trying to do business you should be able to pick one up off you should be able to pick one up off you should be able to pick one up off the shelf and and that's what yarp is the shelf and and that's what yarp is the shelf and and that's what yarp is for for for yeah and if you try to make your own yeah and if you try to make your own yeah and if you try to make your own reverse proxy I think that it will not
-
reverse proxy I think that it will not reverse proxy I think that it will not be that fast as yarp is because yarp is be that fast as yarp is because yarp is be that fast as yarp is because yarp is very heavily optimized to not do any very heavily optimized to not do any very heavily optimized to not do any unnecessary allocations or anything like unnecessary allocations or anything like unnecessary allocations or anything like that it's very efficient you know that it's very efficient you know that it's very efficient you know speaking of that you mentioned Steven to speaking of that you mentioned Steven to speaking of that you mentioned Steven to he and I have been doing a series called he and I have been doing a series called he and I have been doing a series called deep. net that you can find on theet deep. net that you can find on theet deep. net that you can find on theet YouTube and one of the things that he YouTube and one of the things that he YouTube and one of the things that he was commenting about is things like span was commenting about is things like span was commenting about is things like span of of of and improving memory allocations they're and improving memory allocations they're and improving memory allocations they're making tiny you know less than a making tiny you know less than a making tiny you know less than a millisecond changes deep deep deep in millisecond changes deep deep deep in millisecond changes deep deep deep in the core of net and we are just seeing the core of net and we are just seeing the core of net and we are just seeing those improvements I was trying to those improvements I was trying to those improvements I was trying to understand when um when we see one of understand when um when we see one of understand when um when we see one of his performance posts and he says this his performance posts and he says this his performance posts and he says this is 10 times faster and I think to myself is 10 times faster and I think to myself is 10 times faster and I think to myself did we suck 10 times worse before and did we suck 10 times worse before and did we suck 10 times worse before and he's like no no no don't think about it he's like no no no don't think about it he's like no no no don't think about it like that he says we shave 10 like that he says we shave 10 like that he says we shave 10 milliseconds off of this and it's way milliseconds off of this and it's way milliseconds off of this and it's way way way down in the stack and you're way way down in the stack and you're way way down in the stack and you're calling it a million times up here and calling it a million times up here and calling it a million times up here and that adds up and it's it's not that we that adds up and it's it's not that we that adds up and it's it's not that we sucked it's that a new technique for sucked it's that a new technique for sucked it's that a new technique for memory allocation was discovered we memory allocation was discovered we memory allocation was discovered we implemented it at the core of the implemented it at the core of the implemented it at the core of the framework and everything just gets framework and everything just gets framework and everything just gets better and that's amazing to me and I'm better and that's amazing to me and I'm better and that's amazing to me and I'm sure you see that when you modernize sure you see that when you modernize sure you see that when you modernize your your your applications yeah and I love that uh applications yeah and I love that uh applications yeah and I love that uh from multiple perspectives one is this from multiple perspectives one is this from multiple perspectives one is this like every Improvement in this Base like every Improvement in this Base like every Improvement in this Base Class Library like making the
-
Class Library like making the Class Library like making the collections dictionaries strings faster collections dictionaries strings faster collections dictionaries strings faster uh that adds up the the effect is very uh that adds up the the effect is very uh that adds up the the effect is very very huge because you are using millions very huge because you are using millions very huge because you are using millions of strings in your application so if of strings in your application so if of strings in your application so if even if the string gets 1% faster that even if the string gets 1% faster that even if the string gets 1% faster that if you add this up it's it's a great if you add this up it's it's a great if you add this up it's it's a great Improvement and uh also like things like Improvement and uh also like things like Improvement and uh also like things like rewriting how regular expressions were rewriting how regular expressions were rewriting how regular expressions were done internally it's it's a big feature done internally it's it's a big feature done internally it's it's a big feature that get recently inet and I love that that get recently inet and I love that that get recently inet and I love that even these old things are still like even these old things are still like even these old things are still like improving because like the performance improving because like the performance improving because like the performance impact is it's like interesting for impact is it's like interesting for impact is it's like interesting for that's add a lot of value yeah it adds a that's add a lot of value yeah it adds a that's add a lot of value yeah it adds a huge amount of value and the it cannot huge amount of value and the it cannot huge amount of value and the it cannot be overstated how much faster these be overstated how much faster these be overstated how much faster these things are like you know we're just two things are like you know we're just two things are like you know we're just two guys on a podcast talking about it's so guys on a podcast talking about it's so guys on a podcast talking about it's so much faster and I'm sure people are much faster and I'm sure people are much faster and I'm sure people are listening going really is it that much listening going really is it that much listening going really is it that much faster uh for my little sites which are faster uh for my little sites which are faster uh for my little sites which are you know kind of complicated but they're you know kind of complicated but they're you know kind of complicated but they're not giant business sites I feel it feels not giant business sites I feel it feels not giant business sites I feel it feels faster some of my applications are you faster some of my applications are you faster some of my applications are you know milliseconds I've got incredibly know milliseconds I've got incredibly know milliseconds I've got incredibly fast and I 100% believe it's because I I fast and I 100% believe it's because I I fast and I 100% believe it's because I I I upgraded to net 8 even just going from I upgraded to net 8 even just going from I upgraded to net 8 even just going from six to8 was a visibly faster uh six to8 was a visibly faster uh six to8 was a visibly faster uh upgrade yeah and the internet is full of upgrade yeah and the internet is full of upgrade yeah and the internet is full of charge when you upgrade from net 8 to charge when you upgrade from net 8 to charge when you upgrade from net 8 to net 9 and the graphs of memory net 9 and the graphs of memory net 9 and the graphs of memory consumption and there is the huge drop
-
consumption and there is the huge drop consumption and there is the huge drop because net 9 allocates quite because net 9 allocates quite because net 9 allocates quite significantly less memory uh for the significantly less memory uh for the significantly less memory uh for the same application for the same code so same application for the same code so same application for the same code so that's impressive and also there is a that's impressive and also there is a that's impressive and also there is a lot of improvements in like um how I lot of improvements in like um how I lot of improvements in like um how I like work with the new net because of like work with the new net because of like work with the new net because of the new features like things like user the new features like things like user the new features like things like user Secrets or things like uh unified Secrets or things like uh unified Secrets or things like uh unified interfaces for logging for dependency interfaces for logging for dependency interfaces for logging for dependency injection in NET Framework I had to use injection in NET Framework I had to use injection in NET Framework I had to use external libraries for dependency external libraries for dependency external libraries for dependency injection every Library use different injection every Library use different injection every Library use different logging Library so I had log foret Ser logging Library so I had log foret Ser logging Library so I had log foret Ser log and three other logging libraries in log and three other logging libraries in log and three other logging libraries in the same project just because everybody the same project just because everybody the same project just because everybody was using different dependencies now was using different dependencies now was using different dependencies now everything is Unified there are very everything is Unified there are very everything is Unified there are very nice abstraction interfaces for logging nice abstraction interfaces for logging nice abstraction interfaces for logging so every Library can Implement them and so every Library can Implement them and so every Library can Implement them and it's very nice to use very comfortable it's very nice to use very comfortable it's very nice to use very comfortable and it removes a lot of complexity from and it removes a lot of complexity from and it removes a lot of complexity from from the applications you know that's a from the applications you know that's a from the applications you know that's a really great example and something I really great example and something I really great example and something I think people don't talk about enough is think people don't talk about enough is think people don't talk about enough is that something like open Telemetry could that something like open Telemetry could that something like open Telemetry could be available to you you know when we be available to you you know when we be available to you you know when we were doing logging on large distributed were doing logging on large distributed were doing logging on large distributed systems with NET Framework it was still systems with NET Framework it was still systems with NET Framework it was still text files we were trying to come up text files we were trying to come up text files we were trying to come up with centralized places to put these with centralized places to put these with centralized places to put these text files all of those logging text files all of those logging text files all of those logging Frameworks debug.log trace. right line Frameworks debug.log trace. right line Frameworks debug.log trace. right line can be sent in through something like can be sent in through something like can be sent in through something like net Aspire so you could use Aspire as a net Aspire so you could use Aspire as a net Aspire so you could use Aspire as a step in modernizing your application and step in modernizing your application and step in modernizing your application and then you get open Telemetry for free
-
then you get open Telemetry for free then you get open Telemetry for free your app your your former web app that your app your your former web app that your app your your former web app that ran in a VM now is a cloud native app ran in a VM now is a cloud native app ran in a VM now is a cloud native app with open Telemetry and you're going to with open Telemetry and you're going to with open Telemetry and you're going to be able to see and manage that app in a be able to see and manage that app in a be able to see and manage that app in a way that was not even conceivable 20 way that was not even conceivable 20 way that was not even conceivable 20 years ago and it's great you mentioned years ago and it's great you mentioned years ago and it's great you mentioned Aspire it's one of my favorite tools uh Aspire it's one of my favorite tools uh Aspire it's one of my favorite tools uh recently I'm using it all in all my recently I'm using it all in all my recently I'm using it all in all my projects even if it's very simple projects even if it's very simple projects even if it's very simple application it also saves a lot of time application it also saves a lot of time application it also saves a lot of time really so yeah that's that's that may be really so yeah that's that's that may be really so yeah that's that's that may be the next thing for me to do and I know the next thing for me to do and I know the next thing for me to do and I know we only have a couple more minutes here we only have a couple more minutes here we only have a couple more minutes here but let me ask you this you said you're but let me ask you this you said you're but let me ask you this you said you're using Aspire for even your small using Aspire for even your small using Aspire for even your small applications I have not Aspire ified my applications I have not Aspire ified my applications I have not Aspire ified my little web apps should I like are the little web apps should I like are the little web apps should I like are the benefits going to outweigh any kind of benefits going to outweigh any kind of benefits going to outweigh any kind of any kind of frustration I might have uh any kind of frustration I might have uh any kind of frustration I might have uh I like for example it can provision the I like for example it can provision the I like for example it can provision the database for you as a container so the database for you as a container so the database for you as a container so the application suddenly doesn't rely on application suddenly doesn't rely on application suddenly doesn't rely on like having SQL Server installed on the like having SQL Server installed on the like having SQL Server installed on the correct connection string because I'm correct connection string because I'm correct connection string because I'm using multiple machines I have computer using multiple machines I have computer using multiple machines I have computer in the office then computer at a home in the office then computer at a home in the office then computer at a home and it's difficult to synchronize and it's difficult to synchronize and it's difficult to synchronize multiple environments to have same multiple environments to have same multiple environments to have same settings everywhere so when with Aspire settings everywhere so when with Aspire settings everywhere so when with Aspire I just clone the repo run F5 and it it I just clone the repo run F5 and it it I just clone the repo run F5 and it it everything works so and it takes just everything works so and it takes just everything works so and it takes just few minutes to set up it's not very few minutes to set up it's not very few minutes to set up it's not very complicated so I definitely recommend complicated so I definitely recommend complicated so I definitely recommend even for a single app single database even for a single app single database even for a single app single database projects the start up file of the aspire projects the start up file of the aspire projects the start up file of the aspire app it will have like three lines of app it will have like three lines of app it will have like three lines of code but still the benefit is is great code but still the benefit is is great code but still the benefit is is great Whenever you set up a new machine you Whenever you set up a new machine you Whenever you set up a new machine you will be saving a lot of time ah see now
-
will be saving a lot of time ah see now will be saving a lot of time ah see now now you've left me with homework at the now you've left me with homework at the now you've left me with homework at the end of our podcast here I think you're end of our podcast here I think you're end of our podcast here I think you're right I think I need to Aspire my my own right I think I need to Aspire my my own right I think I need to Aspire my my own sites and see what happens because sites and see what happens because sites and see what happens because you're right it's going to make setup you're right it's going to make setup you're right it's going to make setup easier it's going to make local easier it's going to make local easier it's going to make local development easier and I think just the development easier and I think just the development easier and I think just the open Telemetry uh would be such an open Telemetry uh would be such an open Telemetry uh would be such an attractive thing and it's going to take attractive thing and it's going to take attractive thing and it's going to take my my application to the next level my my application to the next level my my application to the next level exactly well thank you so much for exactly well thank you so much for exactly well thank you so much for chatting with me today thanks for having chatting with me today thanks for having chatting with me today thanks for having me um it was very pleasant all right me um it was very pleasant all right me um it was very pleasant all right we've been chatting with Tomas hereg the we've been chatting with Tomas hereg the we've been chatting with Tomas hereg the CEO of ranti I've got three links for CEO of ranti I've got three links for CEO of ranti I've got three links for you we'll put in the show notes check you we'll put in the show notes check you we'll put in the show notes check out modernization book.com to learn all out modernization book.com to learn all out modernization book.com to learn all about the new book on modernizing your about the new book on modernizing your about the new book on modernizing your net web applications if you want to work net web applications if you want to work net web applications if you want to work with tamas then you can go to ran. CZ or with tamas then you can go to ran. CZ or with tamas then you can go to ran. CZ or CZ and then check out. vvm that CZ and then check out. vvm that CZ and then check out. vvm that modernization framework for taking your modernization framework for taking your modernization framework for taking your applications into into the future this applications into into the future this applications into into the future this has been another episode of Hansel has been another episode of Hansel has been another episode of Hansel minutes and we'll see you again next minutes and we'll see you again next minutes and we'll see you again next week week week [Music]
Summary
This episode focuses on modernizing .NET web applications, as detailed in Tomasz Huger's extensive new book. The discussion highlights the challenges and strategies for updating legacy systems, particularly for financial institutions, and emphasizes the critical need to articulate the business case for modernization to stakeholders. The practical takeaway is that while modernization is a technical decision, convincing management and other teams requires understanding and communicating the business value and risks of inaction.