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