How'd you like to listen to dot net rocks with no ads? Easy? Become a patron for just five dollars a month. You get access to a private RSS feed where all the shows have no ads. Twenty dollars a month. We'll get you that and a special dot net Rocks patron mug. Sign up now at Patreon dot dot NetRocks dot com. Hey guess what, it's
dot net rocks. I'm Carl Franklin and I'm Richard Campbell here for your dot net edification, as we are every week since two thousand and one, well almost every week two thousand and two, I think it was two thousand Did I say two thousand and one? Yeah, yes, I'm at two thousand and two. How silly of me, and I wasn't even there and I know, right what's wrong here? Okay, So thanks again, and we have some good stuff coming up today. Nick Randolph is here and we're talking
about who Know and other things. And Richard, how are you, my friend? I'm good. I really want you to get into your better know because I have comments on it, so very cool. As I've been working on some home assistant stuff which should not surprise you, knowing me okay, and it relates all right, so let's roll crazy music for better no framework awesome? All right, man, what do you got? I think I
know so not that you don't know. Yeah. So this is from Danny Avila and it's a GitHub repo called libra chat l I, b R E chat And the explanation is enhanced chat GPT clone features, open Ai, GPT for vision bing and THROP, open router, Google, Gemini AI model switching, message search, lang chain, dal E three chat GPT plugins, Open AI functions, secure multi user system presets. It's completely open source for self
hosting, more features and development, film and eleven. So this is the sort of hip thing these days, is to host your own GPT engine in one form another. Although it sounds like it does, does it actually call out all these different services? It looks like it calls out. Yeah, it's sort of like the one place that you can put your prompts through and then it calls out to all these different services with API keys. That's I don't know. I haven't run it, but that's what it looks like to
me. Yeah, it does look like that's what it's doing is doing. You can go to the per call apikes, which I've also done. Yeah, in home and new house, I a sture. We've had this house for years, and I put in some simple things for when it was a rental house, so how to manage it. But now that it's ma place, you know, things are getting a little more sophisticated. And one of
the features that was popular for us is voice control. And the voice control systems were typically done through Google or Amazon, both of which are not that good and seem to be going away like they're both kind of failures. Do you remember when they were awesome? Yeah, you know, and we kind of laughed at them. Oh isn't that funny? You know she thought, I said, you know, mud raker when I sent something, I was yeah, yeah, yeah, totally right like that. That and then and
so ha. Last year in twenty twenty three, had this big open source initiative to do their own voice systems that would be independent of those vendors of the of the big providers, which is a big movement in a change general is to have everything hosted internally, and so folks have already done extensions to
it to access things like open ai'. So yeah, because the local recognizers are only so good, and I could make them better with more compute, Like that's one of the things that's like switch up to higher and hardware. But just to see if it would really make a difference, I set up my open ai a PI account and hooked it in. And the the problem is you're used to saying very simple phrases to h A to do stuff right
now. The fact that you can say I watched you this, this, this, this, and this right and it goes all right, I did this, this, this, this is this dude, It's like it's kind of scary. Yeah, so and once the boss is using it, you know it's going to stay right. So yeah, of course, of course I was just looking at the math and for using I'm using GPT three plus through open a AI a P I cost me about a dollar a month.
It's not bad, pretty easy. I mean, because you're not using it all the time, you're just no, you're using it only when you need to interact, and it just doesn't cost that much, you know, realistically. Yeah, I got used to chat GPT on my phone. I could just pull up with a voice interface. I gotta ask it anything, and it, you know, has this great understanding if you will, and it
does great re sponsors. But then I get used to that, and I say to the one who starts with a something that's a little more complex, and it just goes I'm sorry, yeah, oh yes, right, I'm talking to farr chat device. So so these things are going away, you say, I mean, I kind of knew they would, but I thought I would have thought Amazon would have, you know, said now with GPT or now with open Ai. Yeah, you wonder if they will. Of course, then they have to go to a vendor that you know, supports
someone else. Like now you get to the reality. Let's face it, that product that Amazon made and we're not saying it's name, so we don't make people unhappy. Right. We got in trouble for that once, We've gotten in trouble for that before. Was originally built to sell more stuff on Amazon, right right, I mean they said as much. They basically gave away the hardware for costs because they presume that you would say, hey, you know, get me more laundry soap, that kind of thing, which
largely people didn't do. Didn't do it, and back you know, a couple of three years ago, Amazon basically mane of this is like, we spent billions on this thing, it's not paying for itself. We're going to be cutting back. And the Google devices are even weirder because Google didn't even have that mechanism other than it was just more search information. It was just more corporate spying. Effectively, there was no real incentive for them, and
they said the same thing. It's like, this is not working out for us. We're going to cut it back. Just before you know, within a year or two, then we have this breakthrough with open AI and language fundamentally transforms language interfaces anyway. Now it's a scramble to se who's going to implement what. Meantime, you know, Microsoft's kind of laughing here. All that open a stuff runs on Azure, so it's like, oh, if
you're going to use it, come on down and need some EMPA. So, I mean, it's a crazy time for all of us, There's no two ways about it. But I am finding you know, I find I use get hub copilot a lot and having it added into Aha, Now I'm going to look at can I make it totally inside the house right like it's all especially here or we're battling outages all the time, it's like, will let's function without the Internet? Like can your smart home function without the Internet?
And that's the goal always is to get to that point. Well, at least a smart device, right, a smart a Amazon thing like that you can actually use, would be really good. Anyway, check out librachat. There's the link there. But if Ferry company to just speak at, it's getub dot com slash Danny Dash a vila a v I la slash librachat.
Who's talking to us? Richard Grady comments off the show sixteen eighty nine, which is the last time I think we talked about who knows with Kenzie Whalen, Like there's a while ago who used to be with Uno and we were talking about building apps. So that's back in May of twenty twenty, hence the you know show number and this particular comment from that time. This is from Devin Global, who's a longtime listener as well. Hey Devin,
Hey, and Devinnead is very concrete comment. He says, the promise of cross platform tools is great, build once, run everywhere. Boy, we've been telling ourselves that live for a while. Yeah, that's right, ohly Man, Like you know zamor Informs and now dot net Maui. You get the timing rights back in twenty twenty, allowing smaller teams a much broader reach. There's one kind of expertise that seems to get glossed over, and that's
all of the nuances in the native design language. Sure I can use these tools to make control look native across several platforms. However, it still seems like you need an expert in iOS, Android and Windows UX to show where and how to use those controls in a way the user expects. There's an incredible opportunity for these cross platform tools to help developers quote fall into the pit of success by using the right thing on each platform. Also, it'd be
nice to see cross platform documentation. It helps developers understand things from the perspective of a cross platform developer instead of as a single platform developer, as each vendor seems to assume. A good start is the documentation from the Zamoran team. In many cases, their docks of iosapis is better than the ones that are provided by Apple because they had to reverse engineer a lot of that documentations back the day too. There are credible things on the horizon and I beg
the tool vendors not to let JavaScript win this one. Please please, because when you talk about the original cross platform language, man like that JavaScript has been there a long long time. Yeah, or so for better or worse. I know Nick's got some great comments on this, so we're gonna we'll
do his intro with Devin. Hang in there. We're gonna have some comments for you on this and a copy music Coby is on its way to you, and if you'd like a copy used to Cobey, I write a comment on the website at dot now rocks dot com or on the facebooks you publish every show there, and if you comment there and a real the show,
we'll leend you copy music to Goby. And you can follow us on Twitter or ex or whatever the hell they're calling it today, but you can also follow us on mastadon I'm at Carl Franklin at tech hub dot social, and I'm Rich Campbell at masadon social sent us dute, Okay, let's bring on Nick Randolph. Nick currently runs built to Rome, which focuses on building rich mobile applications. Nick's been identified as a Microsoft MVP and recognition of his work
and expertise with the Microsoft Application platforms. He's still an active contributor in the device application development space via his blog at Nisnettravels dot built to Rome dot Com. Put a link to that on the show page too. Nick has been invited to present at a variety of events, including Techhead and I Night Australia and New Zealand, DDD, NDC, and local user groups. He's also authored multiple books on Visual Studio Windows development and helped judge multiple world finals for
the Imagined Cup. Nick has worked on numerous mobile applications and has helped hundreds of developers build their own mobile applications. Nick has been involved with apps for well known brands such as Domain dot com, dot Au, ninesman AFL, NRL, Quantis, JB, hi Fi, nab Stand, and boost Juice, and is also working on the UNO platform. What is your uh,
what's your role on UNO because it's not in your bio. Yeah, my bio is basically the one that I used to build your OW and so I mean I am working full time for the Owner platform and so as part of that, I wanted the sort of the senior team there, and there's a huge amount of stuff that we're working on to basically accelerate developing on a cross platform, and so I'm across quite a lot of the day to day stuff
there, which is really awesome to see, very cool. So for those who don't know about UNO, or don't remember it or whatever, I can maybe give you the elevator pitch it. It's sort of it's for it's sort of zamorin right and MAUI, but instead of using the zamorin flavor of Zamal, you're actually building your apps to win those Universal platform Is that right?
Well, it used to be. Yeah, so what used to be the Universal or UWP which is now sort of evolved, or you know Microsoft's V two version of it, which is when u I three and the winn app SDK. So yeah, So UNO is quite a lot of things, and the name kind of alludes to that. So the un platform, but definitely you're right, at the heart of it is a cross platform and framework UNO Core that is essentially taking the API set that comes with when you I or
win app STK and making it available across all of the other platforms. And so the goal there is that you know, wherever dot net will run the un platform will run. What's different about this in MAUI is that Maui seems to be backing away from when UI or just like not maybe backing away from it, but the focus isn't on the Windows desktop experience with MAUI, even though it does work, whereas you know that that's what you sort of start
with on the UNER platform, is that right? Yeah? And so again this comes down to the heritage of all of these cross platform tools, is they all come with their own sort of therefore own point of origin. So in the case of dot m MAUI, obviously that came from Zarat forms which came from Zarath, and so their heritage is in the Zaron platforms, and so they've evolved as such an abstraction over those and then they integrated Windows or
UWP and with now it's now based on when you I three. But they've got their own abstraction there and their own direction that they're then taking that to go cross platform. And yet bringing on board Desktop for them has been something that they brought into the fold, whereas the platform team have almost come from
the other direction. We've come from a Windows centric API set and making that available cross platform, and so you know, part of the platform approach is that we have extra things like the toolkit, which allows us to take what is essentially a Windows framework and make it cross platform in the sense of and you alluded to this in the introduction of the reader's comments, is that, you know, if you're building cross platform, when you're building for iOS or
androids, you kind of wanted the app to feel natively at home on there, so you'd expect things like a navigation bar, or you'd expect, you know, the swipe interactions and things like that. And that's where the platform part really comes into it. Isn't there a philosophical point here about do you maybe your app look neative to the device versus make the app consistent across all devices. Yeah? Absolutely, like the Facebook apps kind of the same no
matter whether you're using iOS or Android or anything else. Yeah. So, so if we look back at the sort of the origins of cross platform, particularly in the dot net space and another technologies were similar to this, is that when you know, this framework came about, there was definitely a philosophy
of make it look at home on the device. So for Android it would be material, for Windows it would be fluent for ioscoop Patino, and yet that that kind of philosophy it runs into problems because designers essentially have to design things three times and then you're stuck with what looks like every other app on the platform and not really able to apply your own company's brand very well to
it or in a consistent way. And so what we found is that the sort of the design philosophy has sort of evolved and shipped, and as you said, what you kind of see today is that the brand overreach, the overwrites everything in the sense that you know your brand is more important than necessarily making you look one hundred percent like alioais app. I haven't used, you know, but I have used Maui a lot, and I find that if you go down the Zamal route with Maui, you find you run in pretty
darn quickly to things that aren't consistent across the platforms. And something that works in you know, in Windows desktop or Mac desktop and might even work an Android, doesn't work in iOS and oh it's because you have to wait because they're working on that, right And so I got tired of that. And because I've been doing Blazer since its inception, I use Blazer as my UI
with Maui. So it's kind of like the hybrid approach. Yeah, because as Richard said when he was reading the comment, you know, JavaScript is the original cross platform language, and what is Blazer except the c sharpness of JavaScript and with all the dom which is the real cross platform thing. Right, the browser people have figured out how to make their platform cross platform and consistent. And so I find there's more consistency with Blazer in Maui Native for
mobile apps, right, hybrid apps. Then I don't run into these little problems that just seem to come out of nowhere, and they can really put a dent in your schedule, you know for sure. And the browser wars, you know, it's taken them decades to get to get it to a point where there are less inconsistencies between browsers, between platforms, et cetera. Right, Yeah, emphasis on less, yes, exactly, Yeah, many
less though there are. And and you know, from a Blazer perspective, a lot of that those inconsistencies I had to buy the by the technology, and so the integration and the hybrid approach there is a valid approach. Now, do you get the same level of performance, do you get the same level of device integration. You know, those are all questions that come to
it. Well, I get the same level of device integration, but in performance, all I care about is if it's gonna be good enough, right, Yeah, if the user doesn't care, you know, and yeah, yeah, you're going to be using more memory, so you know, lower memory, lower power devices may have an issue. But anyway, I didn't bring that up to diss you know, it's just that I don't know about it. So is there a sure and is there a hybrid mode for so
so we can support doing web content. So there is an approach to that. And one of the things that we're definitely considering and you know, working with our customers on, is prioritization around that hybrid level of support that for not only Blazer, but other you know, web components, whether it building Angular or React, and they will make sense to integrate into the app platform. And from our perspective, we would definitely like to see a more you
know, an approach that goes beyond just including Blazer. But just to just coming back to the the you know, the the inconsistencies I should say, between different technology and different platforms. One of the philosophies behind the platform is
PicTel perfect everywhere. And so the idea is that when you build your app for one platform or you you know, whether you're being you know, working in the iOS simulator or the Android emulator or on native Windows, once you build it, you should have the same render experience on all of the platforms. And so you know that, and that includes the web and Linux and
stuff. You know that they're is a wealth of different platforms that are available using the UNER platform, and the goal is to make sure that they will render pixel perfect. And that's not notwithstanding the fact that we are still using the underlying technology to render. So what I mean by that is, you know, on on iOS we're using you know, the native widgets on iOS.
On Android, the same on the Web we're using phegmal rendering yep, exactly, And so you do get the native capabilities around you know, interaction around accessibility, so you know, doing things like text to voice. Those are important from the accessibility perspective, and you get all of those because we're using the device components, even though we've made sure that we're getting a pixel perfect rendering between the different platforms. Yeah, and the other side of pixel
perfect rendering is perfect behavior application. I mean that's maybe even more important when I expand you know, a multiple hierarchy tree or less through whatever, is it going to behave the same way on iOS as it does and Android. This is just one thing I'm thinking about from you know, lists of lists within lists and next things have been a real problem in Maui's AMML last year.
Yeah, and you know, performance is one of those things that we keep on coming back to and try to continue to improve and work on because you know that because you've got that obstruction layer, you know, what works on one platform that doesn't necessarily work the same one other platforms. So there is a you know, a continual effort to make sure that we're performing the
best we can or all platforms. And so yeah, I think, kind of calling back to Devon's comment on all of this, I think there's a broader idea of are you building this for internal use versus showing it to the public. I don't know what your customer base looks like, nick Like, because I do think there's a very different attitude to hey, we need to make this work for the company on their mobile devices versus we want the public
to use them. Yeah. Look, absolutely, And what we saw very very early days of sort of mobile apps is that the companies would invest no cycles into anything design related and what they found is the attrition or the usage of those of as apps are very low. So these days, with something like the Inner Platform, you could still rapidly build out an application. And we'll talk a little bit more about the various Upper platform components that help with
that process. But you can very rapidly build out an application that looks really good, it's pixel perfect on every device, and yet is rolled out really quickly for the enterprise. Now that's not to say that you couldn't build a facebookly world style application or quality level you know, including animations and things like that with the Inner Platform. But what we do see is that a lot of enterprises that are coming to the Inner Platform because of that rapid ability to
rapidly roll out applications. And is it for the internal use apps or are they thinking about the public facing apps. It can be for both, definitely, for sure, I'm with you, It's just I would think that requirements are different. Look they are, and for you know, what we refer to as typically consumer facing apps, a lot of those will have fairly heavy graphic kind of requirements on them, so you know, they'll have very intricate
transitions. You know, some of some of the apps like Facebook and Twitter are actually credibly simple from a transitions perspective. But then you can look at some of the more creative shopping based applications and they've got some very sophisticated animations and things like that, And those ones are ones where we will prioritize, you know, the different animations and different flows as they come in from our
customer requirements. But definitely I'm in the you know, for people who or for companies that want to build out an application, even if it's consumer facing, the inner platform is a great choice and a great starting point for them, right, I mean, and you're mostly describing the esthetic elements that consume are going to want a really good looking up but it's worth putting time in it where your employees can live with a mediocre interface as long as it's functional.
Actually, my Firm Media thought was, well, we know that these cross platform frameworks have an overhead, their apps tend to be larger and so forth, but I wonder if the consumer cares at all. Yeah, like who looks at memory usage in an app except a geek. I think only three or four years ago, you know, it's size of app and download speeds and stuff like that was super critical. I think with modern devices particularly and like the you know, the developed world, we don't tend to focus
on those as much. Definitely, if you're targeting you know, areas where there's low coverage and devices will be typically you know, a generational too older, then that can still be a priority. And yeah, there's definitely one area where you know native will win out. So if you build the pure native tools, you'll always be able to get a smaller run time, of smaller footprint, et cetera. Yeah, I would argue when you get down to old bandwidth and so forth, you switch to web like they're not going
to run the client anyway. Possibly, although you know, when you're talking about low bandwidth, you know, if you're going to rural areas, web's not an option because you don't have any local caching and you don't have any you know, off lines, right and well PWA supposedly, but yeah you can. Yeah, it's just none of it's good. All of it's bad. I was going to say Peter w A. But the investment that you've been getting it to work on, Peter wa, you could have built using
the platform and have a full synchronization solution. You just download my code from blazer train. Fair. But I mean, but to your point that when it comes to disconnected scenarios, these frameworks help a lot, and you know specifically, Yeah, and one of the really interesting things about that is that you know, there are other technologies out there, so Flutter and you know,
cross platform frameworks that are out there. And one of the nice things that we've benefit it from being in the Microsoft ecosystem is all of the libraries and technology and all of the open source that goes on in terms of these things like synchronization frameworks, and you know, people have got there's so much invested by Microsoft and third parties into making such a broad ecosystem that we will
benefit from. And so you know, if something's that's built for don Ed eight or seven, you can bring into your UNO platform application just buyer and you get reference and it's just incredible amount of stuff that just works. So yeah, it's an old estradation line. It's like it was easier to make connectivity everywhere than it was to make a good disconnected line that was That was
true twenty years ago and it's true today. Yeah, you know, it's like, yeah, we just meet their you know, starlink more Internet everywhere. I caught it with one of the fellow MVPs probably a couple of weeks ago now, and we were reminiscing about the old Pocket PC e days. And I swear that we are still building this still tackling the same fundamental problems in terms of app development today that we work fifteen sixteen years ago. You
know, it's just incredible. I mean, we have a better user experience and it's easier to use that al to build an incredible you know, user interface, But fundamentally we're still solving the same problems. Well, and it's still the same issue, which is the customer couldn't care less about Crafts platform. It's only us that cares about The customer just wants to work on their
device. Absolutely yes. And this is where the investment into technology such as web assembly is going to be really interesting because and web assimbly not just in the browser, but also if you think about the ability to run a web assembly app in a native in essentially a sandbox on any device. That's kind of like an interesting story because now all of a sudden, you back to
your point about having it web technology that now runs everywhere. If you can make it work in web assembly or any language you could, yeah, exactly, you can now run it on any piece of technology that's able to run you know, a sandbox web assembly, right, it's the universal well then the Nescent Universe, our Soul runtime operating system. Yeah, yeah, will you know where it gets weird? And I've had conversations with Sanderson on this. You know, over a whiskey or two is at the edge, like
on a CDN, I could be running a w A container. So you know, headla, it's not the client, it's not the server, it's in between. Yeah, and you know he's already thought of all these things. Of course he has, and he thought about it years ago, years ago, yeah, ten years ago. Like I'm pretty sure he's actually an alien and he's just come down to help us, you know, but we should probably take a break. Yeah, let's do that. We'll be right
back after these important messages and we're back. It's dot net rocks on Carl Franklin. That's Richard Campbell, Hey, and we're talking to Nick Randolph about the UNO platform, the latest, the greatest, the newest, which I don't think we've talked about all that much yet. Actually, no, no,
no, we've sort of been in philosophy land and over here. So let's talk about We talked about the philosophy around the core, but there's the platform, and you know, one of the motivations behind the name is that, you know, it's all about building you know, just not just the core, but all of the bits that are developer needs, from design all the way through to publishing your app. And so you know, over the last you know, X number of years we've been building not just the core,
but there's things like the toolkit. We've got a raft of extensions that are based on you know, what Microsoft's done with the Microsoft Extensions, but tailor to building an UNO platform. So you know, there's device specific feats and bits in that that we can leverage our extensions. We've got support for sea shup markups, so you're not just restricted to zamble anymore. You can now you know, use a very fluent or structured c sharp markup language to
basically create your apps that's very cool. Yeah, and again that's about breaking down the lane the learning that developers have to go through to actually building apps. Right, you still need to understand, you know, things like what's a tech block and what's a button and stuff like that. Sure you know you're not learning a you know, a language to which was really designed for a tool. Right at the end of the day, nobody likes writing zamle
or XML. I mean, those who are always tool orientedy technologies, even though some of them, like myself, just did get very fluent to be able to write them. But yeah, I mean, we now have incredible sea sharp markup, which which mirrors the capability of z owl and yet it gives us this ability to write the entire app just in C sharp and I mean, I certainly that's appealing to folks. It's like, this is the
language I know and I'm comfortable in. This is what my team knows, like as as little JavaScript as possible, please exactly, And we look, we get that feedback consistently and hence the investment over the last twenty four months around bringing offerings like c sharp mark up to the table. The other the really one development that we've been spending a lot of time on is there is
that gap between where designers finish and where developers pick up. And so we've got a component that actually lives within Figma and allows you to essentially export not just down but also cea sharp markups. So if you want to live in the sea sharp world, you can just explore your design into Seashell markup,
drop it into your app, and off you go. And so that's we see that as quite an important tool in breaking down that barrier between you know, the cognitive loss that gets that happened between designers and where they were thinking about how things should look and stuff like that, and the way you developers tend to put things together, which we've won't be there right well, and I appreciate you bringing up Figma because a couple of years ago it was a
beloved tools like this is the way, and then Adobe showed up and we all kind of held our brows. It's like, well, that's where good software goes to die. And now they're not buying it, Like I feel like we're going to have a Figma renaissance. Because the deal failed, they had to pay they had to pay a billion bucks as a saddle because they couldn't buy it. So, Okay, I don't know what's going to happen to Figma now, but if I was a designer, there's there's a lot
of stuff. I'm partying like, that's such great news. Yeah, there's a lots of having in the people world. They've got, you know, a new dev mode and then again they've they've identified that the one of their markets is this, you know, ability for designers to create this app experience, not just single pages and web pages and stuff like that, the whole app experiences and then be able to pull out the resources and the assets from
that in a way that it's consumable for developers. And you hit only the key point here, which is how many times is a designer finished with a design? Hey, the devs and they're looking to go, well, we're not making that just so detached from the tool set I've got and I think
Thing was aware of the software development of life cycle. Obviously they build their own tool but they're aware of it at a at a general level because they're not just investing in the tools within Figma, they're all working on things like design systems and so essentially what that means is that they're making it so that you can export parts of Figma as assets, so whether those be you know, your color assets, your style assets, your font assets in a way
that can be consumed into things like your cee iPods, right right, So you know that they're aware and they're starting to think along the same lines as developers have beat for years, and so UN is trying to leverage that and recognize that we need to be part of that pipeline. There's definitely that moment between the first designer paths that gets approved and the devs successfully rendering that page. It's almost an interim step, like until we convert their design language into
our design language, you can't really get rolling. You know that I was introduced to Figma just as an assign a couple of years ago, and the customer wanted me to, you know, do the design and Figma and then copy the you know, the the CSS into my project and that was fine. And I don't know if it does this now, but back then there was no responsiveness and that you know, you put a you get some design and all that stuff and I copy it and you know, it's static,
it doesn't move with the page. Which seemed to me like really stupid. I don't know if that feature is there now, but you know, it's the little details like that to drive you nuts. Yeah, so I think Thigma has definitely come a long way on that, and definitely a lot of their components and I'm definitely no wizard here, but definitely their components now understand
a little bit of responsive side. It's not to the extent of knowing between like portrait and landscape, but they know how things like should expand and things like that. So you know, yeah, that's good. It was a couple of years ago, and I'm certainly no expert in CSS. Well. Yeah, and responsive design is hard at the best of times, much less cross platform responsive design, absolutely, yeah, and you know that that is one of the common problems that surfaces all the time, and will continue to
invest in better controls and better widgets to help developers deal with that. And you know, we see various break points, particularly on desktop or web, where you go from a sort of a more portrain oriented, you know, layout where you might have a pit in to the left and you want to kind of looking like a list, and then when you navigate it should show you the details almost on a new page versus a more landscape or desktop experience
where you typically have them side by side, and you know, they should all work within an app and it should be consistent, and then things like deep linking should work so that you could navigate to it on the web. So you know, it poses very interesting challenges and you know, those are the types of things where you know, our investment into extensions allows for things like deep linking and for resolvable addresses and stuff like that comes into the play
in toolkit. We have things like responsive views and stuff like that that will help one, you know, deal with having different visual states essentially for that sort of portrayed look and the landscape look. And this gets back to that mapping stage. Just like now I pick up the Uno toolkit, I've got the output from Figma, and I'm trying to figure out how to map it under the toolkit to say, well, this is what they wanted in Figma. When it scales, how do we make sure that Uno does that for
it? Yeah, and that's where the Figma plugin comes in. Okay,
And so you know that plugin that sits within Figma. One of the really cool things about it is that there's actually a rendering that actually happens within the plug in and that's actually running the web or then't version of UNO, so it actually shows you what it's going to look like with your like basically takes your design, converts it to Zammle behind the scenes, runs it so that it actually shows you what it's going to look like and how it's going to
behave when you click in the textbox and stuff like that. So it's pretty incredible that the plugin is capable of. And then of course you can then take that and actually drop it into your running app, like you go to the Zamble file, drop it in whilst your apps running, and really will actually show it and your running app. Nice. So it's all the wonders of the Microsoft ecosystem. Hot real load of somebody that came out of Microsoft.
That the UNER platform is basically built part of makes world. Yeah, and live debugging too, right, like is all part of that effect. So I could be tweaking this. I mean, I'm hoping the plug is perfect, but I imagine I have to do some stuff and then look across
the different platform renders too, like fire up the woll the stimulators. Yeah, correct, and you know there, We don't claim that there's never any discrepancies between different platforms, So there's always a need to run it up on each platform, the planet ship being verifying that it's going to that it is looking and behaving exactly how you want it, because yure scaling may work differently on different with that one the break points between say portraited and landscape may not
be the same, or you may want to tweak it based on feedback from different platforms. So definitely consistencies there. One of the interesting things that we added to the Wizard and so I'll talk about that in a second, but we added the ability for it to generate your CI pipeline. And so one of the things we consistency see from developers them struggling at the other end of the build process is that, Hey, I've got my app that I've spent time building. How do I ship it? How do I make sure that
you know when I'm making changes to it, I don't break it? How do I run tests and unit uy tests and things like that. So out of the Blox, we give you the ability to have a you know, a CI pipeline that's set up to at least build your application, so you're already in a winning state there the wizard itself. One of the things we had trouble with with the whole platform is that we have all of these different bits and pieces. Unless you've spent time reading through the documentation, you wouldn't
know existed. You know, there was a very good template that I'll add you to get started with an Uto app, but it kind of left everything else to you. And so one of the things we invested in, you know, in the last twelve months that is a wizard that brings in a good proportion of the capability of the whole platform. And so you know, there's ten or eleven screens that you can go through and customize everything from.
You know what target platforms you want to use all the way through to do I want authentication and if so, do I want to write it myself with custom worth or do I want to use m cell and so, And the CI pipelines are there as well, so you can pick between it asure and get other actions as your pipeline of choice. I'm sure there's others that people
want those then will consider adding those as well. But the idea is that when you file a new project, you get a good percentage of the way you want with all of the you know, most of the almost best practice or guidance that we can do to get you into that winning state. So all you do is push it up to your repository and at least you'll have
a positive experience with a build that you know works. Because people's integration pipelines are pretty personal too, right, so I guess it's very challenge to have if you're going to generate part of that pipeline, is it match with the way we're doing things? Yeah? Sure, And look right now, what the Wizard generates is very much a starting point, so we make sure that
you're set up to do a build of the whole solution. We are working on extensions there that will help you run the at least the tests and the UI tests because those are actually quite difficult to particularly the UI test to get running in a CI pipeline. And then the additional parts that well, you know, considering down the line, is that the support for things like app Center and actually pushing to the store, because those are again where where a
lot of developers really struggle. Sure, yeah, so just giving them a template to go get get downe the right path is great. I mean I appreciate that you're doing this devop stuff for your platform so that we have a good experience with your platform. But if you can make us better elsewhere, Nick, I'm all over that because Australia. The nice thing and you should work mostly is that because we're all the dot ecosystem, A lot of that
stuff so dot net built. You know, you can point that at an app, but you could also point it at an other technology after it should build, and so a lot of those stages like pointing to the store or pointing to app Center and things like that, those are work for other dot net based applications as well. It's excellent. We haven't talked much about app Center because it's just one of those things you should use. I mean, this is like the remnants of the old Hockey app plus a bunch of other
Azure stuff. Yeah, and it's one of those things that Microsoft acquiet and brought together and actually started elevating. And I've always viewed it as I had some really winning features. So the simplification of the bill process and encouraging developers to actually have that kind of approach to the build and test the ability to run UI tests and device tests and stuff like that was really cool, and the deployment side of things for testing was one of the killer features of app
Center. And so yeah, definitely, we're highly encouraged developers to push the app Center to provide that distribution. But it's not to say that you can't do it without app Center. So you can push to you know, the you know, the Android Beta store and the iOS using the essentially test flight to actually push out the d Bible pre built versions. But app Center definitely made those problems easier to deal with. Well, I mean you mean testl
like for ioas are you meaning testlate for iOS? Test flight? Yeah? Yeah, what's the Android equivalent? I can't remember. Well, they have a beta version of their store, so you basically submit to the store and then you market it as beta and it allows you to do that kind of same process. Oh your Android does Yeah, Okay, so you're talking about test flight, which is Apple's way to do beta deploys. Yeah, and so you know, each of the stores, so Apple will have a way
of doing essentially beta deploys. The Android store has away, and the Microsoft Store actually has a mechanism for doing that as well, so flighting essentially pre released versions of their apps, So all all of the platforms have that, and obviously in the web you can point to a staging environment and you know lock it down, et cetera. So it's definitely a good mechanism to follow through with you apps as they go into that sort of pre release of testing
phase is to make them available for a select group of audience. And you know, internally in we actually make use of those processes to make sure that
we have you know, canary builds available for our internal testing. And just touching on that, one of the things that we do try to encourage for all of our customers is so logo this thing that we talk about it is being canary builds, and what we mean by that is basically taking your existing app that you're currently working on and testing forcibly, updating it to all of the latest versions of the of all your packages, because this are something that
developers typically don't do frequently enough, and then running it through your CI pipeline to make sure it builds, it runs all your tests, and it hasn't broken anything. The advantage there is that as soon as one of your dependencies upgrades to a new version, you're going to be aware that it's now breaking something and that you will not necessarily have to fix it right now, but
you'll know that you need to address it in the upcoming versions. Because what we typically see time and time again, and this is true for Core itself, is that developers don't upgraad because something has broken, and then they end up three versions behind, and now you're really in trouble. Yeah, and you know we've stopped shipping updates to that version, so you know you really
need to update. And now it's a really painful process. And so by encouraging developers to have canary builders that they might run once a day or once a week to see what packages have changed, it gives them early warning as to when things will be when they need to modify their code. Yeah, you only have to miss a couple of sprints, you know, well you try, Well, we'll fix that later. Let's go finish these other features, and then it misses around or two, and now it's a year.
I mean, I think we're incredibly lucky that, you know, the upgrade cycle from you know, NET sixth and at seventh and at eight hasn't typically
required significant rework. In fact, the only work that you typically see is things like the analyzers improve and they're now throw more warnings because the code analysis is better, and they can say, okay, well you're going to get performance gained if you do this over this, And so typically what you're going to have to do is go through and address those and a lot of our projects we typically have them, you know, warning setters error, so that
we're forced to go and fix them. Yeah, and that's great right up until you do get one of the updates and now there's a thousand fricking warnings. Yeah, but you know, warnings could just be warnings. Yeah. Luckily a lot of those ones that generate a thousand warnings are very consistent,
Yeah, like their search and replaceable. Yeah, and quite often we'll point to you an era of your code where you may be able to do a global refactor beyond what they're talking so you know, you might have missed the fact that you're reusing the same bit of code three times or something. So yeah, yeah, I mean, I'm with you, it's just I also needed to ship features, right, Like, there's just this that's the constant battle between he there's a better way to do this versus Yeah, but they
really need this thing out this month. Yeah, And look that's why canaris are great because they give you that really early warning you can start to factor any rework and get them on the board. Yeah, exactly, And so it doesn't become this, Hey we've got to dedicate three sprints to just catching up. Yeah, I'd rather than get behind on it. What is the testing approach for you know, you hinted at it in the papeline. Yeah, So so we do a couple of different testing and some of these come
from our guidance around what we do internally, so where possible. For a lot of your business logic, unit tests are still the way to go. So you know, if you have services that make calls and you have view models and stuff like that, we can you still want to be running unit test to verify you know, the logic of your application is sound. But you know where most of the testing and mobile apps goes is in the UI side of things and making sure that the flow works and so that for that
we have we do have UI tests. So essentially this is running the app, stepping through various parts of the app and verifying conditions so it may be verifying that snapshop one page the next hasn't changed, but one iteration of the built and one next that hasn't changed. Are you using verify same in craps tool. We don't use it internally. I would recommend using it. It's an absolutely awesome tool. And so you know again, you know, doing
comparison for screenshots and stuff like that is absolutely fantastic. I know, we we had the good forces you to talk to same crap and you were an instant believer, Carl as I recall, like you've used it ever since. Oh yeah, yeah, yeah, very cool stuff. Yeah that sign crops out and developed some amazing tools over the time and verifies one of them. He's one of you. Yeah. Well, and that's I mean, and I brought that whole line of thinking up, Nick, because testing uys is
hard. It's just you know, I love a unit test. That's because I have a clear input and output it if they don't match, say something especially native uy, right, because you're generally comparing pixels sometimes, aren't you.
Yeah. Well, if you've ever taken it, stopped in and taken a look at the platform pipeline, it takes about four hours to run because you know, we're running UY tests and that's doing a lot of stuff in parallel, like we run UY test on the Highways Android where you know the works for the court framework and that, and that gives us a lot of confidence where we ship new versions. Yeah, that the core is very well tested. That's great. It's good to know well and and it speaks to
you. You know, I'm realizing, like we've been talking about UNO for five six years now, Like there's a reason you guys are still out there. You've been you've transformed a couple of times. You know, once upon a time you were the WUP guys, but that's all changed and you had that w A hook the early days before it was cool, that's right. Yeah. So the u WP things interesting because even today, if you're going to build an u WP app and you want to take a cross platform you
can still use the tool set to do that. We still fully support you WP. And you might think, well, why would you do that if you're supporting you know when you I The reason being is that there are still some platforms, name the Xbox where you have to build WP and so you know those scenarios are still out there. We still have customers who and people out there with UWP apps that want to take the cross platform or want to
take parts of their app cross platform. Sure, and it may have some and they're looking at or I rewrite, right, It's like given that choice, it's like we committed UWP back in the day. We've got this stuff, we have these we're concerned about what Microsoft's do with YOUWP or not doing, as the case may be. Uh and and want to go to the
cross plat port and you guys can pick a lot of that up. Yeah, just to be clear, when you're talking about Xbox apps, you're really talking about like, you know, forms apps if you will, on Xbox, not games, not graphics correct. Yeah. Yeah, And you know there was a time when Microsoft wanted Xbox to be center of the living room and so you know they did do a very big push for you know,
app developers to come on board, and UWP was that platform. I mean, there there was a great vision about UWP being you know, this capability of running everywhere, and some of that still exists today. There's some hints that they're going to make another stab at it too, you know, like XN a version the just just a sense that the team is reorganizing, like there's there seems to be something going on there that we're living on. You know. I spent some time over on the Windows Weekly side too, and
this has been a recurring threat. It's like there's something going on over you. I wonder if that'll trickle over to hollow Lands. Yeah. So the interesting thing is if you we've been watching the whin UI, the winn app SDK team over the last couple of years, it feels like they really haven't
been moving very fast. No, but they're doing a lot of investment, which is actually one of the very first times we've seen this with one of their UI frameworks internally to use it for first party apps, so things like file Explorer, you know, probably one of the most used apps on Windows
right. New version of that's being done in winn app is DK. Yeah, and that's smart, right, Like we like it when Microsoft eats the dog food a you know, it'll never go away, Yeah, exactly, and b it they beat their own teams up, Like WPF was pretty much unusable until the studio team used it, yeah, back in twenty ten. Like the difference between WP two and WP four because numbers are hard. Was the studio team, and it implemented inside of studio. It had problems,
but they'd also kick the snart. Yeah yeah, I remember those days, how fondly. Just interesting on that. One of the other sort of areas where we see customers coming to the platform are from you know, companies that have invested in WPF and so one of the really neat things that you can do with there is to start building new components with the UNO on your existing WPF app. So we have the ability to integrate with an existing app, run the UNO parts, and that gives you the ability to take parts of
your app cross platform. And you know, obviously probably wouldn't be necessarily too much on the desktop, but makes a lot of sense for iOS and androids to take part of your app cross platform. So for example, maybe a new data capture part. You can really use all of your business logic that you already have, all of your service calls, all of that stuff, build the parts that you need for your mobile data capture part in UNO, and all of a sudden you haven't had to rebuild your app, just so
you can take a cross platform. Right, So you've got a WPF app and at one point you were kind of looking at Zamma informs and like, is this gonna work for me? Then now it's become Maui, and you're still wonder if it's going to work for you. And we're not even gonna say so. We're like, oh down ha, yes, we all we
all love that. But they I mean, but what I hear you describing is essentially saying, hey, I can add into this a couple of Uno components and we have this piece of this larger w p F app that now runs on iOS and Android. Yeah. Absolutely, what is the mac os story for Uno? So the mac Os is mac Catalyst, so basically the the the the mac Light kind of work version. It's kind of like that that sort of the technology that came from iOS land went through iPad and came
over on Catalyst. But you know, for for the vast majority of apps, that is a great technology to use. Do we have access to native platform tools there it is more of a sandbox device than what you get with the mac os app. So same as MAUI, basically correct, and and a lot of this is driven by the fact that the Microsoft support for mac Os as a you know, as a as an alternative to mac Catalyst has not had the same amount of attention that the mac caitalyists got courtesy of their
being driven by the Maui team. So yeah, so you know that that's kind of where we are in that sort of Microsoft ecosystem running on mac scenario. Yeah. I don't think there's a whole lot of Mac os desktop development going on except for like your you know, your adobees and your music and video editing and all that stuff, and that's all pretty neative. It's not
very needative and very close to the metal. Yeah, but but there's there's definitely an opportunity there, particularly, I mean if you if you do have a lot of customers in the iOS space Catalysts and being able to have that same level of information available on the on the Mac Sense and the and the ability to that you basically get it for free with like in the sense of
you know you're building for all these other platforms. You know you've got desktop support through Windows, it's going to look very similar on Mac os through Catalyst. Yeah, Yeah, exactly, awesome, very cool. So neck, what's next for you? What's in your inbox? So the big news is that we'll continue to invest in that, in that sort of ecosystem, so life like beginning to end of the developer life cycles, so continue to invest
in the Wizard. We're likely to see some some updates to improve productivity in terms of developers and the areas that developers really struggle with in terms of building and deploying apps, and that cycle will continue to go this year. And that that is hansol of what the platform is about, you know, And that's not to say that we're continue to not continue to invest in the core. There is part of the team that's devoted to that, so you know,
performance is still front of mind. There's still a lot of updates that are to come across for various platform pieces. There there's there's there are new controls that are on the horizon for things like toolkit and extensions. But definitely that life cycle that's beginning design ending with an app that's produced out of our platpline into the stores. Trying to improve the productivity for end to end for developers is where the team's going for this. And I love your green Field
story, but I'm starting to love your brown Field story. I got an app and I can add you know, in part way through like thank you, because that's real life. And look, we recognize that as well. And look, the reality is that just one little extra bit here is the reality is that you know, not every control manufacturer or vendor is actually building
controls for the Bunau platform. And so what we can do with the Maui embedding that we've got is the ability to take controls from sinfusion from Tellery and bring them on to an application. Now, obviously those will only be supported on the platforms that they support. For Mali, so they choose to support all of the Marie platforms. I always adroid Catalyst windows. Then you'll get
those on, you know, by embedding those within the inner platform. So yeah, we totally recognize that that brownfield story where things aren't as neat and tidy as we'd expect them to be. It's totally every piece of software I've ever built. That's fine. Yeah, yeah, And just to be perfect clear, there's an open source project with paid supportive ill that is exactly right, yep. So it's one hundred percent open source and there is this paid
enterprise support available. That's how you guys stay alive. Absolutely, it pays the bills. Now I want people to know, right, it's like, hey, you can take this other's been I like your free support, it's good, but if you're going to commit your business to this, buy some support so that you get priority and so you keep a platform you care about a live Yeah. And look if you if you monitor the GitHub repolagers and there's a few of them, you'll see that virtually all of them have an
active contributor from the inner platform team. Yes. I also like that you drive your paid support through issues in GitHub too, so that everybody and if it's from it, Yeah, absolutely exactly, it's really I mean, you know, there's a subtext of their algoing conversation for us to dynam Rocks about how we make sustainable open source, and you guys are on my list of
people doing it right, like showing a model that works. Yeah. Look, it's just sustainable open source is a challenge and there's no one model that's going to fit everyone. I think that there was there was a view that things like you know, sponsorship and things like that might be an answer, but I think that people are walking away from that because you know, the reality is that the people who who should be paying, which typically the companies
are not the ones who are typically fronting the money and offers. There's developers who recognize the hard work that you know, so many contributors put in that are contributing you know, a dollar here or ten dollars there, you know, in supporting. Yeah, that's that cancer staining company now, and I want to fix that first part that I could. I agree with you is not happening. But I also preciate that there are business models out there that
work, that have their challenges. I just mean, you know, I wish we could be better, but we'll all try and do the right thing. The schew Nick, it's been a pleasure talking to you and keeping us up to date on UNO and what you've been doing. Thanks, thanks, thanks for having me on. It's been fantastic. Bet. All right,
we'll talk to you next time. I'm dot net rox. Dot net Rocks is brought to you by Franklin's Net and produced by Pop Studios, a full service audio, video and post production facility located physically in New London, Connecticut, and of course in the cloud online at pwop dot com. Visit our website at d O T N E t R o c ks dot com for RSS feeds, downloads, mobile apps, comments, and access to the full archives going back to show number one, recorded in September two thousand and two.
And make sure you check out our sponsors. They keep us in business. Now go write some code, See you next time you got JAD middle vans
