What's On Your Developer Radar?
>> On today's Visual Studio Toolbox, Richard Campbell joins us to share his thoughts on what technologies and patterns you should be looking at. [MUSIC] >> Hi. Welcome to Visual Studio Toolbox. I'm your host, Robert Green, filling in for Leslie. I'm very excited today to get to hang out with my good friend, Mr. Richard Campbell. >> Hello, buddy. How are you?
>> Good. How are you? Richard is co-host of the iconic .NET Rocks! show as well as RunAsRadio. You have been around the block several times, so to speak, talking with people on a weekly basis who were doing fun, and new, and interesting things and I thought this would be a good opportunity to give you a chance to fill us in on some of the things that you think people should have on their radar. What should developers be looking into, learning, thinking about beyond the usual, of course, .NET 5 and 6,
and Blazor, and MAUI and those types of things. >> Some of those things like MAUI is always way easier. I can't wait to see how cool MAUI is, but I'm not even really comfortable doing our .Net Rocks! on MAUI yet. I'll let it cook a little more. >> Okay. >> Maybe by the end of the year, I'm hopeful because they've been trying to crack that problem for a while.
>> .NET 6 is in preview already so the future is always here. >> And funking along. >> Those things have been covered. >> Sure, and so is the Dockers and the Kubernetes in that whole, Am I going to go containers? Those are common thoughts.
Last year, the pandemic's impact on software has been really interesting. Over on the IT side of my life, in the RunAs world, I ended up doing a whole separate weekly episode on pandemic related topics for IT folks. That series wrapped up because it has become, at least in the IT world, you can't tell the difference between a pandemic-related topic and just IT. They're kind of the same things now. But I think the big thing you're finding is folks are working from home, they're probably going to keep working from home, and some applications don't work from home well. >> Yeah.
>> You can't scale a VPN infinitely. Say you taken old WinForms app, database still back at the office, but the clients now deployed onto the user's workstation. But now sipping through that VPN pipe and multiply that by how many people, and when you're used to a gigabit networking in the office, 30 megs where the data being hauled down the machine is not that big of a deal, but pull all that through VPNs, it gets old fast.
>> Yes. Especially if you don't happen to have high-speed Internet. >> Yeah. >> Everybody has a gig down. >> Yeah, symmetrical gigs because then you pull that data grid down for them to manipulate it and then you said, "I'll just haul the whole thing back." So now, the upstream bandwidth matters too.
>> Right. >> You ever wonder why those IT guys are so grumpy? It's your fault, you did that. Over and over, you may have heard folks saying, "Hey, I want to retool this app.
I want to look at it a different way," and .NET 5 might be an excuse for that but really you're saying, does the architecture of this app still make sense? Do you really want to rewrite it? One of the options, especially when talking about the whole forms over data model is, could this be a PowerApp now? Whether your Dev or your IT, ignore Power Apps at your peril. This is the new Visual Basic, so to speak, in the sense that the main skill you need to bring to the PowerApp tooling is domain expertise. You think about the old world of Visual Basic in the '90s, or Fox for that matter, knowing I'm talking to an old Fox friend, it was not coding intensive. There was coding, but the main thing we were thinking about was do you know the problem space well? We're seeing a new generation of domain experts starting to grab a hold of these web-centric, Cloud-centric tools and solving automation and productivity problems with them fairly well. So the idea that you would look at an old WinForms app and you're dealing with this problem that's going to push you to, let's solve it.
It's like, would this be better served by you working closely with some domain experts, they depend on it now to actually re-engineer the PowerApp? I'm not even saying you'd need to write it, but you might just supervise it, give it a little governance and help them to be a part of solving that problem. Because now you're going to get the mobile client, you're going to get out of the VPN entirely and into that Cloud-centric model, unless you want to keep the data back on the premises, there's solutions for that. If you need to build a few APIs, there are offer up some features after that, you can do that too.
>> Building APIs, is that a critical piece of this? I mean the PowerApp needs to connect to something. You don't just connect it to the database, I assume, connected to a series of services that are written with a particular standard or format. >> It depends on what you're doing and how you're doing it. A lot of these APIs are generatable too.
It's not that complicated. >> Okay. >> You've got to look at where your architecture is right now and what pieces you want to build. You may well need to build some significant level of distraction.
Or perhaps this is a database that's still running on-prem that they want to move to Azure SQL, but they couldn't because of this app. >> Right. >> You're actually going to untangle that problem by looking at these alternatives. >> Okay.
>> Folks' reflex is to keep repeating in the same space and Microsoft is facilitating this. I mean, WinForms has gone through several platform shifts since the '90s. It was BB product, it was a different product in .NET. It's a different product again, coming into the .Net 5, 6 world in the WinSDK version but it doesn't mean it's necessarily the correct solution anymore. Although there's a totally different approach to this problem too.
It's another one that we certainly came up on RunAsRadio as an IT oriented solution but I think Devs need to know about this as you're taking responsibility for architecture, which is, if it doesn't make sense, to rewrite it and rewrite it into other tools or re-architect it, like maybe build Power Apps on it. Or heck, if you're thinking about going down F5, like I can't. Great things to say about the folks over Visual ReCode, Mark Rendle and his gang, because they are really providing great, not only great guidance around how you get the .NET 5, and they'll actually parse your code and give you hints on where you're going to have problems, and consider stuff like how to get off WCF and on to gRPC, like those are all choices there.
But what about sticking it into the VM? >> Yeah. >> The Virtual Desktop has taken a huge leap forward in the past couple of years. Your real issue with that WinForms app is that you're pushing the client off-premises onto an employee workstation, over that thin pipe and back to a database. You can put the whole thing back together again, in the Cloud, still running the original code which you now provided as a Windows Virtual Desktop.
>> Right. >> That's an IT solution, but it takes the pain away. If you're IT folks are frustrated with this app, the idea that you'd say, "Hey, let's save the Dev resources, maybe we don't need to re-engineer it, but we want to package it differently." You might need to change some privileges, some rules around some of that code, but it's a lot less effort to make it run in a Windows Virtual Machine or a virtual desktop, than it is to rewrite it in any form.
>> Yeah, because then it's just the same app. >> Same app. It's also secure. >> Different resources. >> One of the things we have a problem with these older applications is how is their security perimeter? Now that it's on the employee desktop at home, it has more exploit risks. If you're running in that Virtual Machine, one of the things you can do inside that virtual machine is just like, hey, look, you don't browse on that Virtual Machine. That Virtual Desktop is there to run certain applications and that's it.
You need to get on the web, you do that on your own instance. You need to work on these internal apps, you do it in that instance. So you can keep that very secure and split that workload. >> Right. Has there been more thought to keeping the fat client on the local, but then just switching to Azure services and Azure resources, data resources in the backend? I mean, that's been talked about over and over again, but is this wound up being a push for that to happen, the modern guys, if you will? >> It depends on, what's the state of the app, how modern are you? So like the gRPC approach, where you're changing out that back end and using more modern communications, it certainly leverages that and allows that.
So not every WinForms app or even WPF app is equal. Even the web forms scenario has got an interesting challenge there, because that's a pretty tight client-server relationship, but you can definitely ship that into the Cloud and re-engineer pieces of it as you need to. I'm not going to say anything bad about any of those technologies, like they work. If there's a reason those apps persist that long, they're not broken.
The question is, in this current model, if they're starting to struggle, can you repackage it? Or if you're going to re-engineer, go all the way, jump to the modern tools, especially for data on forms. That technology is pretty refined now. >> Okay, what's next? >> Not everybody who's working for a big company with a pile of old apps. If you're living in the consulting land, we've had these conversations with a bunch of hosts, where it's like everybody's about digital transformation. In terms of the opportunity space, it's look for verticals where they haven't taken advantage of Cloud, and mobile, and smartphones. Because there's lots of ways to re-frame that work and often they're struggling with these problems too.
Those are good consulting gigs. They have very direct ROIs. One of the things that pandemic has really drilled us into is get immediate return on investment. Stay productive, and make sure the product you're working on has value.
We've been in a very speculative mode for the past decade coming into the pandemic because we were experimenting with new things. There was lots of growth and that's a very fun time to write software because you can kind of do everything. We're in a more serious period right now known as the pandemic for challenges, but generally there's economic stress and software development work doesn't stop. But make sure that your software development work has good ROI.
So in consulting, often we see small projects shut down because they weren't that important. But good consultants know how to pick projects that will make that company more money than the cost of the project in a quarter or six months. If you can own those ROI numbers, you'll have as much work as you can stand. >> Okay, cool.
>> The AI space is interesting to me because a lot of those projects were pretty speculative and so I did see a wave of folks backing away from AI projects and drilling more on like Cloud transformation projects, digital transformation approaches, but there are very practical AI implements that can have huge benefits for organizations. I think there is some of the biggest opportunities there. Like look at the image processing stuff and that's certainly viable. >> Yeah. That's the canonical sample, right?
You upload pictures and which one's a cat, which one's a dog,. >> But how does that help a business? >> Makes a great demo, but what's the business use case for distinguishing between cats and dogs? >> You're exactly right. The challenge with using image recognition is it's a business process workflow change.
You can do that because there's big returns on that. I often say to someone, how would you use a QR code in your organization? Like how could you help a customer utilize a product better, because if you can't make sense of that, you're not thinking about the image workflows that way that you don't even need to go down recognition, then you haven't thought enough about it yet. >> Right.
>> The classifications and so forth, those are very complicated bits of tech, but you have to rethink the workflows in a big way. Easier returns on the tech side. Take a look at reducing Tier 1 tech support load with a bot.
You can jump into social media now and add support through the Facebooks and the Twitters and things like that with smart bots, and the bot framework is amazing. It's cheap. It uses some Azure on the back-end. You can start with just feeding it a FAQ to answer questions from there and tune it up from there. >> Half the websites that I go to, I show up in the website, I'm looking for something and, "Hey, would you like to chat? Hey, do you want to talk to me?" Yeah. >> Try not to be annoying about it. That would help.
>> Maybe after I find out if you actually have what I'm looking for in the first place, maybe we can then have a conversation, so it can get a little bit overdone, but it can be a very good idea. >> One of the things I've been suggesting to folks a lot and this is, again, not my thought, it was fed to me is take advantage of sentiment analysis first. Look at how people are expressing themselves. You know it's really interesting.
Start to classify tweets and incoming e-mails with a sentiment analyzer. How angry are people. If you want to see how good your bot is running, run sentiment analysis on what people are typing to the bot, because if they're getting progressively angrier, your bot is not helping you. >> Right, and then potentially even think about putting a timer on it. How long does it take people to shut it down from the time it shows up.
If it turns out that 90 percent of the people close it within a second or two, that gives you a hint as to whether or not people are viewing it as useful or just in the way. >> Well, let's start with a test of if it's up there within the first minute of someone being on the site, you're just going to drop them off the site, and you can instrument that. But if they've been there for 10 minutes and they're still just clicking around randomly, maybe you can offer some information. In fact, why not do some analytics on how people are navigating your site first, because maybe the chatbots are crutch for bad navigation in the first place. >> Or potentially anticipate why they're here.
"Oh, you're here because you wanted to check on your order." "Hey Richard, welcome. By the way, your order shipped yesterday."
That's pretty useful. >> How about delighting people with your site, because you can do that. You know where all this tech actually lives especially for the average .NET developer? ML.NET. I think it's one of those libraries that don't get enough love. >> Yeah.
>> Azure Cognitive Services, we've done a few shows on it and it's awesome, and it's API driven. You can program in any language you want. It works great. But if you're happy in .NET and you
may or may not want to use Azure, you want to consume it in different ways, ML.NET gives you-all the choices in the world. Just understand if you don't use Azure on the back-end, you're committing compute resources to doing those analytics. You might want to do it against the Cloud at first and have an option not to but you have that flexibility. But the sample set of ML.NET is astonishing, and they're all things you could put to work in a reasonably short amount of time to show direct value to the organization.
>> Yeah, cool. We've got time for one more. >> You want to do a little future stuff like what's not due today, but things I keep my eyes on going forward? >> Absolutely. >> On my radar all of the time for the past few years is what's going to disrupt the smartphone. Now, when I talk about the smartphone, I'm not talking about any given product, but I'm recognizing that what's actually happened in the past 10 years with the smartphone is that we've generally converted every adult human in this planet into a cyborg.
We've added a digital extension to everyone that allows you to communicate anywhere in the world as long as they don't care how much it costs and to have access to information. Whether good quality or bad quality, separate conversation. >> More importantly, it gives people an opportunity to ignore others and not have to interact. >> Well, there's that. Or to interact with them through the device rather than face-to-face because, pandemic.
But when I watch a farmer in Uganda reference his smartphone to decide when to plant. Like listen, the smartphone's penetrated the whole planet. Now that we have created this digital extension to ourselves with a slab of black glass, the question for a developer keeping your eye out is what replaces it, what comes next, because it's largely been static. Phones were kind of fun in the early 2000s. They had keyboard, slide out, pop up.
Since the iPhone, it's been a slab of black glass. I mean, it gets bigger, it gets smaller. It has two cameras, it has three cameras. Like how many cameras do you need? But fundamentally, it's the same device over and over again. It's been refined and it's spread widely.
Disrupting it is a next-generation device that represents huge opportunities for development. My current leading candidate are the visors. Now, I'm not going to pick HoloLens 2 automatically, although I think it's an extraordinary device. But there are many companies working on something you wear on your face that does everything a smartphone can do and more. We could talk about the social constructs. About is it appropriate to wear things in your face? I would argue, the moment of product is good enough, you don't care what you look like.
Once upon a time, walking around with a phone out was not socially acceptable either. They're not good enough yet, but they're getting there. I'm looking at the industrial implementations that are happening in HoloLens 2 right now and it reminds me of the Blackberry in 1997. Back when Blackberries were very expensive. They were already selling $1,000 phone 10 years before the iPhone was $1,000 phone. They had huge back-end infrastructures behind them.
Only large enterprises could operate them, but the value they offered was so great, enterprises did it. That's kind of where we are with these smart devices right now. Big organizations doing significant implementations because it has large value and it's expensive and it's worth it. Not a consumer product yet. But for those that are immersing themselves in the market, right now, the coding models are hard. It's tricky to work in 3D and it's tricky to do eye-tracking and to really utilize the hardware.
But as that moves into more mainstream, we're going to need a tremendous amount of code. It's a detonation of the user interface. We're fundamentally still doing screens, mice, keyboards, touch. We've unified that.
Initially mobile was on its own, then tablet's came along and made it complicated. Now, we've unified the model for all of those things. But those models don't work once it's a 3D interface on your face for gestures and voice. That's really tricky. I'm looking to what are the skills you hone? What's worth working on so that when that market explodes, you get to write it. I always pay attention to Unity, C# wins again, and it's very simple way of approaching 3D. I think staying current, I do expect.NET to be there just because they're versatile,
can be able to move fast, whether it's Microsoft's hardware or someone else's. Those are our viable skills for that as well. >> You got to imagine at some point the UI will be easier to do. >> Yeah, and somebody's going to sit down and find an interesting UI in that.
But you think about what are power Apps in the 3D world. They'll be a fully abstracted tool for that 80 percent case to simple blocks of work. I can imagine those things happening. But you'll just have to keep an eye on it and be involved one way or the other. It's challenging to get HoloLens projects right now.
There are only a few organization do it and we know a few folks that are working on that sort of stuff. But the opportunity space, in terms of disruptive, that to me is one of the largest single disruptors out there. I could go on, but I think we're out of time. >> Yeah.
We could talk all day. I'd love to have you back and have this conversation again in a little bit. >> Sure. Well, my opinions change as I learn more. >> Thanks so much for coming on. Hope you guys enjoyed that and we will see you next time on Visual Studio Toolbox. [MUSIC]